ValueError: ['PATH'] when trying to install

I'm trying to install rtmidi2 on winxp Python3.4 but get this error.  If I try pip3 install rtmidi2 I also get the same error but also a note about the compile failing with code 1. Googling makes me think that there is something wrong with the way setuptools is used that sometimes causes this problem.

Can you post the complete traceback?

How's this?
C:\Documents and Settings\Alphonso>pip3 install rtmidi2
Collecting rtmidi2
Using cached rtmidi2-0.7.0.tar.gz
Installing collected packages: rtmidi2
Running setup.py install for rtmidi2 ... error
Complete output from command c:\python34\python.exe -u -c "import setuptools
, tokenize;file='C:\DOCUME~1\Alphonso\LOCALS~1\Temp\pip-build-mfm07bxq\r
tmidi2\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().repl
ace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --rec
ord C:\DOCUME~1\Alphponso\LOCALS~1\Temp\pip-9e13vqmf-record\install-record.txt --si
ngle-version-externally-managed --compile:
version: 0.7.0
running install
running build
running build_ext
cythoning rtmidi2.pyx to rtmidi2.cpp
building 'rtmidi2' extension
Traceback (most recent call last):
File "", line 1, in
File "C:\DOCUME~1\Alphonso\LOCALS~1\Temp\pip-build-mfm07bxq\rtmidi2\setup.py
", line 65, in
'Topic :: Software Development :: Libraries :: Python Modules'
File "c:\python34\lib\distutils\core.py", line 148, in setup
dist.run_commands()
File "c:\python34\lib\distutils\dist.py", line 955, in run_commands
self.run_command(cmd)
File "c:\python34\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "c:\python34\lib\site-packages\setuptools\command\install.py", line 6
1, in run
return orig.install.run(self)
File "c:\python34\lib\distutils\command\install.py", line 539, in run
self.run_command('build')
File "c:\python34\lib\distutils\cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "c:\python34\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "c:\python34\lib\distutils\command\build.py", line 126, in run
self.run_command(cmd_name)
File "c:\python34\lib\distutils\cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "c:\python34\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "c:\python34\lib\site-packages\Cython\Distutils\old_build_ext.py", li
ne 185, in run
build_ext.build_ext.run(self)
File "c:\python34\lib\distutils\command\build_ext.py", line 339, in run
self.build_extensions()
File "c:\python34\lib\site-packages\Cython\Distutils\old_build_ext.py", li
ne 193, in build_extensions
self.build_extension(ext)
File "c:\python34\lib\distutils\command\build_ext.py", line 503, in build
extension
depends=ext.depends)
File "c:\python34\lib\distutils\msvc9compiler.py", line 460, in compile
self.initialize()
File "c:\python34\lib\distutils\msvc9compiler.py", line 371, in initialize
    vc_env = query_vcvarsall(VERSION, plat_spec)
  File "c:\python34\lib\site-packages\setuptools\msvc9_support.py", line 52,

in query_vcvarsall
return unpatched['query_vcvarsall'](version, *args, **kwargs)
File "c:\python34\lib\distutils\msvc9compiler.py", line 287, in query_vcva
rsall
raise ValueError(str(list(result.keys())))
ValueError: ['path']
----------------------------------------

Command "c:\python34\python.exe -u -c "import setuptools, tokenize;file='C:
\DOCUME~1\Alphonso\LOCALS~1\Temp\pip-build-mfm07bxq\rtmidi2\setup.py';f=geta
ttr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.clos
e();exec(compile(code, file, 'exec'))" install --record C:\DOCUME~1\Alphonso\L
OCALS~1\Temp\pip-9e13vqmf-record\install-record.txt --single-version-externally-
managed --compile" failed with error code 1 in C:\DOCUME~1\Alphonso\LOCALS~1\Temp
pip-build-mfm07bxq\rtmidi2\

You don't seem to have a compiler installed. rtmidi2 is a python wrapper
around a C++ library for crossplatform midi. You need a compiler to
install it.
On 01.03.2017 01:45, chmedly wrote:

How's this?
C:\Documents and Settings\Alphonso>pip3 install rtmidi2
Collecting rtmidi2
Using cached rtmidi2-0.7.0.tar.gz
Installing collected packages: rtmidi2
Running setup.py install for rtmidi2 ... error
Complete output from command c:\python34\python.exe -u -c "import
setuptools
, tokenize;file='C:\DOCUME1\Alphonso\LOCALS1\Temp\pip-build-mfm07bxq\r
tmidi2\setup.py';f=getattr(tokenize, 'open',
open)(file);code=f.read().repl
ace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))"
install --rec
ord
C:\DOCUME1\Alphponso\LOCALS1\Temp\pip-9e13vqmf-record\install-record.txt
--si
ngle-version-externally-managed --compile:
version: 0.7.0
running install
running build
running build_ext
cythoning rtmidi2.pyx to rtmidi2.cpp
building 'rtmidi2' extension
Traceback (most recent call last):
File "", line 1, in
File "C:\DOCUME1\Alphonso\LOCALS1\Temp\pip-build-mfm07bxq\rtmidi2\setup.py
", line 65, in
'Topic :: Software Development :: Libraries :: Python Modules'
File "c:\python34\lib\distutils\core.py", line 148, in setup
dist.run_commands()
File "c:\python34\lib\distutils\dist.py", line 955, in run_commands
self.run_command(cmd)
File "c:\python34\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "c:\python34\lib\site-packages\setuptools\command\install.py", line 6
1, in run
return orig.install.run(self)
File "c:\python34\lib\distutils\command\install.py", line 539, in run
self.run_command('build')
File "c:\python34\lib\distutils\cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "c:\python34\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "c:\python34\lib\distutils\command\build.py", line 126, in run
self.run_command(cmd_name)
File "c:\python34\lib\distutils\cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "c:\python34\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "c:\python34\lib\site-packages\Cython\Distutils\old_build_ext.py", li
ne 185, in run
/build_ext.build_ext.run(self)
File "c:\python34\lib\distutils\command\build_ext.py", line 339, in run
self.build_extensions()
File "c:\python34\lib\site-packages\Cython\Distutils\old_build_ext.py", li
ne 193, in build_extensions
self.build_extension(ext)
File "c:\python34\lib\distutils\command\build_ext.py", line 503, in build/
extension
depends=ext.depends)
File "c:\python34\lib\distutils\msvc9compiler.py", line 460, in compile
self.initialize()
File "c:\python34\lib\distutils\msvc9compiler.py", line 371, in initialize
|vc_env = query_vcvarsall(VERSION, plat_spec) File
"c:\python34\lib\site-packages\setuptools\msvc9_support.py", line 52, |
in query_vcvarsall
return unpatched['query_vcvarsall'](version, *args, **kwargs)
File "c:\python34\lib\distutils\msvc9compiler.py", line 287, in query_vcva
rsall
raise ValueError(str(list(result.keys())))
ValueError: ['path']
|---------------------------------------- |
Command "c:\python34\python.exe -u -c "import setuptools,
tokenize;file='C:
\DOCUME1\Alphonso\LOCALS1\Temp\pip-build-mfm07bxq\rtmidi2\setup.py';f=geta
ttr(tokenize, 'open', open)(file);code=f.read().replace('\r\n',
'\n');f.clos
e();exec(compile(code, file, 'exec'))" install --record
C:\DOCUME1\Alphonso\L
OCALS1\Temp\pip-9e13vqmf-record\install-record.txt
--single-version-externally-
managed --compile" failed with error code 1 in
C:\DOCUME1\Alphonso\LOCALS1\Temp
pip-build-mfm07bxq\rtmidi2\
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/gesellkammer/rtmidi2/issues/6#issuecomment-283208779,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAE9tGKV6Sjg0M3PTSoWUIWYWIxdGQK6ks5rhL-sgaJpZM4MMQYF.

hmm.  I followed the steps here for 'C++ 10.0.0 standalone'. https://wiki.python.org/moin/WindowsCompilers#Microsoft_Visual_C.2B-.2B-_10.0_standalone:Windows_SDK_7.1.28x86.2C_x64.2C_ia64.29
As far as I can tell, everything is installed.  Any clues what I'm missing?

So, I took a look at things and decided to update setuptools.  After that I get this...
C:\Documents and Settings\Alphonso>pip install Cython
Requirement already satisfied: Cython in c:\python34\lib\site-packages
C:\Documents and Settings\Alphonso>pip3 install rtmidi2
Collecting rtmidi2
Using cached rtmidi2-0.7.0.tar.gz
Installing collected packages: rtmidi2
Running setup.py install for rtmidi2 ... error
Complete output from command c:\python34\python.exe -u -c "import setuptools
, tokenize;file='C:\DOCUME~1\Alphonso\LOCALS~1\Temp\pip-build-i4w9spzk\r
tmidi2\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().repl
ace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --rec
ord C:\DOCUME~1\Alphonso\LOCALS~1\Temp\pip-9c7io227-record\install-record.txt --si
ngle-version-externally-managed --compile:
version: 0.7.0
running install
running build
running build_ext
cythoning rtmidi2.pyx to rtmidi2.cpp
building 'rtmidi2' extension
creating build
creating build\temp.win32-3.4
creating build\temp.win32-3.4\Release
creating build\temp.win32-3.4\Release\RtMidi
c:\Program Files\Microsoft Visual Studio 10.0\VC\Bin\cl.exe /c /nologo /Ox /
MD /W3 /GS- /DNDEBUG -D__WINDOWS_MM__ -Ic:\python34\include -Ic:\python34\includ
e /Tprtmidi2.cpp /Fobuild\temp.win32-3.4\Release\rtmidi2.obj
rtmidi2.cpp
c:\Program Files\Microsoft Visual Studio 10.0\VC\Include\xlocale(323) : warn
ing C4530: C++ exception handler used, but unwind semantics are not enabled. Spe
cify /EHsc
c:\Program Files\Microsoft Visual Studio 10.0\VC\Include\intrin.h(26) : fata
l error C1083: Cannot open include file: 'ammintrin.h': No such file or director
y
error: command 'c:\Program Files\Microsoft Visual Studio 10.0\VC\Bin\cl
.exe' failed with exit status 2
----------------------------------------

