SP controlpanel()?

So I'm doing the example from #590, and I can't do a controlpanel() on the SP.  Is there a way to do this?

Only Model implements .controlpanel() right now.

I'll make it so you can make that a Model

Hmm, but I think Models might still only work with .solve ...

Yea, that was the error I was getting.  Sorry, should have posted:
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-7-dcd8be9650e5> in <module>()
----> 1 m.controlpanel()

/Users/codykarcher/Dropbox (MIT)/Research/gpkit/gpkit/constraints/costed.pyc in controlpanel(self, *args, **kwargs)
     83         """
     84         from ..interactive.widgets import modelcontrolpanel
---> 85         return modelcontrolpanel(self, *args, **kwargs)

/Users/codykarcher/Dropbox (MIT)/Research/gpkit/gpkit/interactive/widgets.pyc in modelcontrolpanel(model, *args, **kwargs)
     94     """
     95
---> 96     sliders = model.interact(*args, **kwargs)
     97     sliderboxes = []
     98     for sl in sliders.children:

/Users/codykarcher/Dropbox (MIT)/Research/gpkit/gpkit/constraints/costed.pyc in interact(self, ranges, fn_of_sol, **solvekwargs)
     74         """
     75         from ..interactive.widgets import modelinteract
---> 76         return modelinteract(self, ranges, fn_of_sol, **solvekwargs)
     77
     78     def controlpanel(self, *args, **kwargs):

/Users/codykarcher/Dropbox (MIT)/Research/gpkit/gpkit/interactive/widgets.pyc in modelinteract(model, ranges, fn_of_sol, **solvekwargs)
     82             #     print(out)
     83
---> 84     resolve()
     85
     86     return widgets.interactive(resolve, **ranges)

/Users/codykarcher/Dropbox (MIT)/Research/gpkit/gpkit/interactive/widgets.pyc in resolve(**subs)
     65         try:
     66             try:
---> 67                 model.solve(**solvekwargs)
     68             except ValueError:
     69                 model.localsolve(**solvekwargs)

AttributeError: 'SignomialProgram' object has no attribute 'solve'

Okay, so now the following code works:
m = Model(objective, constraints)
sp = m.sp(require_signomials=False)
sp.localsolve('cvxopt', verbosity=1)
sp.controlpanel()

The control panel is more interesting off the bat if you set Re to 1e6.

@cjk12, @whoburg, these signomial programs that do not require signomials could probably use a catchier name: LocalPrograms? Which would imply you could create one with Model.lp()...

Did you push this?

oops, committed but did not push. Pushed now!

Ok, this is pretty cool...  Whatever nomenclature is fine with me.

can someone post the full working example?

from gpkit import VectorVariable, Variable, units, SignomialProgram
import gpkit
from gpkit.constraints.set import ConstraintSet

Re = Variable("Re", 1e6, "-", "Reynolds Number")
CL = Variable("C_L", "-", "Lift Coefficient")
CD = Variable("C_D", "-", "Drag Coefficient")

def xfoil(x0):
    return [CD >= 0.01]

class AeroModel(ConstraintSet):

    def as_gpconstr(self, x0):
        gpconstr = super(AeroModel, self).as_gpconstr(x0)
        if x0 and x0["Re"] >= 1e6:
            constraints = xfoil(x0)
        else:
            constraints = [CD >= 1. + CL**2]
        return ConstraintSet([gpconstr, constraints])

constraints = AeroModel([CL >= 1.0, Re >= 1e4*CL])

objective = CD

m = Model(objective, constraints)
sp = m.sp(require_signomials=False)
sp.localsolve('cvxopt', verbosity=1)
sp.controlpanel()

Thanks. @bqpd, yeah - I tend to think that ideally users would not need the lines
sp = m.sp(require_signomials=False)
sp.localsolve('cvxopt', verbosity=1)

and that Model.controlpanel() would just work. Might make sense to update the error logic that spits out No Signomials remained after substitution.
A more precise name for LocalProgramsmight be SequentialGP. Maybe we should rename CostedConstraintSet to SequentialGP? It's a model that can be solved as a sequence of GP's, and this includes the AeroModel above as well as SignomialProgram.

SequentialGP seems strictly less precise to me; we have a program whose constraints are a sequence of local approximations of GPs.

Closing this issue, will link in the PR thread.

yes, I think it's fine for localsolve to work for models that contain no signomials but that contain locally approximable constraints (e.g. for external solvers)

Hmm, okay! Great.

that sounded suspicious -- am I missing something? I guess the elephant in the room is whether localsolve should work for GPs?

Yup. See the PR for the added
    def as_posyslt1(self):
        raise ValueError("must be checked during solve")

which lets Cody's example Just Work.


Move scoped beans logic from core to support-rewrite

ScanScope and ExecutionScope were reset in Scan and ApplyCommand.
Clearing the scan scope was moved into RewriteProjectParser.
Clearing the ExecutionScope would require a central place in sbm-support-rewrite executin recipes to clear the scope there. This does currently not exist which splits the scope handling.
ScanScope is handled in sbm-support-rewrite while ExecutionScope is cleared in sbm-core, but only when using the ApplyCommand.

done in #896


I can't bundle using Webpack -> Can't resolve require('vscode')

VSCode Version: 1.47
OS Version: Windows 10

Steps to Reproduce:
1 - Follow these steps to bundle the extension with Webpack https://code.visualstudio.com/api/working-with-extensions/bundling-extension
2 - Every require('vscode') can't be resolved.

@AllanOricil you need this in your webpack.config.js file:
    externals: {
        'vscode': 'commonjs vscode' // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/
    },

@AllanOricil you need this in your webpack.config.js file:
    externals: {
        'vscode': 'commonjs vscode' // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/
    },

I think I had it, because I copied the webpack.config.js from the documentation. But let's try again. Thanks man.

@mjbvz  could you reopen. I did exactly as it says in the doc and the externals part of webpack is not working.

Sorry, I made a mistake :/
It was complaining about another lib.
Thanks guys!


Cant build it on Linux/Docker

Log:
error: failed to run custom build command for `libssh2-sys v0.1.39`
rust_1  | process didn't exit successfully: `/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/build-script-build` (exit code: 101)
rust_1  | --- stdout
rust_1  | running: "cmake" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/libssh2-sys-0.1.39/libssh2" "-DCRYPTO_BACKEND=OpenSSL" "-DBUILD_SHARED_LIBS=OFF" "-DENABLE_ZLIB_COMPRESSION=ON" "-DCMAKE_INSTALL_LIBDIR=lib" "-DBUILD_EXAMPLES=OFF" "-DBUILD_TESTING=OFF" "-DCMAKE_INSTALL_PREFIX=/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out" "-DCMAKE_C_FLAGS= -O0 -ffunction-sections -fdata-sections -m64 -fPIC" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -O0 -ffunction-sections -fdata-sections -m64 -fPIC" "-DCMAKE_CXX_COMPILER=/usr/bin/c++" "-DCMAKE_BUILD_TYPE=Release"
rust_1  | --
rust_1  | -- The following features have been enabled:
rust_1  |
rust_1  |  * Compression , using zlib for compression
rust_1  |  * diffie-hellman-group-exchange-sha1 , "new" diffie-hellman-group-exchange-sha1 method
rust_1  |
rust_1  | -- The following REQUIRED packages have been found:
rust_1  |
rust_1  |  * OpenSSL
rust_1  |  * ZLIB
rust_1  |
rust_1  | -- The following features have been disabled:
rust_1  |
rust_1  |  * Shared library , creating libssh2 as a shared library (.so/.dll)
rust_1  |  * "none" cipher
rust_1  |  * "none" MAC
rust_1  |  * Logging , Logging of execution with debug trace
rust_1  |
rust_1  | -- Configuring incomplete, errors occurred!
rust_1  | See also "/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeOutput.log".
rust_1  | See also "/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeError.log".
rust_1  |
rust_1  | --- stderr
rust_1  | CMake Error at /usr/share/cmake-3.0/Modules/FindOpenSSL.cmake:293 (list):
rust_1  |   list GET given empty list
rust_1  | Call Stack (most recent call first):
rust_1  |   src/CMakeLists.txt:63 (find_package)
rust_1  |
rust_1  |
rust_1  | CMake Error at /usr/share/cmake-3.0/Modules/FindOpenSSL.cmake:294 (list):
rust_1  |   list GET given empty list
rust_1  | Call Stack (most recent call first):
rust_1  |   src/CMakeLists.txt:63 (find_package)
rust_1  |
rust_1  |
rust_1  | CMake Error at /usr/share/cmake-3.0/Modules/FindOpenSSL.cmake:296 (list):
rust_1  |   list GET given empty list
rust_1  | Call Stack (most recent call first):
rust_1  |   src/CMakeLists.txt:63 (find_package)
rust_1  |
rust_1  |
rust_1  | CMake Error at /usr/share/cmake-3.0/Modules/FindOpenSSL.cmake:298 (list):
rust_1  |   list GET given empty list
rust_1  | Call Stack (most recent call first):
rust_1  |   src/CMakeLists.txt:63 (find_package)
rust_1  |
rust_1  |
rust_1  | thread 'main' panicked at '
rust_1  | command did not execute successfully, got: exit code: 1
rust_1  |
rust_1  | build script failed, must exit now', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.17/src/lib.rs:463
rust_1  | note: Run with `RUST_BACKTRACE=1` for a backtrace.

CMakeError.log:
Determining if files windows.h exist failed with the following output:
Change Dir: /rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTryCompileExec2248841779/fast"
/usr/bin/make -f CMakeFiles/cmTryCompileExec2248841779.dir/build.make CMakeFiles/cmTryCompileExec2248841779.dir/build
make[1]: Entering directory '/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp'
/usr/bin/cmake -E cmake_progress_report /rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp/CMakeFiles 1
Building C object CMakeFiles/cmTryCompileExec2248841779.dir/CheckIncludeFiles.c.o
/usr/bin/cc   -O0 -ffunction-sections -fdata-sections -m64 -fPIC -Wall    -o CMakeFiles/cmTryCompileExec2248841779.dir/CheckIncludeFiles.c.o   -c /rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp/CheckIncludeFiles.c
/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp/CheckIncludeFiles.c:2:21: fatal error: windows.h: No such file or directory
 #include <windows.h>
                     ^
compilation terminated.
CMakeFiles/cmTryCompileExec2248841779.dir/build.make:57: recipe for target 'CMakeFiles/cmTryCompileExec2248841779.dir/CheckIncludeFiles.c.o' failed
make[1]: *** [CMakeFiles/cmTryCompileExec2248841779.dir/CheckIncludeFiles.c.o] Error 1
make[1]: Leaving directory '/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp'
Makefile:118: recipe for target 'cmTryCompileExec2248841779/fast' failed
make: *** [cmTryCompileExec2248841779/fast] Error 2

Source:
/* */
#include <windows.h>

int main(){return 0;}

Determining if files ws2tcpip.h exist failed with the following output:
Change Dir: /rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTryCompileExec363432699/fast"
/usr/bin/make -f CMakeFiles/cmTryCompileExec363432699.dir/build.make CMakeFiles/cmTryCompileExec363432699.dir/build
make[1]: Entering directory '/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp'
/usr/bin/cmake -E cmake_progress_report /rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp/CMakeFiles 1
Building C object CMakeFiles/cmTryCompileExec363432699.dir/CheckIncludeFiles.c.o
/usr/bin/cc   -O0 -ffunction-sections -fdata-sections -m64 -fPIC -Wall    -o CMakeFiles/cmTryCompileExec363432699.dir/CheckIncludeFiles.c.o   -c /rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp/CheckIncludeFiles.c
/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp/CheckIncludeFiles.c:2:22: fatal error: ws2tcpip.h: No such file or directory
 #include <ws2tcpip.h>
                      ^
compilation terminated.
CMakeFiles/cmTryCompileExec363432699.dir/build.make:57: recipe for target 'CMakeFiles/cmTryCompileExec363432699.dir/CheckIncludeFiles.c.o' failed
make[1]: Leaving directory '/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp'
make[1]: *** [CMakeFiles/cmTryCompileExec363432699.dir/CheckIncludeFiles.c.o] Error 1
Makefile:118: recipe for target 'cmTryCompileExec363432699/fast' failed
make: *** [cmTryCompileExec363432699/fast] Error 2

Source:
/* */
#include <ws2tcpip.h>

int main(){return 0;}

Determining if files winsock2.h exist failed with the following output:
Change Dir: /rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTryCompileExec264664935/fast"
/usr/bin/make -f CMakeFiles/cmTryCompileExec264664935.dir/build.make CMakeFiles/cmTryCompileExec264664935.dir/build
make[1]: Entering directory '/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp'
/usr/bin/cmake -E cmake_progress_report /rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp/CMakeFiles 1
Building C object CMakeFiles/cmTryCompileExec264664935.dir/CheckIncludeFiles.c.o
/usr/bin/cc   -O0 -ffunction-sections -fdata-sections -m64 -fPIC -Wall    -o CMakeFiles/cmTryCompileExec264664935.dir/CheckIncludeFiles.c.o   -c /rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp/CheckIncludeFiles.c
/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp/CheckIncludeFiles.c:2:22: fatal error: winsock2.h: No such file or directory
 #include <winsock2.h>
                      ^
compilation terminated.
CMakeFiles/cmTryCompileExec264664935.dir/build.make:57: recipe for target 'CMakeFiles/cmTryCompileExec264664935.dir/CheckIncludeFiles.c.o' failed
make[1]: Leaving directory '/rust/app/native/target/release/build/libssh2-sys-f3e6ccc6379d9b0b/out/build/CMakeFiles/CMakeTmp'
make[1]: *** [CMakeFiles/cmTryCompileExec264664935.dir/CheckIncludeFiles.c.o] Error 1
Makefile:118: recipe for target 'cmTryCompileExec264664935/fast' failed
make: *** [cmTryCompileExec264664935/fast] Error 2

Source:
/* */
#include <winsock2.h>

int main(){return 0;}

dockerfile:
FROM scorpil/rust:nightly
# Using Debian, as root
RUN apt-get install -y build-essential
RUN apt-get install -y cmake
RUN apt-get install -y libssl-dev  libssh2-1-dev

This looks like there may be some problem with OpenSSL CMake files installed on the system?

@alexcrichton any advice?
maybe you could try it on a docker container?
or could you maybe list me the needed dependencies with version?

Sorry I'm a bit overloaded at the moment without much time. It may be worth trying to just build libssh2 from source in that docker image to see if it works though. That's basically all the build script is doing and cmake appears to be choking on some system-installed files, but I'm not sure if that's relevant or not.
Unfortunately I don't really know a lot about cmake either :(

@gallexme, I ran into this issue and installing pkg-config fixed it for me.

I've removed cmake in #94, so this should in theory be fixed now.


Include tests in PyPI tarball

This is useful for downstream distributions to test if the package works correctly with their build recipe. Also, it provides a way to test if the dependencies as they are packaged by the distribution are compatible.

Coverage remained the same at ?% when pulling f25d22fe8868eb434db9e1c4726b292c375da3e4 on dotlambda:patch-1 into 2e3f0cff9a5d32f9ef4a4a41b4773ff43fd1726f on WoLpH:develop.

I guess that could be useful :)
I've got to fix the tests first (some error on my side) and I'll put out a new release after


Add historical usage to AZ report

I'm torn what's better, either add the atribute to the API declaration or wrap the historical_usage in another struct on the API side. I think this approach is cleaner.
If this approach is agreeable, then I will push a new tag v1.11.3 and update the vendor on the limes repo.

True, I changed it to the corresponding min and max values. Please have a look if the wording of the fields is acceptable.


Feature Request: Wiki command

Essentially a command that works like the Urban Dictionary except that it brings up the first Wikipedia
For example !wiki Thomas Edision would bring up a link to Thomas Edision's wikipedia page

This repo is for the library that connects to Discord and implements the API.
This request should actually be posted over here: https://github.com/vsTerminus/Goose
I'll leave it for you to post so you get the notifications.


Not receiving Telegram

Is there a way to diagnose why I'm not receiving Telegram messages?  I just setup a Telegram account and followed the instructions here to get a bot token and private chat ID.  I used the test URL to verify that it's working and did receive the test message.  I then added the container variables for the token and chat ID received from following these instructions.  Upon container restart, I receive an email alert but no Telegram alert.
https://gist.github.com/nafiesl/4ad622f344cd1dc3bb1ecbe468ff9f8a

I just found the manual run command in a closed issue (/usr/local/bin/monit2telegram.sh) which did work.  I'm just puzzled why I didn't get the notification when I started up the container and got the first couple of check-ins like I did via e-mail.  I would have assumed I'd get the same notifications through both email and telegram, more or less at the same time.

Hi, this is a limitation in Monit. When the Monit service starts (on container restart) it send an email since it can only send emails for the daemon itself - there is no way to run a script on start up. This is described here - https://mmonit.com/monit/documentation/monit.html#ALERT-MESSAGES the 'set alert' option. The script you have found is only ever executed when the service itself - https://github.com/clickbg/homekit-monitord/blob/main/root/etc/monit/conf.d/homekit-active-hub-state.conf is either down or up but not on start up. You can fix that can put something like this:
/usr/local/bin/sendtelegram.sh -c /etc/telegramrc -m "HomeKit-monitord is starting up"
At the end of https://github.com/clickbg/homekit-monitord/blob/main/root/docker-entrypoint.d/99-homekit-monitoring-config.sh after:
/etc/init.d/monit restart
I could possibly make that an additional option in the compose file if you prefer? Something like ADDON_SCRIPTS="" that gets executed on startup?

By the time I woke up and saw this, my Watchtower had already upgraded it and I do see the startup alert in Telegram.  Thanks so much!!!


fix: Delegate zip validation to JSZip

This is an attempt to fix the issue of validating zip file(https://github.com/atharvakadlag/excalisave/issues/4#issuecomment-2162929558).
Seems there are differences on mimetype across differentes browsers or OSs,
remove custom validation of mimetype and use JSZip to open the file, it wil throw error if file is not a valid zip.

will release the updated extensions soon


Update circleci tests to check for warnings when building docs

This PR adds a CI test to check the documentation builds without warnings to catch when changes would introduce new errors in the documentation.   It also moves the linting check higher in the order of commands so linting errors will be caught quickly.

This PR depends on the next release of IPython so it won't be ready to merge until then.

Codecov Report

Merging #292 into master will decrease coverage by 0.57%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #292      +/-   ##
==========================================
- Coverage   95.02%   94.44%   -0.58%
==========================================
  Files          71       71
  Lines        7620     7711      +91
==========================================
+ Hits         7241     7283      +42
- Misses        379      428      +49

Impacted Files
Coverage Δ

featuretools/primitives/transform_primitive.py
97.78% <ø> (ø)
:arrow_up:

...turetools/primitives/aggregation_primitive_base.py
95.6% <ø> (ø)
:arrow_up:

featuretools/utils/gen_utils.py
70.58% <0%> (-15.13%)
:arrow_down:

featuretools/entityset/relationship.py
82.6% <0%> (-12.63%)
:arrow_down:

featuretools/utils/wrangle.py
67.88% <0%> (-11.89%)
:arrow_down:

featuretools/variable_types/variable.py
92.3% <0%> (-4.64%)
:arrow_down:

featuretools/entityset/entityset.py
93.8% <0%> (-1.19%)
:arrow_down:

featuretools/entityset/entity.py
93.45% <0%> (-0.49%)
:arrow_down:

...uretools/tests/entityset_tests/test_es_metadata.py
96.25% <0%> (-0.46%)
:arrow_down:

featuretools/synthesis/deep_feature_synthesis.py
93.29% <0%> (-0.27%)
:arrow_down:

... and 5 more

Continue to review full report at Codecov.

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

Looks good to me. Issue with checks, but the tests are passing if I go directly to circle


Update allcourses.json

why you are making so many pr at once for single details ? add all details in one pr only (in readme as well as in allcourses.json


ERR! Something went wrong while linking. Error: Cannot read property 'files' of null

$ react-native link react-native-linear-gradient
Scanning folders for symlinks in /app/node_modules (35ms)
rnpm-install info Linking react-native-linear-gradient ios dependency
rnpm-install info Platform 'ios' module react-native-linear-gradient has been successfully linked
rnpm-install info Linking react-native-linear-gradient android dependency
rnpm-install info Platform 'android' module react-native-linear-gradient has been successfully linked
rnpm-install info Linking assets to ios project
rnpm-install WARN ERRGROUP Group 'Resources' does not exist in your Xcode project. We have created it automatically for you.
rnpm-install ERR! Something went wrong while linking. Error: Cannot read property 'files' of null
Please file an issue here: https://github.com/facebook/react-native/issues

Hey! I'm closing this since this is a stale issue. If you believe it's still relevant to fix, post a comment and I'll reopen.


Custom socket options for lib

It will can set default host, port in remote-redux-devtools-on-debugger CLI.

Thanks! I will also add today the settings page, and then will publish it to npm.


Always save current position if payload is numeric value

Currently if payload is even with var state_open or state_close HA save only position open or close without saving current_position.
Without current_position value, slider is hidden from HA frontend.
I changed this condition, so if payload is numeric, current_position will be always saved even if cover is fully open or closed.
Checklist:

[ x ] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass

@MartinHjelmare can you check it and if ok merge?

Done.

What do you think about my question?

if it is numeric it is better payload being saved as than HA UI allow to change cover position with slider.
Documentation and warning is clear about that:
Payload is not True, False, or integer (0-100): %s", payload)

One thing I can think of, which might be a problem if there is somebody who want's for some reason inverted numbers.
For now it is only: Open > 0, Close == 0.
It's not gonna work if somebody wants Close == 100, Open < 100.

I'm not sure we understand each other. The problem I'm seeing with the new logic, is that if a user wants to use payload 0 for closed state and payload 1 for open state, those will now fall only into the third case as numeric and update the position. State will still match the 0 and 1 payloads but the slider always range between 0 - 100 so then it will look weird with 1 being fully opened.
Do you see what I'm thinking?

I understand you. I think this is not according to all docs, that cover position should be represented as percentage.
Here is some discussion about inverted option: https://github.com/stefanbode/Sonoff-Tasmota/issues/53
Maybe safer would be something like this:
if payload == self._state_open:
  self._state = False
elif payload == self._state_closed:
  self._state = True
if payload.isnumeric() and 0 <= int(payload) <= 100:
  self._position = int(payload)

From the cover base entity class:
@property
    def current_cover_position(self):
        """Return current position of cover.
        None is unknown, 0 is closed, 100 is fully open.
        """
        pass

The later suggestion would be a breaking change for users that only send a numeric payload and rely on existing logic that says that 0 is closed and above 0 is open.

So let's leave like it is now or maybe you'd prefer something like this:
payload_saved = False
if payload == self._state_open:
  self._state = False
  payload_saved = True
elif payload == self._state_closed:
  self._state = True
  payload_saved = True
if payload.isnumeric() and 0 <= int(payload) <= 100:
  self._position = int(payload)
  if not payload_saved:
     if int(payload) > 0:
        self._state = False
     else:
        self._state = True

Ok, I tested it and it doesn't break anything if user set such option:
  state_open: "1"
  state_closed: "0"

But I don't like it... because it is only workaround.
If somebody has inverted cover he has to click the other way in web ui in slider like this:
  state_open: "0"
  state_closed: "50"

I changed this function once again.
I assumed that position value should be integer between with boundaries between open/close value.
Ended up with function like below.
I can push it if you think that it is good idea.
With below function we calculate percentage position if open != 100 and close != 0 and than we can handle inverted situation (if close is higher number than open).
   @callback
        def state_message_received(topic, payload, qos):
            """Handle new MQTT state messages."""
            if self._template is not None:
                payload = self._template.async_render_with_possible_json_value(
                    payload)
            payload_saved = False
            numeric_states = (payload.isnumeric() and
                              self._state_open.isnumeric() and
                              self._state_closed.isnumeric())

            if payload == self._state_open:
                self._state = False
                payload_saved = True
            elif payload == self._state_closed:
                self._state = True
                payload_saved = True
            if numeric_states:
                open_state = int(self._state_open)
                closed_state = int(self._state_closed)
                payload = int(payload)
                if ((open_state <= payload <= closed_state) or
                   (open_state >= payload >= closed_state)):
                    if (open_state == 100 and closed_state == 0):
                        percent_payload = payload
                    else:
                        """Formula:((value - min) / (max - min)) * 100 """
                        percent_payload = (abs(((payload - open_state)
                                           / (closed_state - open_state))*100))
                    self._position = percent_payload
                    if not payload_saved:
                        if percent_payload > 0:
                            self._state = False
                        else:
                            self._state = True
                    payload_saved = True
            if not payload_saved:
                if numeric_states:
                    if (open_state < closed_state):
                        _LOGGER.warning(
                            "Payload is not integer between (%s - %s): %s",
                            self._state_closed, self._state_open, payload)
                    elif (open_state == closed_state):
                        _LOGGER.warning(
                            "Open and closed values cannot be equal (%s - %s)",
                            self._state_open, self._state_closed)
                    else:
                        _LOGGER.warning(
                            "Payload is not integer between (%s - %s): %s",
                            self._state_open, self._state_closed, payload)
                else:
                    _LOGGER.warning(
                        "Payload is not True, False or Integer: %s", payload)
                return
            self.async_schedule_update_ha_state()

Hope it makes sense for you.

How does the slider react when open and closed states are 1 and 0?

Position close:

Position open:

But clicking slider sends value between 0 - 100.
What I'm thinking is to change function async def async_set_cover_position
and calculate proper integer .position
eg if somebody have 20 for open and 0 for close and click in slider for 50, it should send 10.
Am I right about that?

@MartinHjelmare I made changes as I was thinking yesterday.
Now it is the same logic for tilt (it was already done before) and positioning (both reading and setting).
So if I have
open: 1
close: 0

and I click on slider 41% it will send close command as closest integer is 0 etc.
If your initial states for open/close aren't numeric it will send percentage number between 0 - 100% like it was before.
For any other number it will find_in_range_from_percent and send proper value

What do you mean by both?
Topic is handling only position/payload and we are interpreting this position to state.
Would you like to have something like this below?
###VERSION 1
- platform: mqtt
  name: "TEST"
  command_topic: "cmnd/cover_test/backlog"
  state_topic: "stat/cover_test/SHUTTER1"
  availability_topic: "tele/cover_test/LWT"
  set_position_topic: "cmnd/cover_test/shutterposition"
  payload_open: "shutteropen"
  payload_close: "shutterclose"
  payload_stop: "shutterstop"
  state_open: "100" //or OPEN  <----
  state_closed: "0" // or CLOSE <------
  payload_open: "100" <-------
  payload_closed: "0" <--------
  payload_available: "Online"
  payload_not_available: "Offline"
  optimistic: false

vs
###VERSION 2
- platform: mqtt
  name: "TEST"
  command_topic: "cmnd/cover_test/backlog"
  state_topic: "stat/cover_test/SHUTTER1"
  position_topic: "stat/cover_test/SHUTTER1POSTITION" <--------
  availability_topic: "tele/cover_test/LWT"
  set_position_topic: "cmnd/cover_test/shutterposition"
  payload_open: "shutteropen"
  payload_close: "shutterclose"
  payload_stop: "shutterstop"
  state_open: "100"  //or OPEN <--------
  state_closed: "0" // or CLOSE <--------
  payload_open: 100 <--------
  payload_closed: 0 <--------
  payload_available: "Online"
  payload_not_available: "Offline"
  optimistic: false

one advantage of such idea, would be that we can check if somebody is giving us integer as payload_open and payload_closed.
Can you explain why do you think we should make such change?

Inspecting if a payload is numeric and changing behavior on that is bound to be confusing to users and will lead to unexpected behavior. If we want to allow people to set current positions, we should prefer a position_topic

Can you help me out here with this function (below is original version).
   def find_percentage_in_range(self, position):
        """Find the 0-100% value within the specified range."""
        # the range of motion as defined by the min max values
        tilt_range = self._tilt_max - self._tilt_min
        # offset to be zero based
        offset_position = position - self._tilt_min
        # the percentage value within the range
        position_percentage = float(offset_position) / tilt_range * 100.0
        if self._tilt_invert:
            return 100 - position_percentage
        return position_percentage

And now my understanding of this:

tilt_min - 0, tilt_max - 100, inverted - false, position - 40, it should return 40
tilt_min - 100, tilt_max - 0, inverted - true, position - 40, I think it should return percentage 60, but this function is substracting 100-position_percentage, so it would return 40.

Which way is correct, my understanding of this position_percentage or what this function calculating?

We need to make sure with any option that it serves a single purpose and one purpose only.
We should also make sure that options don't conflict with one another, and if they do, they should not be allowed to be used together.
So if you want to support a current position payload, first off, let's make sure PR is limited to just that functionality. Then to add support for a current_position topic, it is not allowed to be used together with the state topic. It's one or the other. Then the value of current_position topic is what should be returned from the current_cover_position property. No checks, besides conversion to a number, no transformations.

@balloob I can do this, but if I understand you right, it will break all existing mqtt covers implementation, eg. Tasmota forks etc. By break I mean usage of get_position.
I made it this way that we can just use state_topic same time as position_topic.
If you confirm that I understand you correctly, I'll try to do that tomorrow after work.
Second, what do you think about my last question find_percentage_in_range? I don't have tilt so I'm not sure, but for me this inverted condition is messed up.

This PR needs to focus, so tilt is out of scope for this PR.
What do you mean with subscribe to same topic for state and position? The user should either configure a position or a state topic, not both, as the state can be derived from the position itself?

This PR needs to focus, so tilt is out of scope for this PR.
What do you mean with subscribe to same topic for state and position? The user should either configure a position or a state topic, not both, as the state can be derived from the position itself?

All the time I'm talking about backward compability, because I imagine that in future developers of mqtt covers like Tasmota can change it behaviours and send such mqtt topics:
pub state-topic -m OPEN
pub position-topic -m 60

But for now we have at least 3 things to consider:

If user has implementation that has state_topic:

state_topic: 'state-topic'
state_open: 100
state_closed: 0

It would be easiest for user to just add:
state_topic: 'state-topic'
position_topic: 'state-topic'
state_open: 100
state_closed: 0
position_open: 100
position_closed: 0

And then in mqtt cover we should check if state_topic and position_topic is the same and then set the state according to position. It should be done by get_position function.
And this would follow your idea to configure either state or position topic as one could be derived fron another.

If user has position <1-99> and OPEN/CLOSE states, but still by the shared topic...

state_topic: 'state-topic'
position_topic: 'state-topic'
state_open: OPEN
state_closed: CLOSE
position_open: 100
position_closed: 0

I imagine that in this situation get_state function should set position if state_open == payload

Above situations should have inverted (open-0, close-100) options (which is kind of transformation value/percentage ) and allow user to have non percentage integers.
If we don't do that slider in HA UI will be working different for regular/inverted covers (left will close for regular and left will open for inverted).

Hope you understand what I'm talking about.

I think I understand and I disagree. A topic should have a single purpose. Either receiving OPEN/CLOSE or it is receiving a number. We should allow the user to configure either a position topic or a state topic but not both.

@balloob I think I did it the way you see it. From tomorrow I'll be testing it in my house.

Looks good. Ok to merge when conflicts resolved.

Can be merged when build passes.

🎉


Release v2.2.x

I suggest introducing the following 3 main features:
1. First round of preparations for Astroport migration (#80)

Update collector to be able to change the MIR/UST pair (since it will be the first pool to be migrated)
Add a LP token deprecation mechanism to staking contract

2. Allow governance voters to execute migrations with a new admin_manager contract (#81)

New admin manager contract to execute contract migrations
Admin manager contract integrated with governance

Ability to have different poll types with different parameters
Fast track polls to execute emergency migrations

3. Integrate with the new oracle contracts (#81)
Mirror will be using a new set of oracle contracts TeFi Oracle contracts that will allow easier integrations with different price sources such as Band Protocol or Chainlink.

Whitelist process updated to work with the new oracle contracts
No longer rely on feeder address to migrate, revoke or trigger IPO events
Now preIPO assets need to specify a trigger address authorized to execute the IPO trigger on mint contract
Collateral oracle and other price dependent contracts now query prices form the new oracle using the timeframe constrain feature

Migrations
Feature 1 will be added before 2 and 3, that is the reason why staking contract still depends on deprecated oracle.
Since Astroport and Terraswap share the relevant interfaces, no package update yet.
Another release will be needed when all mAsset pools are migrated to Astroport, to update the dependency as well as the whitelist process.

Tag 2.2.0b to be deployed on Testnet:

Collector (use Astroport pair to swap MIR)
Staking (Add deprecation feature and trigger MIR pair deprecation)


Checklist for 4.0.0

[ ] Eliminate ability to refer to libraries with --path: https://github.com/trailofbits/dylint/blob/4336f4e3832dde2a38fc32cdc2a5e8a7fdcff25e/dylint/src/lib.rs#L81

Oops, I accidentally unpinned this thinking I was dismissing a modal notification. Sorry for the churn, I just re-pinned it 😅


fix(design-system): add missing export for Avatar component

I wonder if this will fix the type issue?

It did not.

Yeah it still has that weird package folder structure.


[#3340] Deployment ARM templates update (template-with-preexisting-rg) - samples/csharp_dotnetcore

Addresses # 3340
Proposed Changes
This PR updates the deployment templates (template-with-preexisting-rg.json) of the bots inside samples/csharp_dotnetcore folder to use the new Azure resource Azure Bot instead of the Bot Channel Registration.
Detailed Changes
Updated the ARM templates of the following samples:

02.echo-bot
03.welcome-user
05.multi-turn-prompt
06.using-cards
07.using-adaptive-cards
08.suggested-actions
11.qnamaker
13.core-bot
15.handling-attachments
16.proactive-messages
17.multilingual-bot
18.bot-authentication
19.custom-dialogs
21.corebot-app-insights
23.facebook-events
24.bot-authentication-msgraph
25.message-reaction
46.teams-auth
47.inspection
49.qnamaker-all-features
55.teams-link-unfurling
57.teams-conversation-bot
58.teams-start-new-thread-in-channel
60.slack-adapter
61.facebook-adapter
62.webex-adapter
63.twilio-adapter
80.skills-simple-bot-to-bot/EchoSkillBot
80.skills-simple-bot-to-bot/SimpleRootBot
81.skills-skilldialog/DialogRootBot
81.skills-skilldialog/DialogSkillBot
adaptive-dialog/09.integrating-composer-dialogs
language-generation/05.a.multi-turn-prompt-with-language-fallback
language-generation/05.multi-turn-prompt
language-generation/06.using-cards
language-generation/13.core-bot
20.extending-with-custom-functions

Testing
The following images show two bot samples working on azure, the first being the 55.teams-link-unfurling and the second the 02.echo-bot.

Promoted to MS # 3416


SwiftUI integration / support

Just asking the question that many of us may have - any tips/hints/projections of whether this library can be usable in SwiftUI in any way? For example, SwiftUI leverages UIViewRepresentable, custom ViewModifiers and other constructs that might provide a path to integration. Just curious to know...

The programming pattern in SwiftUI is quite different from the way we use UIKit/Storyboard etc. I haven't found a way to put them together yet, I think the whole iOS community needs to figure out how the transition going.

I don't think we should make IBAnimatable supports SwiftUI since as said @JakeLin, the pattern is really different. If there's a need of an equivalent of IBAnimatable I think it should be a standalone library.


Support -bom in encoding option and detect BOM

The characters the BOM is decoded as are not displayed and can be edited so  BOM is detected when creating a buffer in this pull request. 2 options will have to be checked if valid when set if another option is added so the encoding option is changed. BOM is read and written if -bom is included at the end of the value of encoding.
Setting encoding to UTF-32 is not supported so UTF-32 is not detected. utfbom package is added in go.mod and BOM is detected using utfbom. This pull request has not been tested much with files with BOM and no BOM but BOM is usually supported in programs where files in other encodings can be loaded.
Closes #3369

The points below have to be improved but I do not know when I will have time, so I will convert this pull request to a draft:

naming convention and code style is different with other parts of code
behavior in 212299ad9fd2608b18b781b581e850c9ee2d5213 is weird
pull request description is not easy to understand


Lazy Load Multiple Translation Files

Hi @CodeAndWeb
I just wanted to say a huge thanks for stepping in to maintain ngx-translate. I really appreciate all the time and effort you’re putting into keeping this library going!
Question:
As my project grows and the translation files become larger, I was wondering if there’s an option to load multiple translation files. I came across this blog<EMAIL_ADDRESS>I’ve successfully managed to load multiple files using this loader. However, the issue is that all files are eagerly loaded. Is there a way to load them dynamically/lazy, for instance, only when a specific route is accessed?

Thanks ;-)
I am closing this one for now - it's practically identical with https://github.com/ngx-translate/core/issues/1501


[Feature Request] Add an option for ignoring migration if the table or column already exists in database/schema

Why this feature is required (specific use-cases will be appreciated)?
Some cases the database is setted by backup files (.sql, for example), but case the tables was created by command sql, the migrations willn't executed.
Have you tried any other work arounds?
Yes, searching for tools, but without success
Are you willing to work on it with little guidance?
Yes, I have the feature implemented in my machine.

Simply use https://adonisjs.com/docs/4.0/migrations#_createifnotexists


Installation fails with Automatic script

Hey team,
Thanks for great project. Unfortunately installation is failing for me.
Can you please review it and let me know if any dependency is missing here?
both docker and docker-compose is version 2+
root@test:~# docker compose version
Docker Compose version v2.14.1
root@test:~# docker-compose version
Docker Compose version v2.15.1
here is the error message from the installation script
21:07:24.891 [info] == Running<PHONE_NUMBER>0654 FzHttp.Repo.Migrations.FixSitesNullableFields.change/0 forward
** (ArgumentError) construction of binary failed: segment 1 of type 'binary': expected a binary but got: nil
/app/lib/fz_http-0.7.2/priv/repo/migrations/20221224210654_fix_sites_nullable_fields.exs:14: FzHttp.Repo.Migrations.FixSitesNullableFields.change/0

full script

This is a duplicate of #1314, please keep an eye on that one so you can be notified once we figure out the fix for this.


Add bindings to StrictMode

https://github.com/ml-in-barcelona/jsoo-react/issues/82

Thanks @benschinn!


Polygon/grid intersection

Add an intersections method to handle polygon intersections with the grid.
A Polygon is defined by one or more LinearRings:

a LinearRing is a LineString or Vector where the first and last coordinate are the same
the first LinearRing of a Polygon defines its outer boundary
subsequent LinearRings define holes. Initial implementation can ignore holes if that makes it much easier.

Splitting a polygon along grid lines might result in:

the original polygon, if it lies entirely within a single grid cell
some irregular polygons, with straight edges/corners where they meet the grid lines
some rectangular polygons, matching the bounds of grid cells, where the polygon contains one or more whole cells

Implementation idea, follow the scanline rendering algorithm, but output polygons rather than filling in raster values:

split LinearRing into list of edges Vector<Line2>
split all these edges on the grid (Grid::findIntersections(Line2))
sort edges by min y-coordinate
keep a reference to the "current" row (scanline) of cells, defined by min y-coordinate
maintain list of active edges
start with the first edge, add it to active edges, set the "current" row to be floor(min-y) to get the bottom of the cell
add edges to active as long as they have min-y less than the next row's y-coordinate

when an edge becomes active, it either

starts a new polygon piece (if neither endpoint is shared with an active edge within the same cell)
joins a polygon piece

add cell edges to polygon pieces where endpoints intersect the grid
to close out a row, add horizontal edges; these should be copied to initialise active edges for the next loop around

repeat for each row until all edges are dealt with

Comments:

splitting all the edges on the grid up front seems to simplify things, as all the edges are strictly within grid cells for the rest of the routine
for the polygon construction bit at the core of the routine: do we need to retain the original order of Line2s to piece back together a more complicated polygon piece?
We may need to include parts of grid cell lines to complete the pieces. It seems like this could be handled by "top of the cell" and "bottom of the cell" sections for special cases, including making sure we include all "entirely-interior" cells that don't intersect with the polygon boundary but are contained.
Might be better to split LinearRing > Vector rather than dealing with Line2, where the LineString endpoints by construction intersect cell boundaries
Could think about shooting rays along the grid lines (horizontal and vertical): we start outside the polygon; when we hit the first polygon boundary edge (or any odd edge) we are inside, when we hit the next (even) edge we are outside again...

As discussed - with the ray-shooting idea, we could assemble all the pieces of edges by considering a ray going through the polygon along each grid line, then connect them together into small polygons (one or more per cell) to output.
Might be useful to ensure that the polygon boundary is counter-clockwise (and that holes go clockwise, if we allow them) - then connecting edge-pieces into polygons should be unambiguous, following the same counter-clockwise order.

Prototype Python script for ray-shooting approach is proposed in #25
Draft C++ implementation is proposed in #26

Closed by #25 and #26


Movie not showing up in the addon

Mad Max: Fury Road is not returning any results.
Just wanted to add some other movies (I confirmed that they are showing in the old EN addon):

Three Colors: Blue (1993)
Willy Wonka and the Chocolate Factory (1973)
WALL-E (2008)
Mission: Impossible - Dead Reckoning Part One (2023)
The Lord of the Rings: The Fellowship of the Ring
Once Upon a Time in Hollywood

An overview of issues found with these titles:

Three Colors: Blue (1993)

Sanitization issue of  : character.

Willy Wonka and the Chocolate Factory (1973)

Mismatch between & symbol and the literal word and

WALL-E (2008)

The actual title contains an annoying dot: WALL·E. Should be converted to a -, but we convert that to a space. Won't fix this because easynews doesn't provide this title anyways. If needed, try the search catalog.

Mission: Impossible - Dead Reckoning Part One (2023)

Cinemeta names this title just 'dead reckoning', making it impossible (pun not intended) to match properly because we match movies strictly by their full title. Won't fix this either, use the search catalog to watch this content.

The Lord of the Rings: The Fellowship of the Ring

Sanitization issue of  : character.

Once Upon a Time in Hollywood

Cinemeta provides this title as Once Upon a Time ... in Hollywood. So this is a sanitization issue with the . character.


Execute commands after a synchronization

Possibility to execute an array of console commands after a synchronization.
./vendor/bin/phpsu sync production local
-> rsync ... -> script.sh updateDatabase -> script2.sh clearCache

Currently we would recommend the following: ./vendor/bin/phpsu sync production local && script.sh updateDatabase && script2.sh clearCache


Run the guide tests on two separate workers

Waiting for the actions to kick in to check it is quicker on CI


CICD Branches

Do you have an example of how to get this working? We are using different branch names to 'main' so would like to use these settings. Can you also confirm which files these settings should be added.
New Repo setting: CICDPushBranches can be specified as an array of branches, which triggers a CI/CD workflow on commit. Default is main', release/, feature/
New Repo setting: CICDPullRequestBranches can be specified as an array of branches, which triggers a CI/CD workflow on pull request. Default is main
Thank you

These settings goes into
.github\AL-Go-Settings.json
and then you run Update AL-Go System Files, which will modify the yaml files for you.
I am not sure that AL-Go for GitHub will work with the main repo called anything but main.
I have a work item in the backlog to ensure that this works, but for now - main for the main repo is the safest bet.


Fix code scanning alert - Database query built from user-controlled sources

Tracking issue for:

[x] https://github.com/TimeCrunch101/Homelab-Dashboard/security/code-scanning/2

resolved


Toggle logging of certain fields

Is there currently a way to enable/disable (toggling) logging of certain fields? For example, if I didn't want to capture the logging of response field. Would that be possible currently? TIA.

@whippersnapper As far as I know there isn't a way to set that via a settings file. However, I can off to strip out the response data via Django model's pre_save signal.

@whippersnapper The best suggestion for this kind of approach is to use a pre_save signal, or make a PR that acts as a pre-save-processor before the actual save.

@avelis Thanks for the fast feedback.


Create parallel way

Button and/or shortcut for creating a parallel way, if a way is selected. In Potlatch that function is available via keyboard shortcut P.

The duplicate operation (⌘C/⌘V) makes it slightly easier to divide a dual carriageway, but a true parallel way feature would still be a major improvement, because it would reduce the need to manually tweak curves.

If someone decides to work on this, check out the workflow in JOSM.

It is especially useful how JOSM shows the length of the offset in the status bar area when the lateral offset is a known measurement. In the example above, the target offset is 7.5m.

The roundabout case in https://github.com/openstreetmap/iD/issues/1931#issuecomment-313977144 is possible in iD as of #8012:

Select the roundabout.
Clone the roundabout (⌘C).
Scale the cloned roundabout (⇧−).
Retag the cloned roundabout as a curb or grass.

This issue is being tracked in #2987.


SOLR-15274: QueryElevationComponent, no data dir

https://issues.apache.org/jira/browse/SOLR-15274

Remove support for a config in a data dir. Obsolete.
Remove support for "versioned" (suffix) config
Add auto config reloading after a commit (previously was only for the data dir).  SolrCloud not supported.

TODO Solr Ref Guide

The getConfigVersion method ought to move to something similar on SolrResourceLoader.  SRL is one of Solr's major APIs (albeit internal) so changing it deserves a separate issue, which I'll do.


Consider rebasing on top of Xamarin.Forms AppCompat backend

1.5.1-pre1 now has an AppCompat backend. Please consider porting your work over to that.

Awesome! I'll take a look as that is fantastic news!

Looks like Material is supported in Xamarin Forms 2. At least for the toolbar and tabbar.

There's a few things that are still missing. This project is great, I still use it on every single Android app I make.


[Feature] Map HTTP error codes to PowerShell's ErrorCategory Enum.

HTTP/transport error codes should be mapped to PowerShell's ErrorCategory Enum to make it easier for customers to handle errors appropriately.
For example, running Get-MgUser which is generated using AutoREST.PowerShell:
Get-MgUser -UserId (New-Guid).Guid -ErrorVariable lookupError
$lookupError.CategoryInfo

The command will fail with a 404 Not Found, but the error category shows InvalidOperation instead of ObjectNotFound.
➜ $lookupError.CategoryInfo

Category   : InvalidOperation
Activity   : Get-MgUser_Get1
Reason     : RestException`1
TargetName : { UserId = 5c8ee8a2-3c61-4c24-8eee-886e567366b7, ConsistencyLevel = , Property = , ExpandProperty =  }
TargetType : <>f__AnonymousType52`4

Related to https://github.com/microsoftgraph/msgraph-sdk-powershell/issues/274

Let's discuss this request offline and we need to involve PowerShell team's opinion.


[ZEPPELIN-1255] Add cast to string in z.show() for Pandas DataFrame

What is this PR for?
Casting data types in Pandas DataFrame to string in z.show()
What type of PR is it?
Bug Fix
What is the Jira issue?
ZEPPELIN-1255
How should this be tested?
%python

import pandas as pd

df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)
df.columns=[1, 2, 3, 'PetalWidth', 'Name']
z.show(df)

%python.sql

SELECT * FROM df  LIMIT 10

Questions:

Does the licenses files need update? No
Is there breaking changes for older versions? No
Does this needs documentation? No

looks good!

could you add tests for this?

Looks great to me, @bustios could you add a simple test case that reproduce this case to the python/src/test/java/org/apache/zeppelin/python/PythonInterpreterPandasSqlTest.java ?

Tranks for the revision @felixcheung, @bzz. I have already added the test case.
I think it would be nice to show a column with the row number or index if the DataFrame had one.

Looks great to me.

I think it would be nice to show a column with the row number or index if the DataFrame had one.

@bustios This makes sense, please feel free to open a separate JIRA issue for such improvement. We just need to make sure that it's clearly distinguished and can not be confused by the user as a part of the dataset.
CI failure is due to flaky R integration tests, which are not related
Results :

Failed tests:
  ZeppelinSparkClusterTest.sparkRTest:116 expected:<[[1] 3]> but was:<[
Error in getSparkSession(): SparkSession not initialized

Error in (function (classes, fdef, mtable) : unable to find an inherited method for function 'count' for signature '"function"'

]>

Tests run: 65, Failures: 1, Errors: 0, Skipped: 0

Merging if there is no further discussion.


Triple-slash comments for JSDoc

This PR adds a new triple-slash format for JSDoc comments. It's the same as the C#, Rust and Swift syntax for doc comments.
Motivation
Triple-slash comments have several advantages over multi-line doc comments:

They're easier to type and manipulate. Turning

// Some quick documentation here
// But I forgot to make it jsdoc
function foo() { ... }

into triple-slash comments is much easier than the conversion to multi-line comments. Turning one-line to multi-line is actually reasonable, unlike with JSDoc:
/** brevity is the soul of wit */

/**
 * oh wait, I thought of something else to say:
 *
 * brevity is the soul of wit
 * AND
 * silence is golden
 */

Triple-slash comments are stricter and there is a more obviously correct way to indent them. Currently, Typescript produces "reasonable" results for all kinds of badly formatted jsdoc:

/** I started typing here
 *
 *     and then indented to here
 *     typed here for a while
 * went back to here
   forgot to add asterisks

       this is a markdown code region, please retain four (4) leading spaces!
 */

Triple-slash comments require a leading /// on each line, and span only from after the /// to the end of the line:
/// I started typing here
///
   /// and then indented to here
///    is interpreted differently then
/// went back to here
Forgetting slashes is a syntax error!
////     this is definitely a markdown code region
    //// this is definitely not

As a result, triple slash comments are way easier to parse.

This is just a draft right now. I intend to talk to authors of other tools to see if they are interested in supporting this syntax.
Implementation
The current implementation has quite a bit of duplication. It also has a number of minor fixes that need to happen:

Tags stop parsing their text at the end of their comment line.
Tags still parse with the same state machine as multi-line comments, so may drop leading * as in /// * markdown bullet point.
Leading+trailing whitespace needs to be trimmed.
One fourslash test needs to be updated.
I need to convert a good variety of existing jsdoc tests to triple slash to see if anything breaks there.

In C# there's an expectation that these comments parse XML tags within them, like <summary> - that's actually what inspired or own "triple slash references", I'm pretty sure. I'm not sure we want to lead c# devs into thinking we support that whole system... (Nor do I think we actually want to support that).
Other than that, I don't see much of a reason to bother, since it's not like any other JS tools interpret comments like this? Like, I get that there's probably not much harm done by it (expect potentially confusing future SO questions asking why doc tool X doesn't read "doc comments")... But... Eh?

Oh, also, re: converting types of comments. In vscode at least, ctrl + / will toggle single line, while shift + alt + a will toggle multiline coments; so swapping between the two basic kinds isn't normally so bad (if you're aware of the keybinds).

This seems pretty neat!
For the tooling / editor side of things, I have a few questions:

Would we need a switch so that commands such as toggle line comment in VS Code use ///?
I guess not since block comments would use regular /* */. Maybe we need a new command, such as toggle doc comment?

Would we need a setting so that our JS Doc template generate uses one syntax or the other?
Probably not I think, since you have to type /** to trigger the template today but I want to make sure this is the case

Are there any code actions that generate jsdoc comments today and would they need a setting to target the right comment syntax?

Would we want new on enter rules for /// comments?
For example, for the following code with the cursor at |:
/// A thing |
const a = 1

Return should probably produce:
/// A thing
/// |
const a = 1

Would we want new on enter rules for /// comments?

I could see that being annoying if you're only trying to do one line... but maybe if we follow the convention that one enter continues the section, then enter on an "empty" (/// only) line removes it?
OneNote does this for bullets, I think MacOS notes is the same.

@JacksonKearl What do you want to place after the doc comment?

Nevermind, I'm assuming the declaration is already written 😄

@sandersn  curious, does this mean that when you use //// like in our fourslash tests, those are parsed as JSDoc comments?

Yes, but fourslash just uses source file text; it doesn't care about any AST. (As far as I know -- I could be wrong.)
Same for any other tool that wants to use ////.

Having a "toggle doc comment" feature in VScode would be the killer feature here.
I don't hate the triple slash syntax, but I don't see it being widely adopted. I'm not sure I'd use it personally. Feels like it'll just become a 'quirky' TypeScript thing down the line (that you then have to support forever).

For a proposal to revamp JavaScript's established doc comment syntax, the 3 motivations above don't seem super compelling.  In particular, the Markdown spacing ambiguity is probably a non-issue in practice. For example:

TSDoc today takes the position of omitting Markdown spacing rules entirely from its grammar, because they are too counterintuitive for technical work.  (In cases where correctness matters -- for example with a DocFX pipeline where code comments will eventually end up on a customer-facing website, weeks after you merged your PR, with no quick way to preview the final output.)
If we optionally accept the more esoteric Markdown syntaxes (which @rbuckton has been working on), personally I wouldn't use it without a realtime preview in VS Code, since CommonMark is pretty much impossible to author correctly without a preview. There's just too many context-sensitive quirks for a causal author to remember, especially with character escapes. Whether /**    example */ is a code block or not is the least of those concerns.  :-)

But https://github.com/microsoft/tsdoc/issues/160#issuecomment-737562572 brings up a different motivation that maybe would justify a move to ///.  Take this example:
/**
 * Strips the comments from an input string:
 *
 * @example
 * ```ts
 * // prints " some text":
 * console.log(stripComments("/* a comment */ some text");   👈 SYNTAX ERROR
 * ```
 */
function stripComments(code: string): string;

Nesting /* */ is really awkward, whereas nesting /// is not. We encounter this problem rather frequently with doc comments.  It's not just academic.
@sandersn this PR raises some other interesting design questions as well:

Should /// comments otherwise have identical syntax as /** */ comments?
Or since they look so different, is this an opportunity to dispense with a bunch of other JSDoc baggage such as {@link}?
Should we maybe even dispense with Markdown in favor of C#-style docs? Maybe too radical, although I fairly enjoyed Sandcastle back in the day!
Would the compiler then treat /** <reference types="node" /> */ as equivalent to /// <reference types="node" />?
Since you're proposing to support "Markdown" inside ///, to what extent does it implement CommonMark?

Some test cases for that last question:
/// <!--
/// <reference types="node" />
/// -->

/// ```
/// <reference types="node" />
/// ```

/// [
/// <reference types="node" />
/// ](https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html)

push : )

This experiment is pretty old, so I'm going to close it to reduce the number of open PRs.


Update knative components to v1.4

Signed-off-by: Paul S. Schweigert<EMAIL_ADDRESS>Release Note
Updates Knative version to 1.4

/assign @nader-ziada @ikvmw
/hold
until after Serving/Eventing/Kourier releases are cut

/hold cancel

/hold cancel

/lgtm


[FEA] Support repetition of group containing in regular expression

I wish we support repetition of group containing in regular expression.
Eg:
from pyspark.sql.types import StructType,StructField, StringType, IntegerType
from pyspark.sql.functions import expr

data2 = [("11p22p33p44p55p.abc",""),
    ("xyz[123","Rose")
  ]

schema = StructType([ \
    StructField("firstname",StringType(),True), \
    StructField("middlename",StringType(),True) \
  ])

df = spark.createDataFrame(data=data2,schema=schema)
df.printSchema()
df.show(truncate=False)

individual_match_regex = r"((([0-9]{2}p){5}))\\.abc"

df.withColumn('newcol', expr(f"""   regexp_extract(firstname, "{individual_match_regex}", 1)    """)).show()

Not-supported-messages:
      !Expression <RegExpExtract> regexp_extract(firstname#827, ((([0-9]{2}p){5}))\.abc, 1) cannot run on GPU because cuDF does not support repetition of group containing: [0-9]{2} near index 3; regex group count is 0, but the specified group index is 1

I found one workaround though
individual_match_regex = r"((([0-9]{2}p)([0-9]{2}p)([0-9]{2}p)([0-9]{2}p)([0-9]{2}p)))\\.abc"


hub pull-request trims the content

I often create pull requests looking like this:
 - feature 1
 - feature 2
 - feature 3
 - some bug fix
 - ...

But it looks like hub trims my input, deleting the first space. That makes my list to look ugly:
- first
 - second
 - second

...being rendered like this:

first
second
second

Since I put that space before the first - I expect to have one list like this:

first
second
second

Interesting. Thanks for letting me know.
Why do you put spaces before lists?

@mislav Markdown code style? :grin: Just because it looks better for me.


How to create or use private schema in wallet database using postgres

Trying to deploy agent with postgres wallet storage and wallet type as askar but it is using public schema.
Initially created a database with admin user and tables by running acapy agent and then trying to use this dB with same app user after revoking admin access.
Here tables are created in public schema .please help on how to create and access tables in private schema within database

@swcurran can you provide info on this

You provide the following parameters to aca-py on startup:
            --wallet-storage-type '${ACAPY_AUTHOR_WALLET_STORAGE_TYPE}' \
            --wallet-storage-config '{\"url\":\"${AUTHOR_WALLET_POSTGRESQL_HOST}:5432\",\"max_connections\":5,\"wallet_scheme\":\"MultiWalletSingleTable\"}' \
            --wallet-storage-creds '{\"account\":\"${AUTHOR_WALLET_POSTGRESQL_USER}\",\"password\":\"${AUTHOR_WALLET_POSTGRESQL_PASSWORD}\",\"admin_account\":\"${AUTHOR_WALLET_POSTGRESQL_USER}\",\"admin_password\":\"${AUTHOR_WALLET_POSTGRESQL_PASSWORD}\"}' \

When provisioning the wallet database, the admin_account and admin_password must specify a database user with privileges to create the database and tables for the wallet.  (The account and password are used to access the wallet once is created.)
If the database already exists (in some scenarios the dba has to create the database in advance) it must be empty - aca-py will create and populate any tables and other db objects it needs.
At least that's how indy-sdk works, @andrewwhitehead can confirm if this is also true for askar.

@andrewwhitehead
Hi Andrew-any updates on how to create tables in private schema within existed postgres database using askar.

we would also prefer to get the database initialization commands as database scripts for creation everything needed in database

That won't work with an Indy wallet (and I suspect Askar as well) because aca-py doesn't just create the tables when it creates the wallet, it populates them with encryption key information as well (and possibly other info, I don't know the low-level details).  It's possible that with changes to the low-level sdk's (Indy and/or Askar) this might be able to work ...
However, there is a command avalabile to "provision" the wallet using aca-py - there is an example of how to ru this command here:  https://github.com/bcgov/aries-vcr/blob/main/docker/docker-compose.yml#L143
So, you could run this command separately (manually, or however you choose) - this is the command that requires the "admin" id.  And then in your regular aca-py script, you only need to provide the "regular" postgres id.
At least that is what is supported now, if you want to manually create all the tables and other db objects in advance, and then have aca-py to be able to detect this state on startup, you'd need to do some updates to the low-level libraries.

Hello everyone, I ran the command of aca-py start but I received an error "OSError: libindystrgpostgres.so: cannot open shared object file: No such file or directory". Could you help me with it? thank you very much!


[BUG] 10x Performance Degradation for Stage 3 vs Stage 2

Describe the bug
This is a follow up from https://github.com/microsoft/DeepSpeed/issues/1069#issuecomment-1518294721. @tjruwase
I'm in the process of reproducing Alpaca-LoRA, and I've noticed a 10x performance degradation when using Stage 3 compared to Stage 2, which I believe is higher than usual.
To Reproduce

Clone https://github.com/yukw777/stanford_alpaca and set it up, e.g., install Python dependencies in requirements.txt.
Train Alpaca-LoRA-7B using Stage 2 by running the following command.  In my setup, Stage 3 took 2.72s per iteration, while Stage 2 took about 0.29s per iteration (3.49 iterations per second).

Expected behavior
I'm not sure what'd be the correct expected behavior, but I'm hoping it's stage 3 being faster than 10x Stage 2.
ds_report output
$ ds_report
--------------------------------------------------
DeepSpeed C++/CUDA extension op report
--------------------------------------------------
NOTE: Ops not installed will be just-in-time (JIT) compiled at
      runtime if needed. Op compatibility means that your system
      meet the required dependencies to JIT install the op.
--------------------------------------------------
JIT compiled ops requires ninja
ninja .................. [OKAY]
--------------------------------------------------
op name ................ installed .. compatible
--------------------------------------------------
 [WARNING]  async_io requires the dev libaio .so object and headers but these were not found.
 [WARNING]  async_io: please install the libaio-dev package with apt
 [WARNING]  If libaio is already installed (perhaps from source), try setting the CFLAGS and LDFLAGS environment variables to where it can be found.
async_io ............... [NO] ....... [NO]
cpu_adagrad ............ [NO] ....... [OKAY]
cpu_adam ............... [NO] ....... [OKAY]
fused_adam ............. [NO] ....... [OKAY]
fused_lamb ............. [NO] ....... [OKAY]
quantizer .............. [NO] ....... [OKAY]
random_ltd ............. [NO] ....... [OKAY]
 [WARNING]  sparse_attn requires a torch version >= 1.5 but detected 2.0
 [WARNING]  using untested triton version (2.0.0), only 1.0.0 is known to be compatible
sparse_attn ............ [NO] ....... [NO]
spatial_inference ...... [NO] ....... [OKAY]
transformer ............ [NO] ....... [OKAY]
stochastic_transformer . [NO] ....... [OKAY]
transformer_inference .. [NO] ....... [OKAY]
utils .................. [NO] ....... [OKAY]
--------------------------------------------------
DeepSpeed general environment info:
torch install path ............... ['/home/kpyu/stanford_alpaca/.venv/lib/python3.10/site-packages/torch']
torch version .................... 2.0.0+cu117
deepspeed install path ........... ['/home/kpyu/stanford_alpaca/.venv/lib/python3.10/site-packages/deepspeed']
deepspeed info ................... 0.9.0, b7abafb, main
torch cuda version ............... 11.7
torch hip version ................ None
nvcc version ..................... 11.8
deepspeed wheel compiled w. ...... torch 0.0, cuda 0.0

Screenshots
N/A
System info (please complete the following information):

OS: [e.g. Ubuntu 18.04]
Red Hat Enterprise Linux release 8.4 (Ootpa)
GPU count and types [e.g. two machines with x8 A100s each]
One machine with 4 A40 48GB GPUs
Interconnects (if applicable) [e.g., two machines connected with 100 Gbps IB]
One machine with 4 A40 48GB GPUs connected via PCIe.
Python version
3.10
Any other relevant info about your setup
I'm using a Slurm cluster.

Launcher context
torchrun
Docker context
N/A
Additional context
I thought it might be related to the fact that I have some frozen layers (i.e. LoRA), so I tried to reproduce it without LoRA, but unfortunately, I got CUDA OOM for training Alpaca-7B with Stage 2, so I couldn't perform an apples-to-apples comparison. You can run the training script without LoRA by simply setting --use_lora to False.

Alright, I just tried this on a p3.16xlarge (8xV100's linked via NVLink), and Stage 3 with 4 V100's is slower than 4 A40's (3.22s/it vs 2.72s/it) so I think this is an expected slowdown.

@yukw777 Could you clarify: do you mean that you indeed found a 10x justifiable slow-down comparing zero2 to zero3, or did you mean that the hardware that you used led to a difference regardless of deepspeed?


Whitelist mandatory coinbase destination

The mandatory coinbase destination is added to the address whitelist.
This is so that all outputs can be paid to the 'fees' address.

Have done this in a better way - PR on the way.


mbed deploy does not respect .mbedignore

I have a repo that contains several directories, including a PCB design. The PCB design contains files named <library name>.lib. I have added a .mbedignore file, which specifies all the non-code directories, but mbed deploy does not respect this, insisting on trying to parse my PCB library directories.

Same here. I tried ignoring both the <library name>.lib and <library name> folder, but mbed deploy still very persistently likes to do useless deploys.

@teetak01 Apparently, mbed deploy's lack of respect for .mbedignore is by design.

@screamerbg @theotherjimmy any comments on this? I am just wondering what the benefit is for the user if .mbedignore is not supposed to affect mbed deploy. Or could this functionality be reconsidered?
At least on this repository (or https://docs.mbed.com/docs/mbed-os-handbook/en/5.1/dev_tools/cli/) I do not see really much documentation on how .mbedignore is supposed to work, other than some reference that mbed update at least works with it.

@teetak01 I might be able to supply some background as to why .mbedignore files aren't currently supported in this context.
The simple reason is that the logic that respects the .mbedignore files is located in mbed-os at the moment. It was originally only used during the compilation process. There other factors that are factored into the global "ignore logic" besides the .mbedignore files, so this is all consolidated within those tools.

@bridadan thank you for your comments. Has there been any thought on refactoring the tools away from mbed-os? Keep the OS as its own entity and concentrate the tools either here or in third repository (if there is other dependencies). Currently there is maybe a bit too tight coupling between mbed-os and mbed-cli versions and these two cannot deviate too far before strange errors start to occur, possible because some of the tool changes are done on both sides. But yes, I can image this is not trivial in any case.

@teetak01 There's definitely been talk about this. And I don't know the exact time frame on any of those changes (if they were to happen at all), specifically because they are non-trivial like you said. Right now the source code and tools are fairly tightly coupled. Though in the future, especially as development smooths out, I could see this happening when there is less feature development on the tools.

Apparently, mbed deploy's lack of respect for .mbedignore is by design.

Why should it be that way?
You wind up telling one build system (mbed build) to ignore the files, but all the others (via mbed export) not to. (Right?) If you make any customizations to your exported project files to ignore the same things there, those modifications will be overwritten next time you mbed export.

@bmcdonnell-ionx mbed export heeds .mbedignore files.

mbed export heeds .mbedignore files.

So this issue has been addressed, and should be closed?

Well the issue is specifically that mbed deploy still deploys .lib files that are either ignored directly by .mbedignore files or they are contained within a directory that is ignore by .mbedignore files.
It sounds like we don't intend to change this, so I think it's still safe to close this as "won't fix" @theotherjimmy ?

The documentation needs to be updated to explain that it affects mbed export as well as mbed compile. At the moment, it references the non-existent mbed build command.

ARM Internal Ref: MBOTRIAGE-468


[FLOC-2406] Skip tests if zpool not installed

Also use run_process, which is infinitely superior to check_call.

Thanks @jml, this seems to work:
flocker.volume.functional.test_filesystems_zfs.StoragePoolTests failed on my Mac before, and now they pass. The tests are still running on BuildBot, I guess
that this is the success criteria. There is a mix of docs.clusterhq.com and doc-dev in our source code but I think that it is best to point developers to doc-dev, which is master's docs.
Also, that page is big - I don't know what to look at. If I look for "zpool" there is nothing to do with "installing zpool", only "Creating a ZFS Pool".
If that is what is meant, link to that section (https://doc-dev.clusterhq.com/using/installing/index.html#creating-a-zfs-pool) and change the message slightly.
If only the minor changes suggested are done, please merge. Else if there is something more significant, please resubmit.

Linked to http://doc-dev.clusterhq.com/using/installing/index.html#optional-zfs-backend-configuration, since you don't need to create a zpool, you just need to be able to create one.

Yay! Only failing test is now expected failure!


x/tools/internal/lsp: separate imports from formatting

LSP has a separation between formatting a document and organizing imports (the code action "source.organizeImports"). We should follow this by only returning diffs of the import block when we return results from goimports.
/cc @ramya-rao-a

I was actually a little surprised to find this, since the wiki as of today mentions, in the context of configuration with LanguageClient:
" Run gofmt and goimports on save
autocmd BufWritePre *.go :call LanguageClient#textDocument_formatting_sync()

I understood that to mean that results from textDocument/formatting would also include fixing imports.
Am I mis-reading this issue or the wiki configuration example (or both)? If so, would you be able to give some more direction about the expected way to get the imports to be fixed via calls from an lsp client?
FWIW, I did trace the gopls source a bit, and IIUC, the import organizing code would only be invoked as source.Imports via organizeImports via Server.codeAction, and I don't believe there is any connection that I can see between codeAction() and the handler for textFormatting. Not saying this is news to you, just to give you some context on what I do (or do not) understand about the code.

The wiki is a little confusing, it is saying that gopls does the same work that gofmt and goimports do, so there is no need to run them any more. It will do the work of those two tools when you save the document with the settings we suggest, but it does it through two very different code paths (the formatting call and a codeAction)
This bug is about the fact that the implementation of the organizeImports code action is the same code that goimports normally invokes, which is intended to both fix the imports and then format the whole file (because goimports replaced gofmt as the file save hook the way editors used to work). We want to extract the parts of the library that fix the imports and be able to do that on it's own.
The formatting call really does just do the formatting, the same way that gofmt would.

Thanks for the quick reply and clarification. It's possible that there is still a problem, but I'll file it as a separate issue.

The above change stops formatting for a file that has no import modifications, but a file will still be formatted if we are adding or deleting imports.


[Experiment] RequirementMachine: Disabled merged associated types by default

@swift-ci Please test source compatibility

@swift-ci Please test source compatibility Release

@swift-ci Please smoke test


feat: handle etf2l ban login error

Codecov Report

Merging #13 into master will decrease coverage by 0.72%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master      #13      +/-   ##
==========================================
- Coverage   73.68%   72.95%   -0.73%
==========================================
  Files          49       49
  Lines         475      477       +2
  Branches       37       37
==========================================
- Hits          350      348       -2
- Misses        110      114       +4
  Partials       15       15

Impacted Files
Coverage Δ

src/app/auth/auth-error/auth-error.component.ts
23.07% <0%> (-4.2%)
:arrow_down:

...ller/queue-ready-up-dialog-controller.component.ts
33.33% <0%> (-11.12%)
:arrow_down:

Continue to review full report at Codecov.

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


[Bug]: The hovering display of the toolbar in the bottom left corner of the execution details is inconsistent with the actual situation

ODC version
odc431
OB version
ob424
What happened?

What did you expect to happen?

How can we reproduce it (as minimally and precisely as possible)?
Execute the SQL query and click on the execution profile
Anything else we need to know?
No response

Fixed In Commit b8310dbf525090e447de8ab108fba352e21af1e0
------
畅晚
Mon Jul 8 09:36:58 2024 +0800

pass


Suggestion: Protect an Animal

Protect animals and fight back

That in itself is just event:pve
The thing to add (per original request made by Spigot DM) would be defending specific examples (in the original request, chickens)

Added to build 273+ https://ci.citizensnpcs.co/job/Sentinel/
Use /sentinel addtarget event:pv:chicken (or whichever mob type).


Change page state data for categorization page to paint by opacity

Currently the information on what is "painted" in the table is determine by the background color of the current selected category. This in combination with a small fix to show non-selected categories transparently currently allows the categorization page's painting to function.
Ideally, the means of determining which category is selected should be determined by a check on the list group box's items' opacity, but currently it makes little sense to convert to this logic while the interface remains in flux.
I would like to leave the current implementation (that looks at category background color in place, but it may make sense to change this to be cued by opacity once the UI firms up in the future.

I think this is no longer a concern. The "current" colors for row painting are stored when the coloring listgroup item is clicked. This solution works well.


Ministry Signoff option not showing up when a request in Peer Review state from Record Review

Describe the bug in current situation
For some requests Ministry Signoff option not showing up when a request is in Peer Review state when moved from Records Review.
Link bug to the User Story
#3864
Impact of this bug
Describe the impact, i.e. what the impact is, and number of users impacted.
Chance of Occurring (high/medium/low/very low)
Medium
Pre Conditions: which Env, any pre-requesites or assumptions to execute steps?
Steps to Reproduce
Steps to reproduce the behavior:

Take a request and move it until Records Review.
Make some updates to the request other than state change.
And then move to Peer Review
THEN check the state options:

Actual/ observed behaviour/ results
State Options currently showing : Call for Records, Open and Closed
Expected behaviour
State Options should be : Call for Records, Consult, Ministry Sign Off, Records Review, Response and Closed
Screenshots/ Visual Reference/ Source
If applicable, add screenshots to help explain your problem. You an use screengrab.

This appears to be fixed now, closing ticket. Thank you @aparna-aot


To Reproduce
Run test case test_migration_with_*
Expected behavior
A clear and concise description of what you expected to happen.
Log or Support bundle
supportbundle_e4760442-f449-47a1-9bd1-dab5a00e97c5_2023-06-28T12-14-54Z.zip
Environment

Longhorn version: master-head or v1.5.x-head
Installation method (e.g. Rancher Catalog App/Helm/Kubectl):
Kubernetes distro (e.g. RKE/K3s/EKS/OpenShift) and version:

Number of management node in the cluster:
Number of worker node in the cluster:

Node config

OS type and version:
CPU per node:
Memory per node:
Disk type(e.g. SSD/NVMe):
Network bandwidth between the nodes:

Underlying Infrastructure (e.g. on AWS/GCE, EKS/GKE, VMWare/KVM, Baremetal):
Number of Longhorn volumes in the cluster:

Additional context
Test results:
https://ci.longhorn.io/job/public/job/v1.5.x/job/v1.5.x-longhorn-tests-sles-amd64/28/testReport/junit/tests/test_migration/test_migration_with_failed_replica/
https://ci.longhorn.io/job/public/job/v1.5.x/job/v1.5.x-longhorn-tests-sles-arm64/31/testReport/tests/test_migration/test_migration_with_rebuilding_replica/
https://ci.longhorn.io/job/public/job/master/job/sles/job/amd64/job/longhorn-tests-sles-amd64/533/testReport/tests/test_migration/test_migration_with_rebuilding_replica/
https://ci.longhorn.io/job/public/job/v1.5.x/job/v1.5.x-longhorn-tests-sles-amd64/27/testReport/tests/test_migration/test_migration_with_restore_volume_nfs_/
https://ci.longhorn.io/job/public/job/v1.5.x/job/v1.5.x-longhorn-tests-sles-amd64/24/testReport/tests/test_migration/test_migration_with_unscheduled_replica/
https://ci.longhorn.io/job/public/job/master/job/sles/job/amd64/job/longhorn-tests-sles-amd64/526/testReport/tests/test_migration/test_migration_with_rebuilding_replica/
https://ci.longhorn.io/job/public/job/master/job/sles/job/arm64/job/longhorn-tests-sles-arm64/522/testReport/tests/test_migration/test_migration_with_unscheduled_replica/

@yangchiu is this also recognized before in other release branches?
cc @longhorn/qa

@PhanLe1010 please check this.
cc @ejweber

From the Longhorn UI, we can see the status in the screenshot below. The volume has not been migrated to node 2.

supportbundle_6e355f6a-7e87-431a-8ce0-630ff8e1a73c_2023-06-28T09-10-19Z.zip

@yangchiu is this also recognized before in other release branches?
cc @longhorn/qa

Hi @innobead :
I observed that the test case test_migration_with_failed_replica failed on 1.5.0-RC3 for the first time. I didn't encounter this failure in my personal test records for 1.4.x and 1.3.x.

Good updates @roger-ryao @yangchiu

@roger-ryao could it be a timeout issue? Was the volume eventually migrated to the new node?

Let's see @PhanLe1010 investigation first.

@yangchiu Can I have access to the cluster http://<IP_ADDRESS>:30007/#/volume/longhorn-testvol-bl8klw?

Looks like there is an issue with the snapshot chain of old engine and new engine which make this function failed. Then that function blocks the migration flow. More details analysis is coming soon

Root Cause Analysis
From almost all support bundles collected when the issue happen, I see that the migration is blocked by checkMigratingEngineSyncSnapshots at this step That step checks and waits for the snapshot chain in old engine is the same as inside new engine. However, sometime this condition is never met because the snapshot creation time mismatch like this:

The snapshot created timestamp is an info fetch from one of the RW replica. This is the time that the snapshot file is created on that replica's disk. So it is possible that they are different on different RW replicas. When each engine fetch them from a different RW replica, the creation timestamp might be different.
Proposal
The role of the function checkMigratingEngineSyncSnapshots is to wait for the snapshot chain of the new engine (which is empty at beginning) to be populated so that we don't accidentally delete snapshot CRs. We should modify the checkMigratingEngineSyncSnapshots so that it only check and wait for all snapshot names in the old engine to appear in the new engine. The snapshot creation timestamp can be different and it is ok.

Ran the Test test_migration_with_unscheduled_replica and test_migration_with_failed_replica 20 times each with @PhanLe1010's dev image, they passed.
Running the other tests too, will update.

The snapshot created timestamp is an info fetch from one of the RW replica. This is the time that the snapshot file is created on that replica's disk. So it is possible that they are different on different RW replicas. When each engine fetch them from a different RW replica, the creation timestamp might be different.

This seems like a day-one issue instead of a regression. Good analysis.

Wait, it's a new change from 1.5.0, since checkMigratingEngineSyncSnapshots is from the volume attachment controller.
Do we need to worry about this in 1.4.x and 1.3.x?

You are correct @innobead
It should not happen in 1.4.x and 1.3.x.
This issue is a side effect of this https://github.com/longhorn/longhorn-manager/pull/1922

cc @mantissahz

Verified passed on master-head (longhorn-manager 9bc7e07) by running test_migration_with_unscheduled_replica, test_migration_with_failed_replica, test_migration_with_restore_volume and test_migration_with_rebuilding_replica for 10 times.
All test cases passed: https://ci.longhorn.io/job/private/job/longhorn-tests-regression/4384/
Waiting for v1.5.x-head test result now.

Verified passed on v1.5.x-head (longhorn-manager ba2d3d1) by running test_migration_with_unscheduled_replica, test_migration_with_failed_replica, test_migration_with_restore_volume and test_migration_with_rebuilding_replica for 10 times.
All test cases passed: https://ci.longhorn.io/job/public/job/v1.5.x/job/v1.5.x-longhorn-tests-sles-amd64/33/

@khushboo-rancher Could you help to double check that this test plan is still passed https://github.com/longhorn/longhorn/issues/5992#issuecomment-1563873360 ?

@khushboo-rancher Could you help to double check that this test plan still passed #5992 (comment) ?

Yes, tested on master-head (longhorn-manager 4a57a72) and v1.5.x-head (longhorn-manager a9bf977), this migration test plan still works.

Thanks @yangchiu, The migration tests work on v1.5.x-head on set up too.


[fix][broker] Skip loading broker interceptor when disabled

Motivation
When the broker interceptor is disabled, we should skip loading the broker interceptor.
Modifications

Check whether the broker interceptor is enabled, and then to load the broker interceptor
Update disableBrokerInterceptors description

Documentation

[ ] doc
[ ] doc-required
[x] doc-not-needed
[ ] doc-complete

Codecov Report

Merging #20422 (7051026) into master (aa3bfcd) will decrease coverage by 0.01%.
The diff coverage is 90.90%.

@@             Coverage Diff              @@
##             master   #20422      +/-   ##
============================================
- Coverage     72.90%   72.90%   -0.01%
- Complexity    31864    31880      +16
============================================
  Files          1864     1864
  Lines        138416   138417       +1
  Branches      15188    15189       +1
============================================
- Hits         100919   100917       -2
- Misses        29477    29489      +12
+ Partials       8020     8011       -9

Flag
Coverage Δ

inttests
24.18% <27.27%> (+0.01%)
:arrow_up:

systests
24.96% <27.27%> (-0.10%)
:arrow_down:

unittests
72.18% <90.90%> (+0.01%)
:arrow_up:

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

Impacted Files
Coverage Δ

...n/java/org/apache/pulsar/broker/PulsarService.java
81.68% <83.33%> (-0.43%)
:arrow_down:

...ookkeeper/mledger/impl/ManagedLedgerMBeanImpl.java
89.31% <100.00%> (ø)

...kkeeper/mledger/impl/cache/EntryCacheDisabled.java
70.83% <100.00%> (ø)

...keeper/mledger/impl/cache/RangeEntryCacheImpl.java
58.75% <100.00%> (ø)

... and 65 files with indirect coverage changes