Command "c:\python34\python.exe -u -c "import setuptools, tokenize;file='C:
\DOCUME~1\Alphonso\LOCALS~1\Temp\pip-build-i4w9spzk\rtmidi2\setup.py';f=geta
ttr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.clos
e();exec(compile(code, file, 'exec'))" install --record C:\DOCUME~1\Alphonso\L
OCALS~1\Temp\pip-9c7io227-record\install-record.txt --single-version-externally-
managed --compile" failed with error code 1 in C:\DOCUME~1\Alphonso\LOCALS~1\Temp
pip-build-i4w9spzk\rtmidi2\

These errors are not related to rtmidi2. You don't seem to really know
what you are doing, mixing python 2 and python 3. Maybe this is not the
software you are looking for.
On 01.03.2017 06:08, chmedly wrote:

So, I took a look at things and decided to update setuptools. After
that I get this...
C:\Documents and Settings\Alphonso>pip install Cython
Requirement already satisfied: Cython in c:\python34\lib\site-packages
C:\Documents and Settings\Alphonso>pip3 install rtmidi2
Collecting rtmidi2
Using cached rtmidi2-0.7.0.tar.gz
Installing collected packages: rtmidi2
Running setup.py install for rtmidi2 ... error
Complete output from command c:\python34\python.exe -u -c "import
setuptools
, tokenize;file='C:\DOCUME1\Alphonso\LOCALS1\Temp\pip-build-i4w9spzk\r
tmidi2\setup.py';f=getattr(tokenize, 'open',
open)(file);code=f.read().repl
ace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))"
install --rec
ord
C:\DOCUME1\Alphonso\LOCALS1\Temp\pip-9c7io227-record\install-record.txt
--si
ngle-version-externally-managed --compile:
version: 0.7.0
running install
running build
running build_ext
cythoning rtmidi2.pyx to rtmidi2.cpp
building 'rtmidi2' extension
creating build
creating build\temp.win32-3.4
creating build\temp.win32-3.4\Release
creating build\temp.win32-3.4\Release\RtMidi
c:\Program Files\Microsoft Visual Studio 10.0\VC\Bin\cl.exe /c /nologo
/Ox /
MD /W3 /GS- /DNDEBUG -D__WINDOWS_MM__ -Ic:\python34\include
-Ic:\python34\includ
e /Tprtmidi2.cpp /Fobuild\temp.win32-3.4\Release\rtmidi2.obj
rtmidi2.cpp
c:\Program Files\Microsoft Visual Studio 10.0\VC\Include\xlocale(323)
: warn
ing C4530: C++ exception handler used, but unwind semantics are not
enabled. Spe
cify /EHsc
c:\Program Files\Microsoft Visual Studio 10.0\VC\Include\intrin.h(26)
: fata
l error C1083: Cannot open include file: 'ammintrin.h': No such file
or director
y
error: command 'c:\Program Files\Microsoft Visual Studio 10.0\VC\Bin\cl
.exe' failed with exit status 2
|---------------------------------------- |
Command "c:\python34\python.exe -u -c "import setuptools,
tokenize;file='C:
\DOCUME1\Alphonso\LOCALS1\Temp\pip-build-i4w9spzk\rtmidi2\setup.py';f=geta
ttr(tokenize, 'open', open)(file);code=f.read().replace('\r\n',
'\n');f.clos
e();exec(compile(code, file, 'exec'))" install --record
C:\DOCUME1\Alphonso\L
OCALS1\Temp\pip-9c7io227-record\install-record.txt
--single-version-externally-
managed --compile" failed with error code 1 in
C:\DOCUME1\Alphonso\LOCALS1\Temp
pip-build-i4w9spzk\rtmidi2\
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/gesellkammer/rtmidi2/issues/6#issuecomment-283246324,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAE9tGN7ls8S-hhf4fpIMCLsZc2pvSzGks5rhP1qgaJpZM4MMQYF.

Technical comment:
It looks like you are correct. This is a Microsoft problem and not an rtmidi2 problem.  https://connect.microsoft.com/VisualStudio/feedback/details/660584/windows-update-kb2455033-breaks-build-with-missing-ammintrin-h
The SP1 update to the compiler causes an issue with 'ammintrin.h'
And because this largely only affects WinXP, which is deprecated they don't intend to fix it.
Personal comment:
You may also be right that I don't know what I'm doing but I DO have rtmidi2 installed and working correctly on Win10 as well as MacOS running the latest pieces (ie python 3.6).  I posted this 'issue' thinking that either:
A)  You (and others) would appreciate knowing that there was a compatibility issue with the installer; if there was one.       -or
B)  You would immediately know where my problem was and save me re-creating the wheel sorting out the installer issue.
It appears that it's neither (or maybe a little of both?).  But I do think this is a likely issue that someone would encounter when trying to install rtmidi2 on python 3.4 on winXP.  My efforts down this path have been about testing my Python app on XP to see if it's a viable [option] platform for it.  I appreciate your work on rtmidi2 and hope I haven't wasted anyone's time.  And I hope this might be helpful for someone else at some point.


Support --fix in watch mode

Fixes #1064
Manual test:

Create empty test.py file
run cargo -p run ruff_cli -- check test.py --fix --watch
Change test.py to:

x = (1)

and save
Expected output:
test.py should be:
x = 1

Thanks!


Laravel 7 support

Can you add support for Laravel 7.x?
Please. Thank you :)

Created pr here https://github.com/Neurony/laravel-query-cache/pull/10

Hi @ppalashturov
You can now use this package in your Laravel 7.x projects using version 3.0.0


refactor: Use substring instead of substr

Since String.prototype.substr() is no longer recommended, let's get rid of it here, too 🙂

We are currently in a phase of our journey where we have paused community contributions

That's a pity! 😢

@ffflorian no worries. This is good. Can you recreate the PR and NOT force-push to it? Then I can reopen it when the bot closes it and get it merged.

Thanks @SleeplessByte, I just opened https://github.com/exercism/javascript/pull/2021 🙂


Swift 3

When is this going to be converted to Swift 3 and pushed to master? Existing "swift-3.0" branch is not useable with 166 errors.

it's coming.


chore: remove outdated comments

User description
and update a couple error messages

PR Type
Enhancement, Bug fix

Description

Optimized error logging by removing unnecessary format!() calls in multiple files, improving performance.
Removed outdated comments in RocksStorageState, enhancing code clarity.
Improved MutexExt trait in src/ext.rs:

Renamed error_message parameter to error_context for better clarity.
Updated error message to be more concise.

Fixed inaccurate error messages in tracing_services.rs:

Clarified "tx channel" and "rx channel" closure messages to specify "receiver side" and "sender side" respectively.

Overall, these changes improve code quality, performance, and error message accuracy across multiple components.

Changes walkthrough 📝
Relevant filesEnhancement

rpc_subscriptions.rsOptimize error logging in RpcSubscriptions

src/eth/rpc/rpc_subscriptions.rs
Removed format!() call in error logging, using ?e instead for better performance

+1/-2

ext.rsImprove MutexExt trait and error handling

src/ext.rs
Renamed parameter error_message to error_context for clarity  Removed format!() call in error logging for better performance  Updated error message to be more concise

+3/-4

Documentation

rocks_state.rsRemove outdated comments in RocksStorageState

src/eth/storage/rocks/rocks_state.rs
Removed outdated comments about temporary code and database reloading

+0/-2

Bug fix

tracing_services.rsClarify error messages in tracing services

src/infra/tracing/tracing_services.rs
Updated error messages in warn_task_tx_closed and warn_task_rx_closed functions for accuracy  Changed "other side" to "receiver side" and "sender side" respectively

+2/-2

💡 PR-Agent usage: Comment /help "your question" on any pull request to receive relevant information

Final benchmark:
RPS Stats: Max: 925.00, Min: 781.00, Avg: 837.93, StdDev: 22.38
TPS Stats: Max: 887.00, Min: 781.00, Avg: 837.60, StdDev: 21.44
Plot: View Plot


PowerPack: Add new column dialog fails to execute some function calls

The Date() function doesn't parse strings like 03 as numbers 3.

@ahadzhanian I think it's okay as long as it is consistent with the DG console behavior (such expression won't work from the console either)


Resolve warnings in install

Closes https://github.com/microsoft/bedrock/issues/921

moved from npm to yarn
updated some docs

One of the warnings is hard to resolve because react-scripts-ts has a hard dependency on a particular version of webpack-dev-server which has a vulnerability.

@evanlouie @dennisseah


how to access to _refCount

Hello,
is there a way to access to _refCount variable as in "should count references" test?
My goal is to know how many subscription are active for an observer.
thanks

There is no public API for that, if that's your question.

@qina83 you shouldn't be doing that, really. If you need to know how many times you've subscribed to something, you can that by incrementing something at the time you subscribed. One method (of many) is to use defer:
let myRefCounter = 0;

Observable.defer(() => {
  myRefCounter++;
  return source$.finally(() => myRefCounter--);
});


Display info about the selected unit

[x] Show hp and mana
[x] Show name
[ ] Show armor type
[x] Show active buffs
[x] Hovering over buffs shows a tooltip

"Show armor type" will be done as part of #47


[wip] fix istiodless remote tests

/test integ-pilot-istiodless-multicluster-tests_istio

@stevenctl: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
618fc9c2a357e3c10c673fd75d1d8f3b79b0f67a
link
/test release-notes_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
618fc9c2a357e3c10c673fd75d1d8f3b79b0f67a
link
/test release-notes_istio

release-test_istio
618fc9c2a357e3c10c673fd75d1d8f3b79b0f67a
link
/test release-test_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-test_istio
618fc9c2a357e3c10c673fd75d1d8f3b79b0f67a
link
/test release-test_istio

release-notes_istio
47bbf7e98c39daf01a554ba99a34a547fe8a5614
link
/test release-notes_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl did you intend to delete the noop file?

orignally that was the only change, just so i could run tests

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
47bbf7e98c39daf01a554ba99a34a547fe8a5614
link
/test release-notes_istio

integ-multicluster-k8s-tests_istio
47bbf7e98c39daf01a554ba99a34a547fe8a5614
link
/test integ-multicluster-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
47bbf7e98c39daf01a554ba99a34a547fe8a5614
link
/test release-notes_istio

integ-multicluster-k8s-tests_istio
47bbf7e98c39daf01a554ba99a34a547fe8a5614
link
/test integ-multicluster-k8s-tests_istio

gencheck_istio
f12b66cb71e350e05fa54612468aa845351e585f
link
/test gencheck_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-multicluster-k8s-tests_istio
47bbf7e98c39daf01a554ba99a34a547fe8a5614
link
/test integ-multicluster-k8s-tests_istio

gencheck_istio
f12b66cb71e350e05fa54612468aa845351e585f
link
/test gencheck_istio

release-notes_istio
f12b66cb71e350e05fa54612468aa845351e585f
link
/test release-notes_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

gencheck_istio
f12b66cb71e350e05fa54612468aa845351e585f
link
/test gencheck_istio

release-notes_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test release-notes_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test release-notes_istio

gencheck_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test gencheck_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test release-notes_istio

gencheck_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test gencheck_istio

integ-multicluster-k8s-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-multicluster-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test release-notes_istio

gencheck_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test gencheck_istio

integ-multicluster-k8s-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-multicluster-k8s-tests_istio

integ-pilot-multicluster-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-pilot-multicluster-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test release-notes_istio

gencheck_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test gencheck_istio

integ-multicluster-k8s-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-multicluster-k8s-tests_istio

integ-pilot-multicluster-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-pilot-multicluster-tests_istio

integ-security-multicluster-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-security-multicluster-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test release-notes_istio

gencheck_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test gencheck_istio

integ-multicluster-k8s-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-multicluster-k8s-tests_istio

integ-pilot-multicluster-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-pilot-multicluster-tests_istio

integ-security-multicluster-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-security-multicluster-tests_istio

integ-telemetry-mc-k8s-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-telemetry-mc-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

gencheck_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test gencheck_istio

integ-multicluster-k8s-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-multicluster-k8s-tests_istio

integ-pilot-multicluster-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-pilot-multicluster-tests_istio

integ-security-multicluster-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-security-multicluster-tests_istio

integ-telemetry-mc-k8s-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-telemetry-mc-k8s-tests_istio

release-notes_istio
307ee3e7b94ef209a05f70a3d95f34d46bd7b3ca
link
/test release-notes_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@stevenctl: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-multicluster-k8s-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-multicluster-k8s-tests_istio

integ-pilot-multicluster-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-pilot-multicluster-tests_istio

integ-security-multicluster-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-security-multicluster-tests_istio

integ-telemetry-mc-k8s-tests_istio
29c2158c3a230a627e0e40d979e967c83a66e72e
link
/test integ-telemetry-mc-k8s-tests_istio

release-notes_istio
307ee3e7b94ef209a05f70a3d95f34d46bd7b3ca
link
/test release-notes_istio

gencheck_istio
307ee3e7b94ef209a05f70a3d95f34d46bd7b3ca
link
/test gencheck_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test integ-pilot-istiodless-multicluster-tests_istio

/test integ-pilot-istiodless-multicluster-tests_istio

/test integ-telemetry-istiodless-multicluster-tests_istio

@stevenctl: The specified target(s) for /test were not found.
The following commands are available to trigger jobs:

/test unit-tests_istio
/test release-test_istio
/test benchmark_istio
/test integ-pilot-k8s-tests_istio
/test integ-cni-k8s-tests_istio
/test integ-security-k8s-tests_istio
/test integ-telemetry-k8s-tests_istio
/test integ-telemetry-mc-k8s-tests_istio
/test integ-telemetry-istiodless-mc-k8s-tests_istio
/test integ-multicluster-k8s-tests_istio
/test integ-distroless-k8s-tests_istio
/test integ-ipv6-k8s-tests_istio
/test integ-operator-controller-tests_istio
/test integ-pilot-multicluster-tests_istio
/test integ-pilot-istiodless-multicluster-tests_istio
/test integ-security-multicluster-tests_istio
/test integ-security-istiodless-multicluster-tests_istio
/test integ-helm-tests_istio
/test analyze-tests_istio
/test lint_istio
/test gencheck_istio
/test release-notes_istio

Use /test all to run the following jobs:

unit-tests_istio
release-test_istio
integ-pilot-k8s-tests_istio
integ-cni-k8s-tests_istio
integ-security-k8s-tests_istio
integ-telemetry-k8s-tests_istio
integ-telemetry-mc-k8s-tests_istio
integ-multicluster-k8s-tests_istio
integ-distroless-k8s-tests_istio
integ-ipv6-k8s-tests_istio
integ-operator-controller-tests_istio
integ-pilot-multicluster-tests_istio
integ-security-multicluster-tests_istio
integ-helm-tests_istio
analyze-tests_istio
lint_istio
gencheck_istio
release-notes_istio

In response to this:

/test integ-telemetry-istiodless-multicluster-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

/test integ-telemetry-istiodless-mc-tests_istio

@stevenctl: The specified target(s) for /test were not found.
The following commands are available to trigger jobs:

/test unit-tests_istio
/test release-test_istio
/test benchmark_istio
/test integ-pilot-k8s-tests_istio
/test integ-cni-k8s-tests_istio
/test integ-security-k8s-tests_istio
/test integ-telemetry-k8s-tests_istio
/test integ-telemetry-mc-k8s-tests_istio
/test integ-telemetry-istiodless-mc-k8s-tests_istio
/test integ-multicluster-k8s-tests_istio
/test integ-distroless-k8s-tests_istio
/test integ-ipv6-k8s-tests_istio
/test integ-operator-controller-tests_istio
/test integ-pilot-multicluster-tests_istio
/test integ-pilot-istiodless-multicluster-tests_istio
/test integ-security-multicluster-tests_istio
/test integ-security-istiodless-multicluster-tests_istio
/test integ-helm-tests_istio
/test analyze-tests_istio
/test lint_istio
/test gencheck_istio
/test release-notes_istio

Use /test all to run the following jobs:

unit-tests_istio
release-test_istio
integ-pilot-k8s-tests_istio
integ-cni-k8s-tests_istio
integ-security-k8s-tests_istio
integ-telemetry-k8s-tests_istio
integ-telemetry-mc-k8s-tests_istio
integ-multicluster-k8s-tests_istio
integ-distroless-k8s-tests_istio
integ-ipv6-k8s-tests_istio
integ-operator-controller-tests_istio
integ-pilot-multicluster-tests_istio
integ-security-multicluster-tests_istio
integ-helm-tests_istio
analyze-tests_istio
lint_istio
gencheck_istio
release-notes_istio

In response to this:

/test integ-telemetry-istiodless-mc-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

/test integ-pilot-istiodless-multicluster-tests_istio

/test integ-security-multicluster-tests_istio

/test integ-security-istiodless-multicluster-tests_istio

/test integ-telemetry-istiodless-mc-k8s-tests_istio

@stevenctl: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

unit-tests_istio
079686177c35673ec46168b2b1c8c3cc4a28119d
link
/test unit-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

cc @frankbu


Bug? Params in macro.execute

Hi,
I don't know if this is a DAE or an Active Auras bug. The only module I updated was DAE, but the problem only occurs for Active Auras as far as I can tell.
It no longer seems to be possible to pass params to the executed macro.
If I use CreateBonfireEffect as Effect Value everything works fine.
If I use CreateBonfireEffect @token I get the following error message.

I can replicate this, a fix should go out in the next patch

Nice :-)

Got a similar issue with dae core functionality - created a separate issue there.
https://gitlab.com/tposney/dae/-/issues/127


Implement changes on Manage section

Task/Issue URL: https://app.asana.com/0/0/1206581639382041/f
Description
See attached task description
Steps to test this PR
https://app.asana.com/0/0/1206652257096481/f

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#4201  👈
#4196
#4195
#4184
develop

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

Join @karlenDimla and the rest of your teammates on  Graphite


Kiota should resolve polymorphic references (oneOf, allOf, anyOf) for request bodies when generating sliced OpenAPI for plugin

Today, Copilot plugins don't support polymorphic references (oneOf, allOf, anyOf) and circular references in OpenAPI descriptions.
For circular references, we shouldn't do anything and just throw an error as we can't know for sure how many degrees of separation should be considered, or how the user would like to resolve it, and giving control to the users to influence the behavior would be even more complex.
For polymorphic references in request bodies, rather than failing on plugin generation, Kiota should:

inline allOfs
pick the first entry for anyOfs and oneOfs

For allOfs, anyOfs and oneOfs in responses, we shouldn't do anything and just keep as it is. We shouldn't throw an errors as well.

This is really ambiguous. What do you expect to happen when a circular pattern is detected? drop the property causing it?
What about multiple degrees of separation? (group, members, user, memberof) how many degrees of separation should be considered here?
Should we give any control to the user to influence the behaviour here? (e.g. what if I really care about group members, but not user member of, but for some reason kiota is trimming properties the other way around from what I want?)

@darrelmiller How do you see it for GA?

I've updated the description based on internal discussion with @baywet and @darrelmiller
@petrhollayms we should be good to go.

Question, shouldn't we fail for anyOf and oneOf? Otherwise, we'll get a bunch of bug reports because picking the first entry will change the meaning of the schema.

@maisarissi I am also asking myself this question on your initial description:

For allOfs, anyOfs and oneOfs in responses, we shouldn't do anything and just keep as it is. We shouldn't throw an errors as well.

Are we assuming there won't be multiple entries or why would the first item work otherwise?
@darrelmiller Any thoughts here?

After some discussion with @baywet and @darrelmiller, we realized that yes, picking the first one is not the best solution, however, seems to be the least worst option.
Otherwise, the other option would validate whether the OpenAPI has oneOf/anyOf for the selected paths, and throw an error. This would eliminate several (if not almost all) uses cases for the users.

I have another question about the expectation for allOf. In case I have a schema with allOf defined like:
schema:
  allOf:
  - type: string
  - type: number

should the slicing fail?

@calebkiage this specific example is impossible to resolve at runtime RFC
So yes, I believe that constraints which are impossible to resolve should result in a failure. Alternative being to select one of the entries, which could have undesired side effects.


Livestream view count is now always zero

add view count with eye

I recall this used to work, but now the API is always returning zero.

It's being worked on by @DispatchCommit , filed in another repo.


Follow pattern to handle exceptions (objectPath)

Closes #122

@agjohnson I started testing the pattern we discuss in #122. This is a work in progress PR, but I would like to get some feedback from you about it before continuing with the rest of the addons. The idea here is:

check for all the mandatory fields required by the addon inside .isEnabled()
use any of the mandatory fields without checking if they exist from inside the addon
check for optional fields inside the addon, and decide what to do if they are not present

Let me know what you think.

I'm marking this as ready for review. We haven't arrived to a perfect solution yet, but at least we are using objectPath in more addons which protects us a little more from accessing to unexpected values from config. I'd like to move forward with this pattern for now and continue thinking on different approaches/updates we could apply here.

The more I think about this regarding being more strict about data validation, the more I think we would end up doing a JSON schema validation. I think this will be easier to handle and find issues.
Doing a small research I found these two packages that we could use:

https://www.npmjs.com/package/jsonschema
https://www.npmjs.com/package/ajv

I think we can probably create each addons.* scheme inside the addon itself and validate that part of the JSON there. Besides, we can validate the global part of it like projects.* and other global attribute at initialization.

There other alternatives like https://nitipit.github.io/edictor/ that we can explore also.

JSON schema validation

This is what we are using on Read the Docs for our readthedocs.yaml file: https://github.com/readthedocs/readthedocs.org/blob/9d55392daa1311accc5f86408b9e146ff04ee629/readthedocs/rtd_tests/fixtures/spec/v2/schema.json#L2

The more I think about this regarding being more strict about data validation, the more I think we would end up doing a JSON schema validation

Agreed, I think I'm coming to the same conclusion here. It was noble to try to avoid this additional step, but being explicit with the data structure here is clearer, easier, future proof, and probably the most benefit we can provide ourselves.
I don't have experience with ajv, but is seems the most widely used. Either library is probably fine here though. I'm guessing this file would probably be useful to both the addons library and the API response test suite on readthedocs.org (at very least).

I was able to codify a small JSON schema and use ajv to validate it.
ajv.getSchema("addons")({analytics: {code: 1, enabled: true}});
false
ajv.getSchema("addons")({analytics: {code: "UA-1", enabled: true}});
true

I think we can start defining the most important part of the schema and leaves some other parts just as type: "object" without specifying all the attributes for the initial approach. After we have it working, we can expand it with more and more keys to make it more accurate.
I will open a PR with this initial approach soon that will close this one since we may not use objectPath as we thought.


Is it possible to customize 'sticked' header layout?

Is it possible to change how the header item looks when it gets 'sticked'?
So we would like to make some transition, like changing the color and maybe layout arrangement as well when the header gets sticky.
Is there any callback that we could use to react when the item gets sticked/unsticked?
I know of the elevation, that's great actually, but we are exploring options to further change the look of the sticked header.
Thanks

@lemonboston, currently the layout of the header is translated to the sticky container, and the container takes the shape of the header item, unless is customized and provided at runtime with specific width/height.
There's a callback when it swaps and clear OnStickyHeaderChangeListener.

Thanks @davideas ! I missed that callback, we may be able to use that then, with I suppose also just finding the sticky layout by id.
cheers


Guzzle Pool promise finishes before all requests are complete

Guzzle version(s) affected: 6.5.2
PHP version: 7.3.9-1+ubuntu18.04.1+deb.sury.org+1
cURL version: 7.58.0
Description
I'm seeing an intermittent issue (frequent enough - the below may need to be ran a handful of times to see the problem) where, it appears that the Pool is finishing prematurely and the ->wait() method call is unwrapping the most recent exception - even though there may be many other requests waiting to be processed.
I've pasted a sample simple Laravel command below, which requests 100 URLs that all return a 999 response code (something that the assertions fail in the Response generation). This sometimes runs with no issue, but often (say 1 in 4 times) the call to ->wait() bubbles an exception before all other requests are finished.
How to reproduce

namespace App\Console\Commands;

use GuzzleHttp\Client;
use GuzzleHttp\Pool;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Psr7\Response;
use GuzzleHttp\TransferStats;
use Illuminate\Console\Command;
use Log;

class TestCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'test';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';
    /**
     * @var \Closure
     */
    private $successCallback;
    /**
     * @var \Closure
     */
    private $failureCallback;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
        $this->failureCallback = function($reason, $index) {
            var_dump($reason->getMessage());
        };

        $this->successCallback = function ($response, $index) {
        };
    }

    public function getRequests()
    {
        for ($i=0; $i < 100; $i++) {
            yield new Request('get', 'https://httpstat.us/999');
        }
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $client = new Client(['timeout' => 10, 'verify' => false]);

        $pool = new Pool($client, $this->getRequests(), [
            'concurrency' => '5',
            'fulfilled' => function(Response $response, $index) {
                call_user_func($this->successCallback, $response, $index);
            },
            'rejected' => function($reason, $index) {
                call_user_func($this->failureCallback, $reason, $index);
            }
        ]);

        $promise = $pool->promise();

        $promise->wait();
    }
}

Additional context
Sometimes this does not happen and the full Pool works properly, however I am still seeing some odd failure reasons:
string(57) "Status code must be an integer value between 1xx and 5xx."
string(57) "Status code must be an integer value between 1xx and 5xx."
string(93) "cURL error 23: Failed writing header (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)"
string(57) "Status code must be an integer value between 1xx and 5xx."
string(45) "Cannot change a rejected promise to fulfilled"
string(57) "Status code must be an integer value between 1xx and 5xx."
string(45) "Cannot change a rejected promise to fulfilled"
string(45) "Cannot change a rejected promise to fulfilled"
string(57) "Status code must be an integer value between 1xx and 5xx."
[...]

An example failure log:
$ php artisan test -v
string(57) "Status code must be an integer value between 1xx and 5xx."
string(93) "cURL error 23: Failed writing header (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)"
string(57) "Status code must be an integer value between 1xx and 5xx."
string(57) "Status code must be an integer value between 1xx and 5xx."
string(45) "Cannot change a rejected promise to fulfilled"
string(45) "Cannot change a rejected promise to fulfilled"
string(57) "Status code must be an integer value between 1xx and 5xx."
string(45) "Cannot change a rejected promise to fulfilled"
string(57) "Status code must be an integer value between 1xx and 5xx."
string(45) "Cannot change a rejected promise to fulfilled"
string(57) "Status code must be an integer value between 1xx and 5xx."
string(45) "Cannot change a rejected promise to fulfilled"
string(45) "Cannot change a rejected promise to fulfilled"
string(45) "Cannot change a rejected promise to fulfilled"
string(57) "Status code must be an integer value between 1xx and 5xx."
string(45) "Cannot change a rejected promise to fulfilled"
string(57) "Status code must be an integer value between 1xx and 5xx."
string(45) "Cannot change a rejected promise to fulfilled"
string(57) "Status code must be an integer value between 1xx and 5xx."

   InvalidArgumentException  : Status code must be an integer value between 1xx and 5xx.

  at /home/vagrant/code/tool/vendor/guzzlehttp/psr7/src/Response.php:151
    147|
    148|     private function assertStatusCodeRange($statusCode)
    149|     {
    150|         if ($statusCode < 100 || $statusCode >= 600) {
  > 151|             throw new \InvalidArgumentException('Status code must be an integer value between 1xx and 5xx.');
    152|         }
    153|     }
    154| }
    155|

  Exception trace:

  1   GuzzleHttp\Psr7\Response::assertStatusCodeRange()
      /home/vagrant/code/tool/vendor/guzzlehttp/psr7/src/Response.php:98

  2   GuzzleHttp\Psr7\Response::__construct(Object(GuzzleHttp\Psr7\Stream), "1.1", "999 Unknown Code")
      /home/vagrant/code/tool/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php:81

  3   GuzzleHttp\Handler\EasyHandle::createResponse()
      /home/vagrant/code/tool/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:565

  4   GuzzleHttp\Handler\CurlFactory::GuzzleHttp\Handler\{closure}("
")
      [internal]:0

  5   curl_multi_exec()
      /home/vagrant/code/tool/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php:128

  6   GuzzleHttp\Handler\CurlMultiHandler::tick()
      /home/vagrant/code/tool/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php:145

  7   GuzzleHttp\Handler\CurlMultiHandler::execute()
      /home/vagrant/code/tool/vendor/guzzlehttp/promises/src/Promise.php:246

  8   GuzzleHttp\Promise\Promise::invokeWaitFn()
      /home/vagrant/code/tool/vendor/guzzlehttp/promises/src/Promise.php:223

  9   GuzzleHttp\Promise\Promise::waitIfPending()
      /home/vagrant/code/tool/vendor/guzzlehttp/promises/src/Promise.php:267

  10  GuzzleHttp\Promise\Promise::invokeWaitList()
      /home/vagrant/code/tool/vendor/guzzlehttp/promises/src/Promise.php:225

  11  GuzzleHttp\Promise\Promise::waitIfPending()
      /home/vagrant/code/tool/vendor/guzzlehttp/promises/src/Promise.php:62

  12  GuzzleHttp\Promise\Promise::wait()
      /home/vagrant/code/tool/vendor/guzzlehttp/promises/src/EachPromise.php:101

  13  GuzzleHttp\Promise\EachPromise::GuzzleHttp\Promise\{closure}()
      /home/vagrant/code/tool/vendor/guzzlehttp/promises/src/Promise.php:246

  14  GuzzleHttp\Promise\Promise::invokeWaitFn()
      /home/vagrant/code/tool/vendor/guzzlehttp/promises/src/Promise.php:223

  15  GuzzleHttp\Promise\Promise::waitIfPending()
      /home/vagrant/code/tool/vendor/guzzlehttp/promises/src/Promise.php:62

  16  GuzzleHttp\Promise\Promise::wait()
      /home/vagrant/code/tool/app/Console/Commands/TestCommand.php:81

  17  App\Console\Commands\TestCommand::handle()
      /home/vagrant/code/tool/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32

To add, in case it helps, this is the case if I pass a generator or an array.
Also, I don't believe "leaking" is actually correct looking into it a little further and I don't believe this is conflicting with Laravel's error handling, it seems the unwrapping on the $promise->wait() is causing the exception to bubble, however I was unable to find the race condition (presumably?) that is the issue in the first place.

where exceptions appear to be leaking to the main error handler rather than being caught and sent to a failure callback during a Pool request

I am failing to understand what the problem is.. Out the failure log I see that everything reached to failure callback and the exception is throw as it is supposed to be thrown...  what do I miss?

I think the problem is that it is only "intermittent"?

After digging into the promise code some more, as far as I can tell the final exception leaking is ‘working as intended’? However, I could try/catch that and it would not be a problem - it doesn’t always bubble though.
My core issue is that these exceptions are bubbled before all requests are complete. In the example error above I have not trimmed the log - that should be 100 failures not 19. Sometimes this executes all 100 requests, sometimes just a handful and occasionally just a single request is made before the exception bubbles from the wait call.
I’m attempting to make requests for thousands of URLs via a generator, however intermittently this is failing and stopping further execution.

I've edited the issue name/description slightly to be less misleading with the messaging - this doesn't appear to be an exception "leak" (as this is exactly how the ->wait() is meant to respond) it instead appears to be a problem with the Pool/EachPromise/Promise iteration where intermittently the Pool finishes without completing all requests.

Were you able to reproduce this @GrahamCampbell / @gmponos or do I have an issue with the implementation/my stack?

I've spent a couple hours this evening attempting to debug this.
In Promise::invokeWaitFn() we're hitting the point where an exception is thrown rather than the promise rejected.
I've added a (super simple) debug output, for when the script hits this mark, and rather than throwing the exception I've returned.
    {
        try {
            $wfn = $this->waitFn;
            $this->waitFn = null;
            $wfn(true);
        } catch (\Exception $reason) {
            if ($this->state === self::PENDING) {
                // The promise has not been resolved yet, so reject the promise
                // with the exception.
                $this->reject($reason);
            } else {
                print "here";
                return;
                // The promise was already resolved, so there's a problem in
                // the application.
                throw $reason;
            }
        }
    }```

This then successfully outputs (see on line 5, this would have thrown an exception rather than reject the promise!):
```string(57) "Status code must be an integer value between 1xx and 5xx."
string(26) "Successes: 0 | Failures: 1"
string(57) "Status code must be an integer value between 1xx and 5xx."
string(26) "Successes: 0 | Failures: 2"
herestring(57) "Status code must be an integer value between 1xx and 5xx."
string(26) "Successes: 0 | Failures: 3"
string(45) "Cannot change a rejected promise to fulfilled"
string(26) "Successes: 0 | Failures: 4"
string(45) "Cannot change a rejected promise to fulfilled"
string(26) "Successes: 0 | Failures: 5"
string(45) "Cannot change a rejected promise to fulfilled"
string(26) "Successes: 0 | Failures: 6"

I'm also seeing a lot of "Cannot change a rejected promise to fulfilled" which I believe is the underlying issue here and is causing the parent exception to leak.

After a little more digging around, it seems that this line is attempting to fulfil an already rejected promise:
https://github.com/guzzle/guzzle/blob/master/src/Handler/CurlMultiHandler.php#L197
This appears to be because the CurlFactory::finish method handles when curl failed, by sending a rejection as a value to fulfilled, however because the Response object now asserts (and throws an exception) that the status code is an integer and within a valid range it fails. Related Pull Request from PSR7 here: https://github.com/guzzle/psr7/pull/250
If I remove those assertions my code works as intended every time:
string(97) "Unsuccessful request: `GET https://httpstat.us/999` resulted in a `999 999 Unknown Code` response"
string(28) "Successes: 98 | Failures: 98"
string(28) "Successes: 99 | Failures: 98"
string(97) "Unsuccessful request: `GET https://httpstat.us/999` resulted in a `999 999 Unknown Code` response"
string(28) "Successes: 99 | Failures: 99"
string(29) "Successes: 100 | Failures: 99"
string(97) "Unsuccessful request: `GET https://httpstat.us/999` resulted in a `999 999 Unknown Code` response"
string(30) "Successes: 100 | Failures: 100"

In short, I'm not sure on the resolution of this issue, but I now believe I understand the root cause:

The CurlHandler class is always fulfilling the promise, even if that promise has already been rejected due to an exception elsewhere in the stack, this is a breaking problem.
This will be commonly ran into when a status code range is out of the bounds of the assertions within the PSR7 response object - following changes here: https://github.com/guzzle/psr7/pull/250 (but any exception, anywhere within the guzzle stack will cause this)
There is a race condition somewhere, that causes the exceptions to stop execution flow. I suspect this is where a Curl request fulfils before the exception has had a chance to bubble. Causing a fulfilled promise to attempt to be rejected - which causes the application error on the promise.

Note, this problem is worse than I first thought as well, as soon as any promise fulfils then rejects, all further promises are rejecting. Rolling back my changes to the base causes ~5 of the 95 200 OK responses to reject which is a serious issue for anyone using the pool in cases where they may run into these assertions in the PSR7 library!

Final message before I stop debugging for the evening. This boils down to the build of the Response object, called within the closure here:
https://github.com/guzzle/guzzle/blob/1cdd69a0cd361ee8b6ba5584e45db80c0ea8b31c/src/Handler/CurlFactory.php#L569
As this build fails, it's causing some kind of catastrophic failure within Curl Multi, probably because an exception is being raised but this isn't actually halting execution due to the way that promises (usually) stop exceptions from bubbling up. As this is an exception that occurs during the header execution I feel this should be caught and the exception return a "error handling headers" exception - but that's not entirely user friendly.
One option, which I'm not sure I'm happy with, would be to do as follows:
Change EasyHandle to pre-validate the status code:
        $statusCode = intval($startLine[1]);
        $statusCode = (100 > $statusCode || $statusCode > 600) ? 599 : $statusCode;

        // Attach a response to the easy handle with the parsed headers.
        $this->response = new Response(
            $statusCode,
            $headers,
            $this->sink,
            substr($startLine[0], 5),
            isset($startLine[2]) ? (string) $startLine[2] : null
        );

Add a try/catch for any other errors within the closure which creates the response:
try {
                    $easy->createResponse();
                } catch (\Exception $e) {
                    return -1;
                }

Anyone else have any bright ideas? This is seriously blocking for any sort of web crawling where you cannot expect a valid status code in advance and EasyHandle is not (ironically) easy to override.

Just chiming in. I suspect we may be experiencing this issue with our Guzzle pool, but it's difficult to debug. We have "missing" requests, which I can only trace to the promise finishing before the responses have been passed to the callback functions.

Sad I have the problem with this issue as well

Has there been any traction on this? Any sort of crawling I do is currently completely broken with Guzzle, mostly due to LinkedIn responses which return a 999 status code when crawling unless UA and IP address is white listed.

I know it’s not ideal but the referenced pull request could be used instead, I’m keeping that branch open so if you alias your composer file to it, it’ll temporarily fix the bugs you’re experiencing :-) https://github.com/guzzle/guzzle/pull/2591

Composer-based patch: https://github.com/spatie/crawler/issues/271#issuecomment-642645685
However, I had trouble applying that patch to my project.

PR has been merged - to be released in 7.2 release.

Hello guys and @williamjulianvicary ,
I still have the same error:
request.CRITICAL: Uncaught PHP Exception GuzzleHttp\Promise\RejectionException: "The promise was rejected with reason: Inv
oking the wait callback did not resolve the promise" at /var/www/vendor/guzzlehttp/promises/src/Create.php line 62 {"exception":"[object] (GuzzleHttp\\Promis
e\\RejectionException(code: 0): The promise was rejected with reason: Invoking the wait callback did not resolve the promise at /var/www/vendor/guzzlehttp/pr
omises/src/Create.php:62)"} []

Part of stacktrace:
GuzzleHttp\Promise\RejectionException:
The promise was rejected with reason: Invoking the wait callback did not resolve the promise

  at vendor/guzzlehttp/promises/src/Create.php:62
  at GuzzleHttp\Promise\Create::exceptionFor('Invoking the wait callback did not resolve the promise')
     (vendor/guzzlehttp/promises/src/Promise.php:72)
  at GuzzleHttp\Promise\Promise->wait()

Using version:
root@7a917597f9c1:/var/www# composer show | grep guzzle
guzzlehttp/guzzle                     7.2.0     Guzzle is a PHP HTTP client library
guzzlehttp/promises                   1.4.0     Guzzle promises library
guzzlehttp/psr7                       1.7.0     PSR-7 message implementation that also provides common utility methods
kevinrob/guzzle-cache-middleware      v3.3.1    A HTTP/1.1 Cache for Guzzle 6. It's a simple Middleware to be added in the HandlerStack. (RFC 7234)
spatie/guzzle-rate-limiter-middleware 2.0.0     A rate limiter for Guzzle

My code where i have the issue:
public function isValidProductIds(array $productIdsToCheck): array
    {
        $notValidProductIds = array();

        // Get http headers (api token)
        $httpHeaders = $this->getHttpHeaders();

        // Create request function
        $requests = function ($productIdsToCheck, $httpHeaders)
        {
            foreach ($productIdsToCheck as $productId)
            {
                $url = sprintf('article/%d', $productId);
                yield new Request(
                    'GET',
                    $url,
                    $httpHeaders
                );
            }
        };

        // Create the pool
        $pool = new Pool($this->httpClient, $requests($productIdsToCheck, $httpHeaders), [
            'concurrency' => 5,
            'fulfilled' => function (Response $response, $index)
            {
                // this is delivered each successful response
                $this->logger->debug('OK for index '.$index.' : HTTP CODE '.$response->getStatusCode());
            },
            'rejected' => function (RequestException $reason, $index) use (&$notValidProductIds, $productIdsToCheck)
            {
                $notValidProductIds[] = $productIdsToCheck[$index];
                $this->logger->info('GET index '.$index.' to check productId failed: '.$reason->getMessage());
            },
        ]);

        // Initiate the transfers and create a promise
        $promise = $pool->promise();

        // Force the pool of requests to complete.
        $promise->wait();

        return $notValidProductIds;
    }

Note: I do not know if it could help you or not to investigate but seems the error appears only when they are a lot of 'rejected' (ie. 404 not found).
Tell me if you need more infos.
Regards

I think this is different, unless they aren't 404 errors?
The issue that was resolved with the pull request was related to the header function throwing an exception that was not caught (which threw CURL into an odd state). A 404 status response would not hit that workflow so I think is unrelated to the fix that was deployed.
I'm happy to look into this if you can simplify the code into a reproducible example with an endpoint that is publicly accessible (such as with https://httpbin.org/ as URLs?)

You can reproduce the error by doing this steps below. Hope this will help you to troubleshoot. For info i am using Symfony 5.1.8.
Step 1:
Let's execute this code
private function test(){

        $productIdsToCheck = new ArrayCollection([1,2,3,4,100,6,7,8,9,99]);

        // Create request function
        $requests = function ($productIdsToCheck)
        {
            foreach ($productIdsToCheck as $key => $productId)
            {
                yield new Request(
                    'GET',
                    'https://httpbin.org/'.$productId
                );
            }
        };

        // Create the pool using $request function
        $pool = new Pool($this->httpClient, $requests($productIdsToCheck), [
            'concurrency' => 5,
            'fulfilled' => function (Response $response, $index)
            {
                // this is delivered each successful response
            },
            'rejected' => function (RequestException $reason, $index)
            {
            },
        ]);

        // Initiate the transfers and create a promise
        $promise = $pool->promise();

        // Force the pool of requests to complete.
        $promise->wait();
    }

Everything is ok the first time.
Step 2:
Now, just change the value from 100 to 10 into the ArrayCollection $productIdsToCheck variable and re-execute the same code
private function test(){

        $productIdsToCheck = new ArrayCollection([1,2,3,4,10,6,7,8,9,99]);

        // Create request function
        $requests = function ($productIdsToCheck)
        {
            foreach ($productIdsToCheck as $key => $productId)
            {
                yield new Request(
                    'GET',
                    'https://httpbin.org/'.$productId
                );
            }
        };

        // Create the pool using $request function
        $pool = new Pool($this->httpClient, $requests($productIdsToCheck), [
            'concurrency' => 5,
            'fulfilled' => function (Response $response, $index)
            {
                // this is delivered each successful response
            },
            'rejected' => function (RequestException $reason, $index)
            {
            },
        ]);

        // Initiate the transfers and create a promise
        $promise = $pool->promise();

        // Force the pool of requests to complete.
        $promise->wait();
    }

And the error message appears:
The promise was rejected with reason: Invoking the wait callback did not resolve the promise

Important:
Here how my $httpClient is setted (using dependency injection as i am using symfony 5.1.8):
#services.yaml

services:
_defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
        bind:
            $httpClient: '@http_api_client'

        Kevinrob\GuzzleCache\Storage\Psr6CacheStorage:
                class: Kevinrob\GuzzleCache\Storage\Psr6CacheStorage
                arguments: [<EMAIL_ADDRESS>]

            Kevinrob\GuzzleCache\Strategy\GreedyCacheStrategy:
                class: Kevinrob\GuzzleCache\Strategy\GreedyCacheStrategy
                arguments: [ '@Kevinrob\GuzzleCache\Storage\Psr6CacheStorage', '3600' ]

            Kevinrob\GuzzleCache\CacheMiddleware:
                class: Kevinrob\GuzzleCache\CacheMiddleware
                arguments: [ '@Kevinrob\GuzzleCache\Strategy\GreedyCacheStrategy' ]

        GuzzleHttp\HandlerStack:
                class: GuzzleHttp\HandlerStack
                factory: [ 'GuzzleHttp\HandlerStack', create ]
                calls:
                    - [ push, [ '@log_middleware', 'log' ] ]
                    - [ push, [ '@Kevinrob\GuzzleCache\CacheMiddleware', 'cache' ] ]
                    - [ push, [ '@Spatie\GuzzleRateLimiterMiddleware\RateLimiterMiddleware', 'rate-limit' ] ]

        http_api_client_
                class: GuzzleHttp\Client
                arguments:
                    - handler: '@GuzzleHttp\HandlerStack'

Important 2:
If i remove the cache feature by commenting  the line   - [ push, [ '@Kevinrob\GuzzleCache\CacheMiddleware', 'cache' ] ] ,  then everything woks fine.
If you re-enable cache feature, the problem appears again. Seems linked to the cache. 🤔

Issue created as it seems not linked to the current issue : https://github.com/guzzle/guzzle/issues/2822


feat: add swagger-ui for lake

Summary

Key Points

[x] This is a breaking change
[ ] New or existing documentation is updated

Description
This is a Draft PR for checking my work of adding swagger-ui is OK and I've finished most of the work except for polishing the description of each annotation.
Using swagger-ui, first, we need to install swag cli by
$ go get -u github.com/swaggo/swag/cmd/swag
also , we need to add swag cli to the path
and also need two package
# gin-swagger  is  a middleware package
$ go get github.com/swaggo/gin-swagger
# swagger  is an inner-config package
$ go get github.com/swaggo/gin-swagger/swaggerFiles

these have been written in go.mod.
My work is adding annotations to /api directory. In api.go,we need to do some basic settings and register swagger router.
In Controler Files, we also need to add annotations for each function.
After that , run swag init  --parseDependency --parseInternal  -o ./api/docs -g ./api/api.go  to generate swag-docs.
--parseDependency --parseInternal  aims to find models outside file. -o ./api/docs sets the generated docs in ./api/dos directory  and -g ./api/api.go make swagger search api.go as an Enterance.
the command will generate three files as docs.go , swagger.json and swagger.yaml . These files are generated autoly
and can be ignored  in formal version by using CI/CD tools.
Then we can see swagger page by enter URL http://localhost:8080/swagger/index.html#/. like

In API we can see the input format and output format.

We can also try your own input data in this page.

Does this close any open issues?
related to #292
Current Behavior
finish most of this feat
New Behavior
continue processing the description.
Screenshots
Include any relevant screenshots here.
Other Information
Any other information that is important to this PR.

This is an excellent implematation!

ready for review!


Multiple commits between releases do not increment the version number as expected

In some situation developers will commit more than one time locally before pushing to a repository. In this situation the version number is not getting incremented as expected.
Actual version 1.1.0.
This behavior is easily recreated locally without the use of a CI server.
Is this expected behavior? If so, why? If not, I will investigate a code change to address this issue. Thanks!

Yes, that is the expected behavor. In fact there are even tests for that.
Why do you expect the version 1.1.0 to be skipped? If you want version 1.1.0 and 1.2.0, you must push twice.
This allows to deliberately plan releases by developing on a separate branch and to release you just merge back to master and push. This way you can have multiple features and bugfixes in 1.1.0.

Excellent. Thank you very much for the explanation!


feat: add FIDO Passkey support using Keycloak

After the investigation, we found that keycloak does not support API-based Passkey implementation


Find all Events

I want to dispatch a common function on all listeners registered to eventBus.
I dont want to go manually on each function of dispatch event.
is there a common way i can implement that.

I'd suggest you make a common "empty" interface "Event", which all other Events implement?

This is kind of the anti-thesis of what EventBus does (notify everybody vs notify only subscribers). You should specify an additional event and post/subscribe to that. -ut


Create script for updating packages and typings

It's a bit cumbersome to run the scripts for updating and installing the npm packages and corresponding typings. We need a script for this.

added a scripts folder with a script update_project.ts. This script can be invoked either

via node ./scripts/update_projects.js or
vai npm run updproject
at command line.


Add CUDA Runtime API document

Can i take up the issue

Of course. It is OK.

May I know the status of this issue, and what needs to be accomplished?


[RFC] Lint codebase using standard

Depends on:

[x] https://github.com/alphagov/govuk_prototype_kit/pull/223
[x] https://github.com/alphagov/govuk_prototype_kit/pull/233

This PR is an open discussion on the topic of using a JavaScript linting tool across our codebases.
I throw my hat in the ring by suggesting standard and demonstrating with this PR how an implementation would work for a node project.
Code was automatically converted using https://github.com/maxogden/standard-format.
We already have govuk-lint whose responsibility it is to handle linting concerns, and I'd love to hear what our thoughts are on relying on that instead.

I saw this tweet recently: https://twitter.com/brendaneich/status/741277499376603138 - Tim Berners-lee & Brendan Eich use standard.

thanks for this, sorry I dont have much experience on this - can you explain a bit more about how it works?

@joelanman certainly!
https://github.com/alphagov/govuk_prototype_kit/pull/224/commits/1edbe61ad6a3c22be101becc71d25095a04b8315 is where I've added standard as a project dependency. standard is an opinionated JavaScript linter that uses eslint underneath and acts as a set of sensible defaults for it; here are the most important rules.
Since standard is based on eslint, overriding rules inside a file / ignoring files works through the same mechanisms, and if we want to move away or build on top of its opinionated ruleset, we can easily do so by swapping it with eslint and dropping an .eslintrc file.
Also worth mentioning some other "batteries-included" linters that fork standard or are in a similar vein:

semistandard (standard with semicolons)
happiness (standard with semicolons and tabs)
doublestandard (standard with 2 semicolons 💃)
uber-standard (standard forked by the Uber team)
eslint-config-airbnb (an eslint plugin based on Airbnb's styleguide)

I've hooked it up to npm scripts because I was hoping on travis to run npm test on our behalf on CI, but it looks like it relies on grunt to do it instead. I'll update it.
https://github.com/alphagov/govuk_prototype_kit/pull/224/commits/661776a7eae86912e7904533e43597ab0ee11a47 is the monster commit where I run standard-format on every file, and complete it with a few manual modifications that it's not smart enough to do by itself. Stuff I've had to do is:

add path.join() calls where __dirname + '/foo' was being used
split var a,\nb,\nc declarations into multiple ones
add /* global MyLib */ calls to make it clear that stuff like jQuery or GOVUK is being read from the global context

Hope I didn't waffle too much, I can update the commit/PR messages with more info if any of this is useful to have for posterity.

thanks! When does the linter run? Or do you have to run it manually?

@joelanman my hope is to update this so that it runs as part of CI, and combined with text editor plugins that's usually enough for projects I've used it in with other developers. Optionally we could run the test suite on a pre-push hook, to save a bit of time and get less red ❌'s on pull requests. (I can add that fairly easily if everyone likes it)

TODO:

Hook npm test into CI
Add documentation about manually running npm run lint or adding editor plugins

@joelanman I've written some documentation here: https://github.com/alphagov/govuk_prototype_kit/pull/224/commits/252b8b4d71733e2ed5018e9c2dc498ae8beb183e
This PR is good to go once https://github.com/alphagov/govuk_prototype_kit/pull/223 and https://github.com/alphagov/govuk_prototype_kit/pull/233 are merged.

@tvararu like the addition in the docs, do you think we could briefly add why we're now linting and why standard being so opinionated is a good thing?

@nickcolley Updated the latest commit, added two more blurbs on "Why lint?" and "Why standard?"

Spoke about this in #frontend. The specific problem this solves is standardising the JS that goes into govuk_prototype_kit, it’s not necessarily being suggested for actual prototypes (although of course people using the kit are free to adopt for their own code if they wish).

Hugely pro some kind of standardised linting across our projects. 👍
As discussed in the FE meeting, standard seems like it might be a good default. Happy to try it for a while on this repo, see how it feels, and roll it out to more repos if it works for us.

Thanks for the support @dsingleton!
I recall @edwardhorsford mentioning that he'd prefer not to link to the Linting doc from the main page of the README, because it's too technical. There are also a few other things I recall:

[ ] Update README, remove link to "Linting", link from the CONTRIBUTING file instead
[ ] Update Linting.md, expand on "Why standard" section (I don't remember exactly what though, @dsingleton to provide guidance)
[ ] Update Linting.md, provide clear instructions for how to add linting to two popular editors (Sublime Text and Atom) and add a link to the official docs for other editors

Anybody subscribed to this thread feel free to edit this comment with things I've forgotten.

If you'd like another project to try this out on, you are more than welcome to do the same for GOV.UK elements!
Aside from the JS from the govuk_frontend_toolkit, some of the govuk_prototype_kit JS has been directly copied from govuk_elements.
If we have JS that can be of benefit to more than one project, it makes sense to move it to govuk_frontend_toolkit.
An example of this is the show/hide js, which will replace what is exists  in application.js.

Update Linting.md, expand on "Why standard" section (I don't remember exactly what though, @dsingleton to provide guidance)

My train of thought around this was: Linting rules can be a contentious subject, and a personal preference. We should document why we chose a particular set of rules over others - why standard was a good fit for us (rather than why it's good in general). If we make sure people can understand the reasons behind that choice we're less likely to have rehash discussions over the choice.
Hopefully that helps?

Happy to merge this if others are?

@joelanman yes please! ✨

@tvararu can you rebase against master and I'll merge

thanks everyone! 💃


Replaced request with axios, fixed maxmind geolite2

Thank you for contributing to Retraced!
Please add a summary of your change
Does your change fix a particular issue?
Fixes #(issue)

Replacements are still untested @ukrocks007 (except geo)

Tried examples and the Jackson interface with Retraced.
Everything seems to be working.


Riffy Blog 3.0

It's time for 3.0!! Motherf--
Objective
Main point for this update is to migrating all design into Gatsby Theme which will provide us more flexibility for anyone to use Riffy Blog theme style easily
FAQ
Where theme will be located?
Riffy Blog theme will be available as gatsby-theme-riffy-blog package and what to do is just adding theme into gatsby-config.js like particular plugins with additional opitions.

Draft options for the theme

module.exports = {
  plugins: [
    {
      resolve: `gatsby-theme-riffy-blog`,
      options: {
		contentful: {
		  space: 'space id here',
		  token: 'access token here'
		},
		path: {
		  category: '/category',
		  author: '/author',
		},
      },
    },
  ],
}

How to use?
Just clone site/ directory
To-do

[x] Preparing for migration
[x] Migrate theme to theme/
[x] Configure site/
[x] Publish package to NPM
[x] Deployment

Closed #1162


feat: add hotfix script

Description
Implements a hotfix path to our release script, allowing us to interactiely select specific commits in develop from the CLI to put into a release.
Pull Request Type

[ ] :bug: Bug fix (Non-breaking Change: Fixes an issue)
[x] :hammer_and_wrench: Chore (Non-breaking Change: Doc updates, pkg upgrades, typos, etc..)
[ ] :nail_care: New Feature (Breaking/Non-breaking Change)

Issue (if applicable)
N/A - quality of life.
Risk
Small, no runtime codepaths.
Testing
Run yarn release and select the Hotfix option.
You'll now be able to specify which commits to put into a hotfix release.
Engineering
☝
Operations
N/A
Screenshots (if applicable)

Closing for now, this currently doesn't work as intended and is not a priority to fix.


Wrong shown Balance

Hello,
the displayed balance on the "RApports" page is wrong. It seams you display
InitialAmount+Sum of all operations.
Without taking into account the date of InitialAmount.
InitialAmount is the value of the account when imported in kresus (from what I see), and some of the operations (all at first imports) are previous to InitialAmount.
The graphs are not correctly displayed.
The bank is LCL (and the weboob module maybe bugged)
Thanks

Thanks for reporting! Coincidentally, I've noticed the issue as well and fixed it in the "incoming" branch. A new release shall be made today, so please wait for the notification, update kresus and then delete/re-add your account (or change the value by yourself, by using the data browser app).

Fixed by ebe5a9be7db8955467924f798e7702c2e0fc708a.


Setup ruby code generation and publishing

Summary

Setup ruby code generation and workflow action for publishing. The publish action is untested. Here is the test gem: https://rubygems.org/gems/sigstore_protobuf_specs.
We will need to coordinate transferring ownership and setting the API key for the action.
Closes #70
Release Note

Add Ruby language bindings
Documentation

CC @znewman01

Thanks for this!
If you're comfortable, what I would recommend is the following:

You create an account on Rubygems. Ideally you'll add another sigstore-ruby maintainer too.
Create a publishing token.
Send me the token. We can do Slack but I can also send you my Signal information.
I'll add it as secret and test the process.

Ideally we'd do this synchronously because debugging is a pain. Maybe Monday?


Math Magicians: refactor with hooks- code explanation

[ ] The code begins with importing React and useState from the React library,
[ ] Within the Calculator function, the useState hook is called to create a state variable named results that holds an object with three properties:
total
next
operation

The total property holds the current total value of the calculator, next holds the value of the next number or decimal entered by the user, and operation holds the current mathematical operation that should be performed on total and next.

[x] The handleClick function is defined next. This function is passed as a callback to all of the calculator buttons and is responsible for updating the state of the Calculator component based on the user's input.

It extracts the text content of the button that was clicked, and calls the calculate function with the current results state and the text content of the clicked button as arguments. The calculate function returns an updated results object based on the user's input, and the setRes function is called to update the results state with the new results object.

Hi @TamaraDimov,
Your project is complete!  There is nothing else to say other than... it's time to merge it :shipit:
Congratulations! 🎉

Highlights

Calculator functionality working as expected :heavy_check_mark:
App built with functional components :heavy_check_mark:

Optional suggestions
Every comment with the [OPTIONAL] prefix won't stop the approval of this PR. However, I strongly recommend you to take them into account as they can make your code better. Some of them were simply missed by the previous reviewer and addressing them will really improve your application.
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.

As described in the Code reviews limits policy  you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.


Allow staff to remove early submission bonus when grading assessments

There are occasional 'low effort' submissions from students to gain the early submission bonus XP. This is more prevalent amongst 'optional' assessments within the course (such as Quests in CS1101S). Staff should be able to remove the early submission bonus where deemed fit.

Staff should be able to remove the early submission bonus where deemed fit.

Yes. In addition, we could automatically remove the bonus, if there are 0 marks for the assessment. That would mean: no need for staff to remember to remove the early submission bonus. To keep things simple, we would just leave the early submission bonus as soon as the marks are non-zero.
Staff would need to be aware of this: with non-zero marks, they enable the early submission bonus.
Any views @Sanka-R @boydanderson ?

Proposed Changes:

Allow staff to view any bonus XP awarded in the grading workspace
Provided the ability to enable and disable this bonus XP where deemed fit

Can be achieved with a switch

Maintain the default of early submission bonus to be enabled i.e. no action required unless staff wishes to manually disable the bonus for any reason

Possible UI Design:

Allow staff to view any bonus XP awarded in the grading workspace

I agree with this, but your image shows the grading submissions table, not the grading workspace, so I'm not sure which one exactly you're referring to.
Whether or not to award the early submission bonus XP comes from the judgment of the staff after having gone through the submission itself (whether it's "low-effort", etc.). So in my view, it does not make sense that there is a toggle to award/not award the bonus XP in the submissions table, where the staff has not looked through the submissions yet.
It should be in the grading workspace, together with where a staff would award XP for all the submissions' answers.

Provided the ability to enable and disable this bonus XP where deemed fit

Can be achieved with a switch

Maintain the default of early submission bonus to be enabled i.e. no action required unless staff wishes to manually disable the bonus for any reason

Instead of a switch, why not as discussed the other time, something like the following (already exists in grading workspace at the moment):

My counter-proposal:

Something like a combination of the two above → (input field) / (max bonus XP), where the max bonus XP is set by the submission time (the existing behaviour), and the default value of the input field is also equal to the max bonus XP
That way, staff will have more granular control of the bonus XP awarded, instead of just 0 or max (e.g. maybe they want to award the bonus XP for attempting and submitting half of the questions early)

What do you think?

I agree with this, but your image shows the grading submissions table, not the grading workspace, so I'm not sure which one exactly you're referring to.

Oh yes, I was referring to the grading submissions table sorry, edited the original comment.

My counter-proposal:

Something like a combination of the two above → (input field) / (max bonus XP), where the max bonus XP is set by the submission time (the existing behaviour), and the default value of the input field is also equal to the max bonus XP
That way, staff will have more granular control of the bonus XP awarded, instead of just 0 or max (e.g. maybe they want to award the bonus XP for attempting and submitting half of the questions early)

What do you think?

Thanks for the suggestions, I do think there is merit in this solution as well. However, my concern is that granular control could result in more confusion for the graders and inconsistencies in grading, like how would one decide how much bonus XP a student should get exactly based on differing amounts of effort? It may also add one more level of grading work to the job of a grader in deciding this amount.

Whether or not to award the early submission bonus XP comes from the judgment of the staff after having gone through the submission itself (whether it's "low-effort", etc.). So in my view, it does not make sense that there is a toggle to award/not award the bonus XP in the submissions table, where the staff has not looked through the submissions yet.
It should be in the grading workspace, together with where a staff would award XP for all the submissions' answers.

I do think it is a possibility to have it in the workspace, but the early submission is not a per-question basis bonus so would it be on the last question after all questions have been looked at? I feel that having it in the submissions table makes more sense to me as it is a per-submission basis bonus and can be toggled on/off for the whole submission there easily.
My proposal to ensure staff has looked through the submissions already would then be to grey out/disable/not show the switch until the submission has been fully graded.
Would this be feasible?


Not working after 0313 9.1GB update

Investigating

0313 fix version is released. Please get the new release.


CTE: allow dynamic table name + better error messages.

Hi! I found it a bit restrictive that you can't define a CTE's table name with the contents of a variable. Looks like it works nicely with my changes. What do you think? :-)

:green_heart: :blue_heart: :purple_heart: :yellow_heart: :heart:


Consider removing GetModuleSource()

Now that ESM Phase Imports have implemented an explicit [[ModuleSource]] internal field on module records, it may be possible to just define this field upfront for all module records that want to provide their source phase.
Error customization for module sources that don't expose this phase could be as simple as "Module source kind X doesn't implement the source phase", as opposed to needing these being custom completions.
I believe this change can be considered editorial as part of the Stage 4 process for this spec, but this needs to be discussed further.

Landed in https://github.com/tc39/proposal-source-phase-imports/pull/69.


Add support for finding non-void tags that are (incorrectly) self-termin...

Added a rule to find non-void tags that are wrongly self-terminated, like:  <div />.

https://github.com/yaniswang/HTMLHint/blob/master/src/rules/tag-self-close.js
The same rule?

Yes, the same.


Update logo dimensions + add note about logo location and name

See https://github.com/cert-manager/csi-driver/pull/80 for change justification!
/kind cleanup
NONE

/test pull-cert-manager-e2e-v1-23


Where is the falcon_kivi?

Due to table7 in paper, the experiments of llama, falcon and mistral are tested, but there are only llama_kivi.py and mistral_kivi.py but no falcon.py in https://github.com/jy-yuan/KIVI/tree/main/models.
How can I get it?

And where are models/modeling_mistral.py, models/mistral_kivi.py, models/modeling_falcon.py and models/falcon_kivi.py in the branch lmeval?

Thank you for your interests! I will collaborate with @jy-yuan to release these code and falcon version soon.

Hi, @Felixvillas; thanks for your patience; we have updated the corresponding mistral and falcon files to the branch lmeval.

Hi, @Felixvillas; thanks for your patience; we have updated the corresponding mistral and falcon files to the branch lmeval.

Thank you, I'll try it!


Bugfix/FE-19

As we discussed before in #376 , bug in displaying annotation body is fixed by changes on the format in backend. Also, from now on a user can edit and delete only her own annotations. In image annotation, user can see other users' annotations in read only mode. In text annotation, editor looks like it allows editing and deleting other users' annotations but it does not do it. When you click again on text annotation, you can see no difference. Annotation is completed!

Great great news! Thank you so much for your amazing efforts @KarahanS @sinemKocoglu.

Thanks for the hard work. I reviewed the improvements using Docker. Here some of the things I notice that can be improved:

It seems like a user can edit another user's text annotation right now. I think we should apply the same logic we used for image annotation to text annotation as well to avoid that.
We can provide a hide annotation button for text annotations as well. Also, we can actually create a box with the body of the annotation and the owner (exactly what you did for image annotations) for text annotations as well so that one understands who dropped the note. (If it is possible, best way is to add the user's name directly to the box generated by the Annotorious - but I don't know if it'll take so much effort).
Lastly, we have to get rid of that Reply section somehow. I think this is not urgent, so don't let this block you for now. First two ones seem to be more important.

3 statements are solved and checked on discord with @KarahanS .

Reviewed and made the necessary updates on annotation models to fix the aforementioned problems with @sinemKocoglu. Ready to merge.

Fixed the last bug related to read only mode of text annotations. Actions for annotations are tested manually. Everything works as desired. Just a reminder, when you click on a text annotation of another user, click on close button before creating your own text annotation for better practice. Thanks @KarahanS for all support and effort. Merging directly.


Associate User/Project impossible

I create a project with the name "Automatisation"
Impossible to associate this project with a user.

bug fixed in extensivetesting/web-client/pages/administration.php


perf: Ionic 2 app on real device looking weird

Type: perf
Ionic Version: 2.x
Platform: ios 9 webview
i have started building a ionic 2 app. in browser and simulator it was looking nice. but after placing it in real device i.e. iPhone 6 and 6 Plus the UI is completely damaged. looking very weird. all the text is zoomed by 50%. space was left for battery, time and signal at the top, it ate some space. overall the UI is very bad. its not at all as shown in the browser. with Ionic 1 UI used to be very good but with ionic 2 UI is completely disappointing. Even the keyboard is not the one you get in messaging.
is anybody facing similar issue? can someone help me in improvising the UI.

Do you use latest beta?
Can you add screenshots and provide a plunker?

Hi Astec... i have added the screenshots.
You can see difference between view in ionic-lab and real device.
Everything seems so zoomed.

The first image is through ionic-lab and the second one through simulator.

The first screenshot is taken from ionic-lab which is the required UI,but once i run it in simulator everything seemed so zoomed.

Hello! Could you provide a repo that I could reproduce this issue with? Also, are you seeing this on actual devices, or the ios sim? Do you also see this issue on Android? Thanks!

Hello, because i cannot seem to reproduce this issue with any of our test apps on either the ios sim or on a real device (iphone 5) i am going to be closing this issue for now. Most likely this is caused by settings on your ios simulator and not an Ionic issue. Thanks for using Ionic!

yes, i confirm the issue is not with ionic. while building the app the Launch Screen was empty and after selecting .xib it was all good. thank you.


Adding proxy.config.http.allow_half_open

This is a workaround for issue #3288.

The root cause of this issue is when ATS gets RST in the state of half-close, the read side is closed and the RST is ignored.
#947 is trying to bring up the RST to HttpSM as a VIO error event, but the SM doesn't expect an event on a disabled read, so the SM ends up crashing.

This PR is to give a workaround with little risk until we figure out what the proper way to fix #3288.
@bryancall @zwoop @oknet @scw00 any ideas would be much appreciated.

Hi @zwoop  @bryancall
This pr make half-closed configurable, but I'm not sure whether we should launch this pr . Could you please review again ?

We plan to talk about half open at the summit this Spring.  Please hold off merging this till after.

The implementation looks fine to me.   Should probably rename it to allow_half_closed if we decide to go with this.  Probably my fault.  I added allow_half_open method to the ProxyClient* classes.  In the general community it seems that half open refers to embryonic connections (got the SYN but not the SYN-ACK).  And half closed refers to this situation.  Most of the code refers to half_close_flag's, so I just had a brain bubble when naming my method.

In the discussion at the Euro Tour, the consensus was to add this flag and during the 8.0 time frame add metrics to figure out how often this really happens for various scenarios.


Port tooltip does not dismiss after mouse leave

Bug is introduced since 0.3.11. It was fine in 0.3.10.
Steps to reproduce:

Pull latest code, build and host locally
git clone https://github.com/the-grid/the-graph
git checkout tags/0.3.11
cd the-graph && npm install && grunt build
python -m SimpleHTTPServer 3000

visit http://localhost:3000/the-graph-editor

Hover a port with the cursor and leave, tooltip remains

Tooltip dismissed If scrolled to zoom in or out.

Switch back to 0.3.10, rebuild and test, problem does not occur.

Seems to be problem of upgrade react to 0.13.3. Normal at 29efed5, and problem appears at one commit later: ed66aea

Thanks for this report. Turned out to be a small bug.


Interested in generating a high-order mesh using methods to be used with mfem::Mesh init constructor

Hey,
I'm interested in be able to generate high-order curved meshes using the exposed API.  I've previously been able to generate linear meshes using the methods intended to be used the init constructor (i.e. AddTri (...), AddTet(...)) but I recognize that these methods are only constructing the linear geometries without any notion of high-order coordinates.  From a cursory look at the mesh implementation, it looks like I'll need to somehow create and initialize mfem::Mesh::Nodes.  Is what I'm trying to do currently possible?  If not, do you have any suggestions on how to make high-order meshes with code only?
CC @Dan2997925

Hi @junkudo,
One way to define high-order meshes is to define a low-order mesh, increase the curvature, and map it with Mesh::Transform, see e.g. the Toroid miniapp:
https://github.com/mfem/mfem/blob/master/miniapps/meshing/toroid.cpp#L146-L151
This only works for relatively simple geometries. If you need a full high-order mesh generator, see the PUMI integration (cc: @MarkShephard) as well as the GMsh and Cubit support.
Hope this helps,
Tzanio

To @junkudo,
If your long term plans are to regularly work with complex geometries for which you want curved meshes, you may want to look into a workflow we have developed that can go from CAD to MFEM. I would be happy to have a conference call to get a better understanding of what you want to be able to do in the long run and to give an introduction to some of the options that could be considered.

Hi Tzanio,
What if I know where the high-order points should be?  As in, I have the entire mesh known during run time and I want to create a mfem::Mesh object that represents that mesh.

Do you need a copy-constructor for Mesh? In principle the nodes are stored in the Nodes grid function inside the mesh, so you can just copy that.

Sorry for dancing around the specifics.  I have an existing curved mesh and I want to apply a defined linear transformation to it resulting in a new mesh.  The way I set out to do this was to leave the original mesh alone and create a new mesh with the new transformed coordinates (but same connectivity).  This works fine for the linear meshes because I can directly create linear meshes with the transformed coordinates.  I'm not sure how to accomplish this for curved meshes.  Based on the transformation, I know where the high-order points should be located but I don't know how to specify them through the creation API.  Can I directly modify the high-order nodal points?  If I could do that, I can copy the mesh and then modify those points myself.
@MarkShephard thanks for the offer but I actually think my application is much simpler than actually generating curved meshes.   Also, it's a small world.  I've worked with PUMI before at my previous job... 😄

@tzanio It actually looks like I should just be able to use mfem::mesh::Transform as you mentioned.  I'll take a look and get back to you.

Okay thanks!  mfem::Mesh::Transform does what I need it to do and it works for my curved meshes.  Thanks!