process of expired name

So do we remove the deletion logic of the expired date? Is it possible to provide Storage.FindRange method to find items in certain range?

The problem is when the logic is executed?

The time we check the name is expired in the way of lazy deletion?

Can you clarify that in which method?

How about we check if the Runtime.Time >= Expiration is true, we delete the name token and throw the exception instead of the EnsureNotExpired method?

Sorry, I forgot the permission control.

How about we check if the Runtime.Time >= Expiration is true, we delete the name token and throw the exception instead of the EnsureNotExpired method?

So is it possible to provide Storage.FindRange method?

So is it possible to provide Storage.FindRange method?

As I've said, the problem is when to execute the logic.

It is for other custom contracts.

It is easy to implement FindRange with Find in a contract.

Get it.


Application User

The application should have user profiles which manage the data in the application.
It should hinge off of the existing person table.

Issue resolved.


There must me a feedback section

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
What problem is this feature trying to solve?
How do we know when the feature is complete?

Assign me for this issue


Old version of rust specified

Hi,
Thanks for making this library, it makes a lot of sense and simplifies the code using it that would need to work across both native and wasm. I want to use reqwest for my use case so going to do something similar built on reqwest instead. In doing that I was looking at this library and realized that version 1.61 of rust is specified in the rust-toolchain file. One of the dependencies bumped their MSRV and as a result rust-analyzer gives and error when I open the workspace in VS Code. See error below:
[ERROR rust_analyzer::main_loop] FetchBuildDataError:
error: package `raw-window-handle v0.5.2` cannot be built because it requires rustc 1.64 or newer, while the currently active rustc version is 1.61.0

[ERROR flycheck] Flycheck failed to run the following command: cd "/home/one/ehttp" && "cargo" "clippy" "--workspace" "--message-format=json-diagnostic-rendered-ansi" "--manifest-path" "/home/one/ehttp/Cargo.toml" "--all-targets"
[ERROR rust_analyzer::lsp_utils] cargo check failed:
Cargo watcher failed, the command produced no valid metadata (exit code: ExitStatus(unix_wait_status(25856))):
error: package `raw-window-handle v0.5.2` cannot be built because it requires rustc 1.64 or newer, while the currently active rustc version is 1.61.0

Oh that's annoying 🤦 I guess I could check in a Cargo.lock file to fix that

Cargo.lock is now checked in


Migrate C/Python API to use iterator pattern

Iterator API

CORE{type}{member}GetFirst
CORE{type}{member}GetLast
CORE{type}{member}GetNext

Functions that need to be updated

[x]  module_def.instances
[ ]  TODO: List out the rest

@rdaly525 Any feedback on this proposed API?

I think the second would be best. I do not see how we could do the first without having void* as the parameter types.

Potentially have a generic iterator pattern


Switch to application if it's already running

Currently invoking an application from mutate launches a new instance every time. But I would prefer if it switched to a running instance if there is one like in Spotlight search in OS X.
Any plans to add this feature or some pointers how this functionality could be scripted?

@ikhthiandor I would checkout out wmctrl.  This is what I use to switch to applications that are already running.  It provides functionality to list applications that are running and it allows you to bring forward a Xwindow application that is running.  Here is the script I put together for myself: https://github.com/benfalk/dotfiles/blob/master/config/Mutate/scripts/goto/goto.sh
If you have any more questions feel free to ask :smile:

Hey @benfalk thanks for your response, wmctrl is cool :smile: . However, I didn't have success in switching windows with your script. Could you share a demo if it works on your end?

Here is a little screen-cast of it.  I should point out that it only switches between running windows, it won't start them.  It would need to be changed up to start a task if it's not running.  I'd be happy to help debug if you want to go down the wmctl route

@benfalk I would like to control via wmctrl because it's fast. But my cpu gets hogged by mutate when I try to use this script. May be this is related to #89.
Here is a link to my $HOME/.config/Muate folder. Let me know if you would like any more debug info.
https://drive.google.com/folderview?id=0B7n6kz1LnnAiTHNxblVjQUJTb1k&usp=sharing

Ya, there is a bug where if the script isn't found or doesn't execute correctly Mutate goes off into what I think is an infinite loop.  Is your goto.sh set to execute?
chmod 775 /home/ikhthiandor/.config/Mutate/scripts/goto/goto.sh

Also, copy the following into your shell and run it.  Post back what output you get
wmctrl -l | grep -i . | sed "s/.*$(hostname) //g" | sort | xargs -n 1 -I LINE   echo -e "[LINE]\ncommand=wmctrl -a LINE\nicon=\nsubtext="

Silly me, grrr. The script wasn't set executable. I also chmod'ed to 775 now. Not sure if that was necessary. Anyway, it works now :smile: Thanks so much for your help :+1:

Btw, the script doesn't list firefox window if I the selected tab has this url for example.
https://github.com/qdore/Mutate/issues/108
This is the output in that case.

[cairo-dock]
command=wmctrl -a cairo-dock
icon=
subtext=
xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option
[emacs@acer5742]
command=wmctrl -a emacs@acer5742
icon=
subtext=

It works for most other urls though. An example output without the xargs error.

[cairo-dock]
command=wmctrl -a cairo-dock
icon=
subtext=
[emacs@acer5742]
command=wmctrl -a emacs@acer5742
icon=
subtext=
[Emacs: Org Mode Markup Cheatsheet - Mozilla Firefox]
command=wmctrl -a Emacs: Org Mode Markup Cheatsheet - Mozilla Firefox
icon=
subtext=
[wmctrl -l | grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn} -i . |  ]
command=wmctrl -a wmctrl -l | grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn} -i . |
icon=
subtext=

Oh right on, I bet I can fix that :smile:

:point_up: @ikhthiandor I have updated my script to work with windows that have single quotes in them :smile:

Awesome! I pulled in your changes. You migh consider sending a pull request to include the script in master.

I thought about it; however the script seems pretty specialized and I'm not sure how much people would use it.

@benfalk Your solution is perfect. but there is one problem the icons are same for all applications. this not very much helpful. can you suggest how can we handle this or tell mutate to pick targeted app's icon.

@benfalk  would you show the steps for using this script ubuntu 16.04 ??


BUG: Leverage bot repayment transaction fails with error execution reverted

Here are the details of the paloma transaction that was created https://gist.github.com/rootedbox/092efa793eab3e7b90de8deb8ac2caca
This fails with error execution reverted
Jan 18 22:09:18 lcd-mainnet palomad[591855]: {"level":"info","module":"server","module":"x/palomaconsensus","message-id":333570,"queue-type-name":"evm/eth-main/evm-turnstone-message","chain-type":"evm","chain-reference-id":"eth-main","error-data":"0x657865637574696f6e207265766572746564","time":"2024-01-18T22:09:18Z","message":"added error data"}

Problem is that const llamma = crvusd.getLlamma('eth'); is used, but the collateral token is wsteth
affected lines https://github.com/VolumeFi/curve-leverage-lending-bot/blob/27be8294818e2fac8386bad0c355e71afb678634/curve-leverage.js#L460
https://github.com/VolumeFi/curve-leverage-lending-bot/blob/27be8294818e2fac8386bad0c355e71afb678634/curve-leverage.js#L505
Instead of hardcoding eth the value should be the collateral token

Additionally:
https://github.com/VolumeFi/curve-leverage-lending-bot/blob/27be8294818e2fac8386bad0c355e71afb678634/curve-leverage.js#L447
https://github.com/VolumeFi/curve-leverage-lending-bot/blob/27be8294818e2fac8386bad0c355e71afb678634/curve-leverage.js#L460
But in here, you used only eth but we are supporting curve markets coins like wstETH, WBTC, tBTC, etc
And in the WBTC case, decimals of WBTC are 8, not 18.

https://github.com/VolumeFi/curve-leverage-lending-bot/pull/74


fix error handling

do not do log.Fatal
if a func has an error in it, maybe it ought to return that error and it is upto to the caller to decide wether to exit or just log it.

closed via https://github.com/komuW/meli/pull/31


Bump helm prometheus operator chart

bump operator to v0.18.1
review Chart.yaml according to helm charts upstream

Actually I'll wait for #1262 to bump to 0.19.0


Hydrate logging "Resetting dropped connection: api.twitter.com"

Not sure it's related with #55 because I hydrate a previous twarc session in analyzing series with lots of spam. I started with a 28.141 tweets's ids and obtaining 27.641 tweets. Lost 500 but I found 5 dropped connection. Looking at numbers looks like getting an error the entire set of 100 are lost.
2015-02-20 12:48:18,320 INFO Starting new HTTPS connection (1): api.twitter.com
2015-02-20 12:48:32,347 INFO Resetting dropped connection: api.twitter.com
2015-02-20 12:48:47,241 INFO Resetting dropped connection: api.twitter.com
2015-02-20 12:49:02,603 INFO Resetting dropped connection: api.twitter.com
2015-02-20 13:03:33,392 INFO Resetting dropped connection: api.twitter.com
2015-02-20 13:03:48,445 INFO Resetting dropped connection: api.twitter.com

I repeated the hydrate a few hours later getting the same 5 dropped connection at the same point of the previous one (checked previous and next ids's tweet too).
Could it be that it's kinda new API's moderation?

The missing tweets are most likely the result of having been deleted. I've been doing some analysis of Charlie Hebdo tweets collected by @ruebot and have noticed about 8% of the tweets have been deleted when I have hydrated them. If you are able to identify the missing tweets from your hydrate job try to look them up by ID and see if they are still there.
If you don't want to look them up with the API an easy way to manually do this is just to put the ID into a url like this:
http://twitter.com/edsu/status/{id}

The username doesn't matter, and Twitter just redirects you to the correct URL.


Questions about whether rtsp to jpeg decode is supported

I'd like to receive it in rtsp://ip/jpeg format now, but is there any other way so that I can't receive it with the existing rtsp_source_new?

https://docs.nvidia.com/metropolis/deepstream/6.0.1/dev-guide/text/DS_FAQ.html

This issue arises
std::wstring rtsp_uri_1 = L"rtsp://<IP_ADDRESS>:554/jpeg";

retval = dsl_source_rtsp_new(L"rtsp-source-1", rtsp_uri_1.c_str(), DSL_RTP_ALL,
            false, 0, 100, 2);
if (retval != DSL_RESULT_SUCCESS)
    return retval;

bool RtspSourceBintr::HandleSelectStream(GstElement *pBin, uint num, GstCaps *caps)
    {
        GstStructure *structure = gst_caps_get_structure(caps, 0);
        std::string media = gst_structure_get_string (structure, "media");
        std::string encoding = gst_structure_get_string (structure, "encoding-name");

        LOG_INFO("Media = '" << media << "' for RtspSourceBitnr '" << GetName() << "'");
        LOG_INFO("Encoding = '" << encoding << "' for RtspSourceBitnr '" << GetName() << "'");

        if (!m_pParser)
        {
            if (media.find("video") == std::string::npos)
            {
                LOG_WARN("Unsupported media = '" << media << "' for RtspSourceBitnr '"
                    << GetName() << "'");
                return false;
            }
            if (encoding.find("H264") != std::string::npos)
            {
                m_pParser = DSL_ELEMENT_NEW("h264parse", GetCStrName());
                m_pDepay = DSL_ELEMENT_NEW("rtph264depay", GetCStrName());
            }
            else if (encoding.find("H265") != std::string::npos)
            {
                m_pParser = DSL_ELEMENT_NEW("h265parse", GetCStrName());
                m_pDepay = DSL_ELEMENT_NEW("rtph265depay", GetCStrName());
            }
            else
            {
                LOG_ERROR("Unsupported encoding = '" << encoding << "' for RtspSourceBitnr '"
                    << GetName() << "'");
                return false;
            }
            AddChild(m_pDepay);
            AddChild(m_pParser);

            // If we're tapping off of the pre-decode source stream, then link to the pre-decode Tee
            // The Pre-decode Queue will already be linked downstream as the first branch on the Tee
            if (HasTapBintr())
            {
                if (!m_pDepay->LinkToSink(m_pParser) or !m_pParser->LinkToSink(m_pPreDecodeTee))
                {
                    return false;
                }
            }
            // otherwise, there is no Tee and we link to the Pre-decode Queue directly
            else
            {
                if (!m_pDepay->LinkToSink(m_pParser) or !m_pParser->LinkToSink(m_pPreDecodeQueue))
                {
                    return false;
                }
            }
            if (!gst_element_sync_state_with_parent(m_pDepay->GetGstElement()) or
                !gst_element_sync_state_with_parent(m_pParser->GetGstElement()))
            {
                LOG_ERROR("Failed to sync Parser/Decoder states with Parent for RtspSourceBitnr '"
                    << GetName() << "'");
                return false;
            }
        }
        return true;

deepstream-services-library/src/DslSourceBintr.cpp
Looking at this code, I think it's possible to control the rtsp source separately (decode nvjpeg), is it possible?

@youngjae-avikus the callback is registered with the rtsp plugin ... see https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html?gi-language=c#rtspsrc::select-stream.
The plugin calls the callback once the caps have been read from the actual stream contents.  It is the stream itself that specifies whether it is video or audio... and if video what type of encoding is used H264 or H265.
I did some searching today but could not find any information on how to handle  rtsp://ip/jpeg

@rjhowell44

gst-launch-1.0 uridecodebin uri=rtsp://<IP_ADDRESS>:554/jpeg ! nveglglessink

It runs with uridecodebin, but there is a delay in the image

@youngjae-avikus I'm sorry I don't understand your statement but is it possible to do it right away because I modified the DSL code?  ...are you saying that you tried to modify DSL, or are you asking if I can update DSL?

@rjhowell44
Yes, I think my explanation was poor. To explain it again, When opening an rtsp stream that has already been encoded with h264, it usually seems to open with the pipeline below
gst-launch-1.0 -vvv rtspsrc location=rtsp://<IP_ADDRESS>:554/h264 ! rtph264depay ! h264parse ! nvv4l2decoder ! nvvideoconvert ! nvdsosd ! nveglglessink sync=0

And my situation is that I have to do jpeg decoding now, but the pipeline seems to be the difference of some components as below
gst-launch-1.0 -vvv rtspsrc location=rtsp://<IP_ADDRESS>:554/jpeg ! rtpjpegdepay ! jpegparse ! nvjpegdec ! nvdsosd ! nveglglessink sync=0

Currently, DSL does not support rtsp-jpeg, so can I simply make it possible to add additional components? (including inference and tracking)
If this is easy, I can challenge it, but I don't think it's just modifying the source part, so could you give me an opinion?

@youngjae-avikus the callback is registered with the rtsp plugin ... see https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html?gi-language=c#rtspsrc::select-stream.
The plugin calls the callback once the caps have been read from the actual stream contents. It is the stream itself that specifies whether it is video or audio... and if video what type of encoding is used H264 or H265.
I did some searching today but could not find any information on how to handle rtsp://ip/jpeg

Sometimes there seems to be a request for mjpeg decode in the form of rtsp.
https://stackoverflow.com/questions/61104698/how-to-send-mjpeg-frames-on-rtsp

@youngjae-avikus check the log again, and if you see something like
Unsupported encoding = 'mjpeg' for RtspSourceBitnr

try adding the below to the select-stream
            else if (encoding.find("jpeg") != std::string::npos)
            {
                m_pParser = DSL_ELEMENT_NEW("jpegparse", GetCStrName());
                m_pDepay = DSL_ELEMENT_NEW("rtpjpegdepay", GetCStrName());
            }

@rjhowell44
I added the code as below, but it doesn't print even if I cout the HandleSelectStream
bool RtspSourceBintr::HandleSelectStream(GstElement *pBin, uint num, GstCaps *caps)
    {
        std::cout << "HandleSelectStream\n";
        GstStructure *structure = gst_caps_get_structure(caps, 0);
        std::string media = gst_structure_get_string (structure, "media");
        std::string encoding = gst_structure_get_string (structure, "encoding-name");

        LOG_INFO("Media = '" << media << "' for RtspSourceBitnr '" << GetName() << "'");
        LOG_INFO("Encoding = '" << encoding << "' for RtspSourceBitnr '" << GetName() << "'");

        if (!m_pParser)
        {
            if (media.find("video") == std::string::npos)
            {
                LOG_WARN("Unsupported media = '" << media << "' for RtspSourceBitnr '"
                    << GetName() << "'");
                return false;
            }
            if (encoding.find("H264") != std::string::npos)
            {
                m_pParser = DSL_ELEMENT_NEW("h264parse", GetCStrName());
                m_pDepay = DSL_ELEMENT_NEW("rtph264depay", GetCStrName());
            }
            else if (encoding.find("H265") != std::string::npos)
            {
                m_pParser = DSL_ELEMENT_NEW("h265parse", GetCStrName());
                m_pDepay = DSL_ELEMENT_NEW("rtph265depay", GetCStrName());
            }
            else if (encoding.find("jpeg") != std::string::npos)
            {
                m_pParser = DSL_ELEMENT_NEW("jpegparse", GetCStrName());
                m_pDepay = DSL_ELEMENT_NEW("rtpjpegdepay", GetCStrName());
            }
            else
            {
                LOG_ERROR("Unsupported encoding = '" << encoding << "' for RtspSourceBitnr '"
                    << GetName() << "'");
                return false;
            }

There are still missing packets

I think this callback function below is not connected, should I activate it separately? I think I need to learn this part
g_signal_connect (m_pSourceElement->GetGObject(), "select-stream",
            G_CALLBACK(RtspSourceSelectStreamCB), this);

The code is first running based on rtsp_player_to_test_connections.cpp.
The address is still given below.
std::wstring rtsp_uri_1 = L"rtsp://<IP_ADDRESS>:554/jpeg";

@youngjae-avikus can you tell if the select-stream callback is being called?

@rjhowell44
Judging from the g_signal_connect function below, the RtspSourceSelectStreamCB function should be called when it is called normally.
The code now controls rtsp only with ip(std::wstring rtsp_uri_1 = L"rtsp://<IP_ADDRESS>:554/jpeg) and dsl_source_rtsp_new
g_signal_connect (m_pSourceElement->GetGObject(), "select-stream",
            G_CALLBACK(RtspSourceSelectStreamCB), this);

@youngjae-avikus the RtspSourceSelectStreamCB (select-stream) callback should be called by the rtspsrc plugin with the caps from the stream.
I'm sorry, by I don't understand your statement.... The code now controls rtsp only with ip(std::wstring rtsp_uri_1 = L"rtsp://<IP_ADDRESS>:554/jpeg) and dsl_source_rtsp_new
There is clearly missing functionality in RtspSourceSelectStreamCB needed to handle streams other than video/H264 and video/H265 only... but it appears that it is not even called when using your URI, is this correct?

@youngjae-avikus the RtspSourceSelectStreamCB (select-stream) callback should be called by the rtspsrc plugin with the caps from the stream.
I'm sorry, by I don't understand your statement.... The code now controls rtsp only with ip(std::wstring rtsp_uri_1 = L"rtsp://<IP_ADDRESS>:554/jpeg) and dsl_source_rtsp_new
There is clearly missing functionality in RtspSourceSelectStreamCB needed to handle streams other than video/H264 and video/H265 only... but it appears that it is not even called when using your URI, is this correct?

Yes, that’s right.
The code now controls rtsp only with ip(std::wstring rtsp_uri_1 = L"rtsp://<IP_ADDRESS>:554/jpeg) and dsl_source_rtsp_new
means ...
I'm simply running rtsp with the code below, and I was wondering if there was anything else I needed
std::wstring rtsp_uri_1 = L"rtsp://<IP_ADDRESS>:554/jpeg)

// # For each camera, create a new RTSP Source for the specific RTSP URI
retval = dsl_source_rtsp_new(L"rtsp-source", rtsp_uri_1.c_str(), DSL_RTP_ALL,
       false, 0, 100, 2);
if (retval != DSL_RESULT_SUCCESS)
       return retval;

Is RtspSourceSelectStreamCB a function that runs unconditionally? I can't enter the function at all, so what's the problem?

@youngjae-avikus my understanding is that it should be called by the plugin for each stream received... Audio, Video, Image, etc.

@rjhowell44
Hmm... I need to do more debugging... I have a separate h265 camera, so I'll test it

As an example, if open the camera with rtsp_uri_2, we end up with the last log below
#include <iostream>
#include <experimental/filesystem>
#include <sstream>
#include <fstream>
#include <dirent.h>
#include <regex>

#include "DslApi.h"

// Set Camera RTSP URI's - these must be set to valid rtsp uri's for camera's on your network
// RTSP Source URI
std::wstring rtsp_uri_1 = L"rtsp://admin:11qqaa..@<IP_ADDRESS>:554/trackID=1";

int WINDOW_WIDTH = DSL_STREAMMUX_DEFAULT_WIDTH;
int WINDOW_HEIGHT = DSL_STREAMMUX_DEFAULT_HEIGHT;

// ##
// # Function to be called on XWindow KeyRelease event
// ##
void xwindow_key_event_handler(const wchar_t* in_key, void* client_data)
{
    std::wstring wkey(in_key);
    std::string key(wkey.begin(), wkey.end());
    std::cout << "key released = " << key << std::endl;
    key = std::toupper(key[0]);
    if(key == "P"){
        dsl_player_pause(L"player");
    } else if (key == "R"){
        dsl_player_play(L"player");
    } else if (key == "Q"){
        dsl_player_stop(L"player");
        dsl_main_loop_quit();
    }
}

int main(int argc, char** argv)
{
    DslReturnType retval;

    // # Since we're not using args, we can Let DSL initialize GST on first call
    while(true){

        // # For each camera, create a new RTSP Source for the specific RTSP URI
        retval = dsl_source_rtsp_new(L"rtsp-source", rtsp_uri_1.c_str(), DSL_RTP_ALL,
            false, 0, 100, 2);
        if (retval != DSL_RESULT_SUCCESS)
            return retval;

        // # New Overlay Sink, 0 x/y offsets and same dimensions as Tiled Display
        retval = dsl_sink_window_new(L"window-sink", 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
        if (retval != DSL_RESULT_SUCCESS) break;

        retval = dsl_player_new(L"player", L"rtsp-source", L"window-sink");
        if (retval != DSL_RESULT_SUCCESS) break;

        // # Add the XWindow event handler functions defined above
        retval = dsl_player_xwindow_key_event_handler_add(L"player", xwindow_key_event_handler, nullptr);
        if (retval != DSL_RESULT_SUCCESS) break;

        // # Play the player
        retval = dsl_player_play(L"player");
        if (retval != DSL_RESULT_SUCCESS) break;

        dsl_main_loop_run();
        retval = DSL_RESULT_SUCCESS;
        break;
    }

    // # Print out the final result
    std::cout << dsl_return_value_to_string(retval) << std::endl;

    // # Cleanup all DSL/GST resources
    dsl_delete_all();

    std::cout<<"Goodbye!"<<std::endl;
    return 0;

0:00:00.007699677 10882 0x5622b12a62d0 INFO                     DSL src/DslServices.cpp:136:GetServices:  : Services Initialization
0:00:00.007791361 10882 0x5622b12a62d0 INFO                     DSL src/DslServicesInfo.cpp:58:InfoInitDebugSettings:  : Pre-start log level  = 1,DSL:4
0:00:00.007799172 10882 0x5622b12a62d0 INFO                     DSL src/DslServicesInfo.cpp:59:InfoInitDebugSettings:  : Pre-start Log file  =
0:00:00.008249649 10882 0x5622b12a62d0 INFO                     DSL src/DslServices.cpp:154:GetServices:  : DSL Version: v0.26.alpha
0:00:00.008292335 10882 0x5622b12a62d0 INFO                     DSL src/DslServices.cpp:165:GetServices:  : Libcurl Initialized Successfully
0:00:00.008298114 10882 0x5622b12a62d0 INFO                     DSL src/DslServices.cpp:166:GetServices:  : Version: 7.58.0
0:00:00.008301724 10882 0x5622b12a62d0 INFO                     DSL src/DslServices.cpp:167:GetServices:  : Host: x86_64-pc-linux-gnu
0:00:00.008308864 10882 0x5622b12a62d0 INFO                     DSL src/DslServices.cpp:168:GetServices:  : Features: 4179869
0:00:00.008312227 10882 0x5622b12a62d0 INFO                     DSL src/DslServices.cpp:169:GetServices:  : SSL Version: GnuTLS/3.5.18
0:00:00.008315361 10882 0x5622b12a62d0 INFO                     DSL src/DslServices.cpp:170:GetServices:  : Libz Version: 1.2.11
0:00:00.008320529 10882 0x5622b12a62d0 INFO                     DSL src/DslServices.cpp:171:GetServices:  : Protocols: 0x7f6e165c1620
0:00:00.014266052 10882 0x5622b12a62d0 INFO                     DSL src/DslSourceBintr.cpp:519:DecodeSourceBintr:  : URI Path for File Source 'rtsp-source' = rtsp://admin:11qqaa..@<IP_ADDRESS>:554/trackID=1
0:00:00.015449021 10882 0x5622b12a62d0 INFO                     DSL src/DslServicesSource.cpp:907:SourceRtspNew:  : New RTSP Source 'rtsp-source' created successfully
0:00:00.017183620 10882 0x5622b12a62d0 INFO                     DSL src/DslServicesSink.cpp:113:SinkWindowNew:  : New Window Sink 'window-sink' created successfully
0:00:00.017615750 10882 0x5622b12a62d0 INFO                     DSL src/DslServicesPlayer.cpp:60:PlayerNew:  : New Player 'player' created successfully
0:00:00.017658862 10882 0x5622b12a62d0 INFO                     DSL src/DslServicesPlayer.cpp:655:PlayerXWindowKeyEventHandlerAdd:  : Player 'player' added X Window Key Event Handler successfully
0:00:00.545678253 10882 0x5622b12a62d0 INFO                     DSL DslNodetr.h:759:SetState:  : Changing state to 'PLAYING' for Bintr 'player'
0:00:00.550844704 10882 0x5622b12a62d0 INFO                     DSL src/DslPipelineXWinMgr.cpp:250:HandleBusSyncMessage:  : Prepare window handle received from source window-sink-nveglglessink
0:00:00.550967594 10882 0x5622b12a62d0 INFO                     DSL src/DslPipelineXWinMgr.cpp:373:CreateXWindow:  : Creating new XWindow: x-offset = 0, y-offset = 0, width = 1920, height = 1080
0:00:00.551479889 10882 0x5622b12a62d0 INFO                     DSL DslNodetr.h:775:SetState:  : State change will complete asynchronously for Bintr 'player'
0:00:00.612876572 10882 0x5622b134a630 INFO                     DSL src/DslSourceBintr.cpp:2164:HandleSelectStream:  : Media = 'video' for RtspSourceBitnr 'rtsp-source'
0:00:00.612898460 10882 0x5622b134a630 INFO                     DSL src/DslSourceBintr.cpp:2165:HandleSelectStream:  : Encoding = 'JPEG' for RtspSourceBitnr 'rtsp-source'
0:00:00.637913875 10882 0x7f6d900034f0 INFO                     DSL src/DslSourceBintr.cpp:2237:HandleSourceElementOnPadAdded:  : Caps structs name application/x-rtp
0:00:00.637953618 10882 0x7f6d900034f0 INFO                     DSL src/DslSourceBintr.cpp:2238:HandleSourceElementOnPadAdded:  : Media = 'video' for RtspSourceBitnr 'rtsp-source'
0:00:00.638062107 10882 0x7f6d900034f0 INFO                     DSL src/DslSourceBintr.cpp:2257:HandleSourceElementOnPadAdded:  : Video decode linked for RTSP source 'rtsp-source'
Segmentation fault (core dumped)

@youngjae-avikus re: What I found this time was that the RtspSourceSelectStreamCB, which was mentioned, was not invoked immediately after the source was created, but was executed at the time of pipeline execution.  ... yes, this is the way it is supposed to work.  As mentioned, the rtspsrc calls the select-stream callback once it has read the caps from the actual stream... so yes, the Pipeline needs to be playing for the source to read the stream.
This looks good.
0:00:00.612876572 10882 0x5622b134a630 INFO                     DSL src/DslSourceBintr.cpp:2164:HandleSelectStream:  : Media = 'video' for RtspSourceBitnr 'rtsp-source'
0:00:00.612898460 10882 0x5622b134a630 INFO                     DSL src/DslSourceBintr.cpp:2165:HandleSelectStream:  : Encoding = 'JPEG' for RtspSourceBitnr 'rtsp-source'

But we need to change the code you added to search for the upper case JPEG
            else if (encoding.find("jpeg") != std::string::npos)
            {
                m_pParser = DSL_ELEMENT_NEW("jpegparse", GetCStrName());
                m_pDepay = DSL_ELEMENT_NEW("rtpjpegdepay", GetCStrName());
            }

should be
            else if (encoding.find("JPEG") != std::string::npos)

try adding a log statement or breakpoint to make sure the code block is getting executed..

@youngjae-avikus re: What I found this time was that the RtspSourceSelectStreamCB, which was mentioned, was not invoked immediately after the source was created, but was executed at the time of pipeline execution. ... yes, this is the way it is supposed to work. As mentioned, the rtspsrc calls the select-stream callback once it has read the caps from the actual stream... so yes, the Pipeline needs to be playing for the source to read the stream.
This looks good.
0:00:00.612876572 10882 0x5622b134a630 INFO                     DSL src/DslSourceBintr.cpp:2164:HandleSelectStream:  : Media = 'video' for RtspSourceBitnr 'rtsp-source'
0:00:00.612898460 10882 0x5622b134a630 INFO                     DSL src/DslSourceBintr.cpp:2165:HandleSelectStream:  : Encoding = 'JPEG' for RtspSourceBitnr 'rtsp-source'

But we need to change the code you added to search for the upper case JPEG
            else if (encoding.find("jpeg") != std::string::npos)
            {
                m_pParser = DSL_ELEMENT_NEW("jpegparse", GetCStrName());
                m_pDepay = DSL_ELEMENT_NEW("rtpjpegdepay", GetCStrName());
            }

should be
            else if (encoding.find("JPEG") != std::string::npos)

try adding a log statement or breakpoint to make sure the code block is getting executed..

Oh, I didn't mention it, but this part is the result of the code being modified and executed
But after that, a fault occurs to see if the decoder or sink does not fit
I think I can mix it with imagesourcesrc pipeline properly...

@youngjae-avikus I've had a chance to review the code in more detail... I'm pretty sure I know what we need to do.
The selection of decoder is currently fixed in the constructor.
        m_pDecodeBin = DSL_ELEMENT_NEW("decodebin", name);

This and all associated logic will need to move into the select-stream callback so that decodebin or nvjpegdec can selected and linked in based on stream type. The LinkAll() method will need to be updated accordingly.
I can get these changes in tomorrow, but I will need you to test the final solution with your camera.

Yes, I'll wait

@rjhowell44
Code executed after rtsp-jpeg branch merge
What I checked first is that nvjpegdec is not DSL_ELEMENT_NEW and occurs seg_fault
else if (encoding.find("JPEG") != std::string::npos)
{
    m_pParser = DSL_ELEMENT_NEW("jpegparse", GetCStrName());
    LOG_INFO("Define jpegparse");
    m_pDepay = DSL_ELEMENT_NEW("rtpjpegdepay", GetCStrName());
    LOG_INFO("Define rtpjpegdepay");
    m_pDecodeBin = DSL_ELEMENT_NEW("nvjpegdec", GetCStrName());
    LOG_INFO("Define nvjpegdec");
}

I've check nvjpegdec using gst-inspect

@rjhowell44
Excuse me, but is there anything that has been made? Or is there anything else I need to check?
It would be better to input the image source, right?

@youngjae-avikus can you increase the gstreamer logging?  I need to see more than just the DSL logs. Try with
export GST_DEBUG=4

@rjhowell44
The file is large, put in discord.

@youngjae-avikus Looking at the log here...
0:00:00.828271016  3696 0x56080aff6c00 INFO                     DSL src/DslSourceBintr.cpp:2632:HandleSelectStream:  : Media = 'video' for RtspSourceBitnr 'rtsp-source'
0:00:00.828285478  3696 0x56080aff6c00 INFO                     DSL src/DslSourceBintr.cpp:2633:HandleSelectStream:  : Encoding = 'JPEG' for RtspSourceBitnr 'rtsp-source'
0:00:00.828585566  3696 0x56080aff6c00 INFO      GST_PLUGIN_LOADING gstplugin.c:901:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstjpegformat.so" loaded
0:00:00.828596836  3696 0x56080aff6c00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "jpegparse" named "rtsp-source-jpegparse"
0:00:00.828646973  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstBaseParse@0x7f55e801ec40> adding pad 'sink'
0:00:00.828657730  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstBaseParse@0x7f55e801ec40> adding pad 'src'
0:00:00.828686082  3696 0x56080aff6c00 INFO                     DSL src/DslSourceBintr.cpp:2658:HandleSelectStream:  : Define jpegparse
0:00:00.829178220  3696 0x56080aff6c00 INFO      GST_PLUGIN_LOADING gstplugin.c:901:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstrtp.so" loaded
0:00:00.829186671  3696 0x56080aff6c00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "rtpjpegdepay" named "rtsp-source-rtpjpegdepay"
0:00:00.829226547  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstRTPBaseDepayload@0x7f55e8029e60> adding pad 'sink'
0:00:00.829239611  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstRTPBaseDepayload@0x7f55e8029e60> adding pad 'src'
0:00:00.829255753  3696 0x56080aff6c00 INFO                     DSL src/DslSourceBintr.cpp:2660:HandleSelectStream:  : Define rtpjpegdepay
0:00:00.830291341  3696 0x56080aff6c00 INFO      GST_PLUGIN_LOADING gstplugin.c:901:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_jpegdec.so" loaded
0:00:00.830302014  3696 0x56080aff6c00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "nvjpegdec" named "rtsp-source-nvjpegdec"
0:00:00.830348805  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstVideoDecoder@0x7f55e80457e0> adding pad 'sink'
0:00:00.830358482  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstVideoDecoder@0x7f55e80457e0> adding pad 'src'
Segmentation fault (core dumped)

Everything looks good right up to the fault.  Can you try a simple test for me just to confirm what I think is happening. Could you add a return true to the JPEG case as below.  I need to confirm that it still crashes in the same way.
else if (encoding.find("JPEG") != std::string::npos)
{
    m_pParser = DSL_ELEMENT_NEW("jpegparse", GetCStrName());
    LOG_INFO("Define jpegparse");
    m_pDepay = DSL_ELEMENT_NEW("rtpjpegdepay", GetCStrName());
    LOG_INFO("Define rtpjpegdepay");
    m_pDecodeBin = DSL_ELEMENT_NEW("nvjpegdec", GetCStrName());
    LOG_INFO("Define nvjpegdec");
    return true;
}

@youngjae-avikus Looking at the log here...
0:00:00.828271016  3696 0x56080aff6c00 INFO                     DSL src/DslSourceBintr.cpp:2632:HandleSelectStream:  : Media = 'video' for RtspSourceBitnr 'rtsp-source'
0:00:00.828285478  3696 0x56080aff6c00 INFO                     DSL src/DslSourceBintr.cpp:2633:HandleSelectStream:  : Encoding = 'JPEG' for RtspSourceBitnr 'rtsp-source'
0:00:00.828585566  3696 0x56080aff6c00 INFO      GST_PLUGIN_LOADING gstplugin.c:901:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstjpegformat.so" loaded
0:00:00.828596836  3696 0x56080aff6c00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "jpegparse" named "rtsp-source-jpegparse"
0:00:00.828646973  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstBaseParse@0x7f55e801ec40> adding pad 'sink'
0:00:00.828657730  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstBaseParse@0x7f55e801ec40> adding pad 'src'
0:00:00.828686082  3696 0x56080aff6c00 INFO                     DSL src/DslSourceBintr.cpp:2658:HandleSelectStream:  : Define jpegparse
0:00:00.829178220  3696 0x56080aff6c00 INFO      GST_PLUGIN_LOADING gstplugin.c:901:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstrtp.so" loaded
0:00:00.829186671  3696 0x56080aff6c00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "rtpjpegdepay" named "rtsp-source-rtpjpegdepay"
0:00:00.829226547  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstRTPBaseDepayload@0x7f55e8029e60> adding pad 'sink'
0:00:00.829239611  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstRTPBaseDepayload@0x7f55e8029e60> adding pad 'src'
0:00:00.829255753  3696 0x56080aff6c00 INFO                     DSL src/DslSourceBintr.cpp:2660:HandleSelectStream:  : Define rtpjpegdepay
0:00:00.830291341  3696 0x56080aff6c00 INFO      GST_PLUGIN_LOADING gstplugin.c:901:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_jpegdec.so" loaded
0:00:00.830302014  3696 0x56080aff6c00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "nvjpegdec" named "rtsp-source-nvjpegdec"
0:00:00.830348805  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstVideoDecoder@0x7f55e80457e0> adding pad 'sink'
0:00:00.830358482  3696 0x56080aff6c00 INFO        GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:<GstVideoDecoder@0x7f55e80457e0> adding pad 'src'
Segmentation fault (core dumped)

Everything looks good right up to the fault. Can you try a simple test for me just to confirm what I think is happening. Could you add a return true to the JPEG case as below. I need to confirm that it still crashes in the same way.
else if (encoding.find("JPEG") != std::string::npos)
{
    m_pParser = DSL_ELEMENT_NEW("jpegparse", GetCStrName());
    LOG_INFO("Define jpegparse");
    m_pDepay = DSL_ELEMENT_NEW("rtpjpegdepay", GetCStrName());
    LOG_INFO("Define rtpjpegdepay");
    m_pDecodeBin = DSL_ELEMENT_NEW("nvjpegdec", GetCStrName());
    LOG_INFO("Define nvjpegdec");
    return true;
}

The result is the same segfault.

First, I will check if pgie and tracker are connected to the command line

@rjhowell44
As I said before, I've done it with a command line, It's working well. The test was done with two different rtsps, and they all worked fine.
gst-launch-1.0 -vvv rtspsrc location=rtsp://<IP_ADDRESS>:554/jpeg ! rtpjpegdepay ! jpegparse ! nvjpegdec ! m.sink_0 nvstreammux name=m batch-size=1 width=1920 height=1080 ! nvvideoconvert ! nvinfer config-file-path=/opt/dsl/nas_data/YOLOV3/config_infer_primary_yoloV3.txt ! nvmultistreamtiler width=1920 height=1080 ! nvvideoconvert ! nvdsosd ! nveglglessink sync=0

@youngjae-avikus understand that you can do it from the command line as a non-decode source (meaning a source that can select between H264, H265, and JEPG).  But there is clearly a problem loading the nvjpegdec plugin from the context of the rtspsrc signal callback.  The above could be implemented as a new source type that does not support dynamic stream-selection.
Question ... what advantage do you think JPEG will give you H256?

@youngjae-avikus understand that you can do it from the command line as a non-decode source (meaning a source that can select between H264, H265, and JEPG). But there is clearly a problem loading the nvjpegdec plugin from the context of the rtspsrc signal callback. The above could be implemented as a new source type that does not support dynamic stream-selection.
Question ... what advantage do you think JPEG will give you H256?

I'm sorry I did not understand the question correctly because I was shallow about background knowledge.

First of all, can you tell me why it works on the command line, but it doesn't work on the dsl code by linking it to non-decode source, select-stream, and callback words?

what advantage do you think JPEG will give you H256? Are you talking about the reason why I use jpeg instead of h265?

Thank you

re 1. it appears to be an issue of calling context.  It seems that the nvjpegdec plugin crashes when loaded in the context of the rtspsrc plugin's select-stream callback.... but appears to work when loaded from the application's context. This would need to be confirmed with NVIDIA as the nvjpegdec is theirs. I'm curious as to why their dynamic RTSP decode examples only support H264 and H265.
re 2. yes, why use jpeg instead of h265? What advantage does it provide?

@rjhowell44
re 1. I think it would be convenient to continue the conversation at discord
re 2. This is a very personal situation. But there was something in common that most of the cameras I used supported Rtsp/Jpeg

Currently, there are two options for channels that I can use in the inference (HSUB, JPEG). However, as shown in the image attachment, HSUB supports a maximum VGA resolution.

 So, from the point of view of the inference, the crushed video can have fatal consequences. However, in the case of jpeg, it uses a lot of bandwidth, but it has the advantage of not causing image crushing

@youngjae-avikus this issue has been superseded with a new issue
"Extent the RTSP Source to support JPEG encoding #891"
closing..


Example for integration with redux-form

downshift version: 1.22.5
node version: 8.9.4
npm (or yarn) version: 5.6.0

Problem description:
I'm trying to integrate Downshift with redux-form. Right now when selecting an item, redux-form get the full object, so my input displays [Object: object]
Suggested solution:
Add an example in the repo on how to integrate with redux-form

@donysukardi In your example when the field loses focus, a change event with an undefined payload gets triggered. This doesn't overwrite the value in the form state, but doesn't look like it should be happening?
I modified the sandbox to use redux-logger so you can see. Put some text in, click outside the field, observe undefined payload.
https://codesandbox.io/s/6zxk83jwn3

You need to bind back the redux-form's value from input.value back to selectedItem on your Downshift component to make it a controlled component. Otherwise the text that you see in the input textbox comes from Downshift's internal state.

Hello.
Can you please show how can I made this?
Thanks


MSVC build min/max macro collisions

Hi,
When I try building swift-nio-ssl on Windows
swift build -Xcxx "-Xclang" -Xcxx "-std=c++14"

I get following errors
\git\ai-baselines\.build\checkouts\swift-nio-ssl\Sources\CNIOBoringSSL\ssl\handoff.cc:544:61: error: too few arguments provided to function-like macro invocation
    if (ticket_age_skew > std::numeric_limits<int32_t>::max() ||
                                                            ^
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\minwindef.h:193:9: note: macro 'max' defined here
#define max(a,b)            (((a) > (b)) ? (a) : (b))
        ^
\git\ai-baselines\.build\checkouts\swift-nio-ssl\Sources\CNIOBoringSSL\ssl\handoff.cc:544:25: error: comparison between pointer and integer ('int64_t' (aka 'long long') and 'int (*)() noexcept')
    if (ticket_age_skew > std::numeric_limits<int32_t>::max() ||
        ~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\git\ai-baselines\.build\checkouts\swift-nio-ssl\Sources\CNIOBoringSSL\ssl\handoff.cc:545:61: error: too few arguments provided to function-like macro invocation
        ticket_age_skew < std::numeric_limits<int32_t>::min()) {
                                                            ^
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\minwindef.h:197:9: note: macro 'min' defined here
#define min(a,b)            (((a) < (b)) ? (a) : (b))

This can be fixed by providing parentheses around problematic macros.
To reproduce the error you can take a look at Swift installation on Windows using MSVC as instructed here https://github.com/apple/swift/blob/main/docs/WindowsBuild.md#MSVC.

SwiftNIO does not build and run on Windows at this time. Until we have the core repo working, we don't promise that any of this builds on Windows.


examples ... work now ...

compose-jb/examples/web-with-react gives the following error.
> ./gradlew jsBrowserRun

> Configure project :
Kotlin Multiplatform Projects are an Alpha feature. See: https://kotlinlang.org/docs/reference/evolution/components-stability.html. To hide this message, add 'kotlin.mpp.stability.nowarn=true' to the Gradle properties.

> Task :jsBrowserDevelopmentRun FAILED
[webpack-cli] Invalid configuration object. Object has been initialized using a configuration object that does not match the API schema.
 - configuration has an unknown property '_assetEmittingWrittenFiles'. These properties are valid:
   object { bonjour?, client?, compress?, dev?, firewall?, headers?, historyApiFallback?, host?, hot?, http2?, https?, liveReload?, onAfterSetupMiddleware?, onBeforeSetupMiddleware?, onListening?, open?, port?, proxy?, public?, setupExitSignals?, static?, transportMode?, watchFiles? }

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':jsBrowserDevelopmentRun'.
> [webpack-cli] Invalid configuration object. Object has been initialized using a configuration object that does not match the API schema.
   - configuration has an unknown property '_assetEmittingWrittenFiles'. These properties are valid:
     object { bonjour?, client?, compress?, dev?, firewall?, headers?, historyApiFallback?, host?, hot?, http2?, https?, liveReload?, onAfterSetupMiddleware?, onBeforeSetupMiddleware?, onListening?, open?, port?, proxy?, public?, setupExitSignals?, static?, transportMode?, watchFiles? }

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


listing the detection and recognition models not working in pytorch

Bug description
Hi,
This is the list of models not working in inference:

detection models:

db_resnet_34
linknet_resnet18
linknet_resnet34
linknet_resnet50
for all these detection models in pytorch, the code inference works but it get to much segmentations/detected boxes.

recognition models:

sar_resnet31
master
vitstr_small
vitstr_base
For all of these models in pytorch, the code inference seems to work, but it get random character recognition. I think they are note correct loaded or trained.

Code snippet to reproduce the bug
in doctr/demo/backend/pytorch.py file, changing this lines
DET_ARCHS = ["db_resnet50", "db_mobilenet_v3_large", "linknet_resnet50_rotation"]
RECO_ARCHS = ["crnn_vgg16_bn", "crnn_mobilenet_v3_small", "master", "sar_resnet31"]

by this lines
#DET_ARCHS = ["db_resnet50", "db_mobilenet_v3_large", "linknet_resnet50_rotation"]
DET_ARCHS = [ "db_resnet34",
        "db_resnet50",
        "db_mobilenet_v3_large",
        "linknet_resnet18",
        "linknet_resnet34",
        "linknet_resnet50",
        "db_resnet50_rotation"]
#RECO_ARCHS = ["crnn_vgg16_bn", "crnn_mobilenet_v3_small", "master", "sar_resnet31"]
RECO_ARCHS=[ "crnn_vgg16_bn",
    "crnn_mobilenet_v3_small",
    "crnn_mobilenet_v3_large",
    "sar_resnet31",
    "master",
    "vitstr_small",
    "vitstr_base"]

and running this code to try all the pytorch models
USE_TF=0 streamlit run demo/app.py

Error traceback
not errors but bugs on models
Environment
wget https://raw.githubusercontent.com/mindee/doctr/main/scripts/collect_env.py
For security purposes, please check the contents of collect_env.py before running it.
python collect_env.py
Deep Learning backend
from doctr.file_utils import is_tf_available, is_torch_available
print(f"is_tf_available: {is_tf_available()}")
print(f"is_torch_available: {is_torch_available()}")

Hey @nikokks :wave:,
the most of this models does not have pretrained checkpoints but @odulcy-mindee and @charlesmindee are currently on it so stay tuned #969


tags.go.tpl file in code-generator doesn't handle some edge cases

Describe the bug
By using v0.20.1 version of code generator to generate controller, the function of ToACKTags cannot handle edge case of tag that both key and value are nil.
Steps to reproduce
applying yaml file:
apiVersion: memorydb.services.k8s.aws/v1alpha1
kind: ParameterGroup
metadata:
  name: test
spec:
    description: test
    family: memorydb_redis6
    name: test
    parameterNameValues:
          - parameterName: activerehashing
            parameterValue: "no"
    tags:
     - key: "1"
       value: "1"
     - key:

Expected outcome
Controller works well.
Outcome
Controller stops running after applying a tag with nil key and nil value.

Fixed in  aws-controllers-k8s/code-generator#374


[Feature Request] Allow toggling of Authentication Enabled Flag with Environment Variable

Details
It would be awesome to be able to toggle whether or not your Authentication is enabled via an environment variable so you can toggle for all requests at once rather than toggling each request individually.

That's interesting!
This is definitely possible with a simple plugin that just deletes the Authorization header for every request. It could even look at the env for a specific user-defined value.


Flatpac build

This issue pertains to the following package(s):

[X] GraphQL Playground

What OS and OS version are you experiencing the issue(s) on?
I am on fedora.
Please if possible provide a flatpac build of the app. This would be super handy for none snap or deb based linux systems to then have support via flatpac. ie fedora/redhat.

Is this a duplicate of #729 ?

yep, closing.


Validation of predicate inputs for nested predicates does not work

Predicates such as Or, And and Not currently fail to be validated correctly when used with multiple inputs.
We should introduce a new interface InputValidator that predicates can chose to implement in order for them to validate the input classes themselves.

Merged into develop.


Include "open source" as a column.

I believe this would be very informative to have a section that says whether or not the metaverse is under an open source license or not.

also, if it's decentralised. walled-gardens will fail and only one monopoly will be left if we don't use decentralised protocols (see twitter clones vs fediverse)


Advice to build a dictionary of already sorted keys

I have looked through the documentation and issues and it looks like keyvi itself sorts the data, for example when I read https://github.com/KeyviDev/keyvi/issues/181. In my case I have two numpy arrays, one with 5 billion keys and the another one with the corresponding values. We can sort our 5 billion keys in around 30 minutes using argsort. Therefore I wonder what would be the quickest way to build the keyvi dictionary from this? Does keyvi for example already notice the data is sorted (and does not have to check this again)?

Sorting is an important part of the construction of the finite state machine, so yes keyvi sorts the data and has used TPIE upfront but switched now to std::sort and boost::sort (parallel sort). Keyvi does not check whether data is sorted upfront.
Sorting algorithms usually run quicker if data is already sorted, the more interesting boost sort is explained here: https://www.boost.org/doc/libs/1_67_0/libs/sort/doc/html/sort/parallel.html. Keyvi uses block_indirect_sort, according to the docs its O(n).
Detecting sorting is an interesting idea however sort can be locale dependent, I am not sure if argsort == keyvi sort (equal to using locale C when using unix sort). So sorting upfront only works if it can guarantee the "right" sorting.
I would benchmark it:

presorted vs. unsorted (it might be faster to sort in keyvi, just because items are smaller in keyvi, but numpy sorts python objects)
different memory settings in keyvi, keyvi works for data sizes bigger than the available machine memory, the requirement for sorting is being able to sort super large data sets in an efficient way and overflowing to disk as needed. Therefore keyvi chunks the data, it respects the memory limit you give it. If you are able to give keyvi more memory, it will chunk less an run faster. I might be wrong but numpy works completely in memory, does it? I think playing with these settings might have a big impact, I guess your use case uses a large machine, giving keyvi more memory will not only let it run quicker but might result in better compression, too.

Having that said, keyvi has the concept of the generator, this is the part that constructs the FST from sorted data. It's only exposed for key-only dictionaries. If your measurements show its worth it, we can expose other generators. However, in the measurements that we did, the bottlenecks were always elsewhere.

Hey @hendrikmuhs  thank you so much for the quick response! I'm going to look at this in more detail :)

numpy works completely in memory, does it?

Exactly, this currently is not a big problem for us as we have 1.5TB RAM available, however ideally, as you said, it would be great to make this code work on smaller machines too!
I just create an array with "only" 10 million items and tried to create a keyvi from it, however, the compilation step is already running for like 30 minutes. Am I doing something wrong here?
import numpy as np
import lmdb
from keyvi.compiler import IntDictionaryCompiler, IntDictionaryMerger
import time
from tqdm import tqdm

# Generate data array
np.random.seed(1)
arr = np.arange(10000000)

# Keyvi
print('Setup')
dictionary_compiler = IntDictionaryCompiler({"memory_limit_mb": "100000"}) #100gb

# Insert
print('Inserting')
for key in tqdm(arr, total = arr.size ):
    dictionary_compiler.Add(str(key), int(key))  # int(key) would also be fine but this raised an error

# Compile
print('Compiling')
start = time.time()
dictionary_compiler.Compile()
dictionary_compiler.WriteToFile('kevi.dict')
print('Compiling took {}'.format(time.time() - start))

Do I get this right, you insert a counter from 1 to 10 million? Does your real data look like this, too?
This is not a good use of keyvi, keyvi exploits repetition on both the key as well as the value space. It won't work well for fully unique or truely random data.
I will look into it in more detail later, 10 million shouldn't be a problem. Are you running on slow disks maybe?

Your example code - except the 100GB limit, I don't have such a machine - takes 25 seconds for me on my 5 year old laptop. There is something wrong in your setup. Can you test without the 100GB memory limit? Is this a cloud machine? network attached ebs storage might slow it down.

Indeed, when I remove the limit = 100GB it runs in 7 seconds. Is that something related to keyvi or our server? (we use local machines, not cloud based servers)

Thanks! This sound like a bug to me. We have been using keyvi at large scale, but not on machines of that size. I guess there is some magic boundary.
Did limit = 100GB finish at all? Or did this trigger an endless loop?
I will try to reproduce with some larger values on another machine, but I don't have access to machines of similar size.
I still think you can/should increase the memory limit, but maybe you start simple with the defaults and than experiment with larger values step by step.
If you have time and resources to find out when it starts to run slow / loop forever, this information would be awesome.

I will run it tonight, the Netherlands here :), with limit = 100GB and check if it ever finishes. I Will let you know in the morning!

I thought to spend some time on this and was doing a binary search to find the turning point for memory limit.
Turns out that it's 99271.
My laptop has a 32GB of RAM, and if I use this line:
dictionary_compiler = IntDictionaryCompiler({"memory_limit_mb": "99271"})  # 100gb

It compiles the dict under 4 seconds.
But if I increase the limit by just 1 MB.
dictionary_compiler = IntDictionaryCompiler({"memory_limit_mb": "99272"})  # 100gb

It seems to never finish.
Moreover I can observe similar behavior even with 100000 keys.
arr = np.arange(100000)

but not with 10000.
arr = np.arange(10000)

@hendrikmuhs seems you have started looking into this, so I didn't run debugger and dig into the code, but let me know if you need a hand on this.

Update:
The run with 100k keys.
arr = np.arange(100000)

and with memory limit of 99272 MB finished after 424 seconds.
But if I set memory limit to 99271 MB it finishes under 0.13 seconds.

My investigation so far, it seems to be this method:
https://github.com/KeyviDev/keyvi/blob/master/keyvi/include/keyvi/dictionary/fsa/internal/minimization_hash.h#L85
For high numbers, like the the 100GB it suddenly starts returning 0 for both parameter it is supposed to produce. This makes the compiler run crazy and re-allocate for every state (every character).
What does this do: It tries to find a good configuration for using the given memory budget. This memory is used for minimization. Minimization == compression == finding duplicate subtrees in the constructed FST. This is done by using a stack of hash tables.
Poor design, this helper method deserves some love.

@rickbeeloo Thanks again for the bug report. I think #206 fixes the issue.
If you need further assistance, do not hesitate to ask. You can also use https://github.com/KeyviDev/keyvi/discussions which might be the better platform for discussions like this.
Back to the root: Have you already benchmarked using numpy's sort vs. keyvi's builtin sort?

and FWIW I will create a release package as soon as I find time.


Improve tpm api

Don't require the serialized public key to create a tpm_context.
Instead, require the serialized public key in order to create a member_key_pair_TPM (that's where it's actually needed).
Also, improve README on how to run tests using the TPM simulator.

Coverage decreased (-0.03%) to 96.027% when pulling 34da2c1dddfc766c533e742fadf4c90a910001ca on zanebeckwith:improve-tpm-api into a1482c7f1ad7c1b0d2de5f7327524c5a70c61f2b on xaptum:master.


Rename handler files to http_handler

Coverage remained the same at 100.0% when pulling f57d61e998f5c8d67ea4e594e6b5e77629e12b96 on rename-handler into d99b836394d9c04bc865e5b28ff756e10d360130 on master.


flow js uploading image using codeigniter

how can i upload image using flow js in codeigniter
it is working fine using php but not in codeigniter.
please suggest a solution

Please do not use codeigniter, there are better frameworks

@ AidasK: Which frameworks ???

but i need in codeigniter


Api response proper version

:clipboard: Reported by @jbunce
Overview
Changes API version in standard response to corresponds to OMG network version.
Changes
Quick fix changes the string in response template.
Proper fix is to use configuration value of https://github.com/omisego/elixir-omg/blob/591cff16177d3e588b3c8be43983d67ba3546728/apps/omg/config/config.exs#L13 which requires contract redeployment
Testing

It will backport to v0.2.1 through master with #810


rgb21 feature

Why do you keep opening multiple PRs with the same content and instantly closing them?

Sorry for that, it's my misoperation, I opened and closed them because I found that I didn't pull the updates of the latest beta5 version.


basic npm setup, full cypress tests

Added E2E tests with cypress to check all responses of user are working

Hi Aditya,
It's been a while since you submitted this and I just wanted to thank you for it and acknowledge it.
I've been too busy to properly review it, and I'm not familiar with Cypress so I need to sit down and install/figure it out. I will do this at some point.
So, huge thanks for the contribution. When I get some more time on Peekobot I'll have a review and see if I can merge this.
Thanks again!
Ross


refactor(pubspec): bump versions as of Flutter SDK 3.7.0

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 42.935%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
474

Relevant Lines:
1104

💛  - Coveralls


Bugfix: display correct caption assigned to each image

Inline images are displayed with small image and without caption
Captions are always center to the images even when those are aligned to the left or the right of the page
Horizontal lines are clearing out the float left/right of text
Small visualization improvement video

resolves WEB-2307

@krystiankedra
can you take a look to this merge as it comes with certain number of changes and potential regression on the image visualization while it fixes a few defects?

@krystiankedra can you take a look to this merge as it comes with certain number of changes and potential regression on the image visualization while it fixes a few defects?

I will take a look today on it

Do you have some experience on how to implement a generic NestJS middleware for this?
https://sonarcloud.io/project/issues?resolved=false&sinceLeakPeriod=true&pullRequest=579&id=Sanofi-IADC_konviw&open=AY-XKbOYAq0d5Oa37unX

Do you have some experience on how to implement a generic NestJS middleware for this? https://sonarcloud.io/project/issues?resolved=false&sinceLeakPeriod=true&pullRequest=579&id=Sanofi-IADC_konviw&open=AY-XKbOYAq0d5Oa37unX

Hmm not yet but in some free time I will investigate about it


correctly turn off encryptor

don't initialize encryptor if config is empty and do not add it to OnQuery observers. it helps to avoid extra parsing of incoming queries

Can we test it somehow?

I will add tests soon to this pr


integrate Microsoft teams meeting room function

Our springboot system needs to integrate Microsoft teams meeting room function, is what we need in our springboot system to add the function of the meeting, what should I do?Have related demo?

@zsoftbuilder -Are you developing Microsoft Teams APP?

Not the APP, just in the existing springboot system integration teams function

@zsoftbuilder - Please have look at this document-
1.https://docs.microsoft.com/en-us/microsoftteams/rooms/third-party-join?msclkid=36a9b9cfd11b11eca80f4e8eee634858
2.https://docs.microsoft.com/en-us/MicrosoftTeams/rooms/rooms-deploy?msclkid=36aa938fd11b11ec93ccb4bd108cc66b

@zsoftbuilder - Could you please confirm if your issue has resolved with above suggestion or still looking for any help?

We are closing this issue for now, please feel free to reopen it, if required.


Voidling's second phase does not spawn while the Artifact of Universe is active while used in conjunction with HIFU's Optimization mod

LogOutput.log
Tested with RiskyArtifacts, Optimization, AeroLt (to quickly get to and kill Voidling), and their requirements.

Judging by the log, I believe the issue is on Optimization's end.

I'll take it up with HIFU then.


Request: Integration with Action Center

Hey man, thanks for making this Display for Growl-for-Windows.
It was super easy to install - just pasted the unzipped folder into the Displays folder of Growl, set it as default, and I was up and running!
Would it be possible to integrate the notifications into Action Center?
(So that, once they slide out of screen, if I miss the notification it'll be waiting for my attention in the Action Center!)
Thanks for your time and effort, and for putting this out for free!

Thanks for bringing this up.
I did a bit of digging, and, as it turns out, the process for getting notifications to persist from a desktop program is quite complex.
I will try to get something up when I have time, though it might take a while.

Thank you for such a quick reply and for looking into what seems like a terribly complicated task!
Man, I have a feeling this is probably more trouble than it's worth, so please don't spend too much time obsessing over making this work :-s
Thanks again for your kind effort, and best wishes!

I finally got my hands on a Windows 10 machine.
I've tested, and the action center does keep old Toaster messages:

However, I did actually implement support for Growl's CloseAllOpenNotifications and CloseLastNotification handlers, so it's possible (and quite likely) that Growl is sending those.
Are your Growl idle settings currently set to "Never consider me idle or away"?
If you want, I can add an option to ignore commands from Growl to close notifications.

It's also possible that whatever you have sending the notifications to Growl is doing this.
If you want to try the new option and see if that works for you, grab v0.2a. Let me know how that goes.

Hey man, thanks for working on this!
I tried out the new version, and it works well as before, but the notifications don't stay in the action center. While a notification is on-screen, if you open the control center, this notif will appear under the GrowlToToast section. But, if you reopen the action center, all notifs are gone :/ (without dismissing). If the notification has already slided-out, then there is no trace in action center.
And yea, I made sure to "Never consider me idle" and tested both new options in the GrowlToToast display.
I'm not sure, but I think it might have to with the fact that Growl does not register as a notifying app in windows settings>notifications.If it were, then you can go into its additional settings where you can select whether you want a sound, silently go to action center without slide-in alert, or disable notifications entirely.
I don't know if this is a brick wall :-s but again thank you so much for working on this!
There are some non-essential notifications for which this display is just perfect, e.g. every time winamp changes song, i see this little native windows slider come in, and it looks Awesome!

@g

I think I might've gotten it this time. Give v0.2a3 a shot and let me know how it goes.

This is amazing, it works!! The notifications stay in the Action Center after they slide out or are closed - great work my friend, thank you very much!


TST: Add py3.9 to test matrix

Drop 3.7.

Ack - looks like osx 3.9 numpy wheels still aren't quite available.

@richafrank So this passes CI now, but we do have a mild performance regression! Cool to see that CI in action.

So this passes CI now, but we do have a mild performance regression! Cool to see that CI in action.

So nice that we can see that! Anything obvious we should change in our numpy usage, or shall we just accept the regression?

(The diff itself looks reasonable to me.)

There was nothing obvious in the release notes: https://github.com/numpy/numpy/releases/tag/v1.19.3.
I was going to do some mild profiling locally, but merge this otherwise if there was nothing obvious.

Sounds good to me.

Profiling calendar init, the difference in time is in _all_days = date_range(start, end, freq=self.day, tz=UTC) during the building of the calendar.
Going to merge this as that's all outside our code and I still is a reasonable thing to do.


softRevalidate error when no fetcher or default fetcher provided.

I'm trying to use swr to read in a value without a fetcher, since I know the fetch was started elsewhere (tab one).
Using the provided demo, tab between one and three.  Eventually you'll see the following error:
index.js:1375 Result Error TypeError: fn is not a function
    at use-swr.js:213
    at softRevalidate (use-swr.js:321)

Because currently a fetcher is always required by SWR, either you provide it via the options param, or pass it to the SWRConfig context.
But we plan to support this feature, so SWR can handle the case that no fetcher is provided (e.g.: just read from the cache).
With #106 (cc @aequasi), so things like #76 can be much simpler:
useSWR('key', { initialData })


[Custom Dialog] Shift+Tab doesn't work

#71116 Issue Type: Bug

Press Shift+Tab
Focus is on the same button

VS Code version: Code - Insiders 1.33.0-insider (966b87dd4013be1a9c06e2b8334522ec61905cc2, 2019-03-26T01:05:50.235Z)
OS version: Windows_NT x64 10.0.17763

Please provide reproducible steps and make clear what you expect and what is actually happening.

Expected: Focus moves to the previous button

Same on Mac

+1 on WIndows


Add new API getNetworkId

Closes # .
Pre-review checklist

[ ] All code has been formatted using our config (make format)
[ ] Any new API features or modification of existing behavior is covered as defined in our test plan
[ ] The changelog has been updated under the ## Unreleased header, using the appropriate sub-headings (### Added, ### Removed, ### Fixed), and the links to the appropriate issues/PRs have been included

This will be in https://github.com/Plutonomicon/cardano-transaction-lib/pull/1066


Release and activity

Hi there,
I've been working on a library that uses pancurses. Tough I had some complications with some features that it was still lacking. When I checked out the pull requests there were some valuable ones that can be very useful and fixed my problems if they were merged and released.
The activity of this library is very low. Is there any plan to do a new release and work trough the pull requests? If not I am afraid I have to work around this problem by forking this library and releasing it to get the features that I need.

Hi,
I have very limited time to work on pancurses right now. I haven't abandoned it but the speed of updating won't be improving any time soon.


[mds-policy][mds-db] Implement policy publishing and editing

PR Checklist

[ ] simple searchable title - [mds-db] Add PG env var, [config] Fix eslint config
[ ] briefly describe the changes in this PR
[ ] mark as draft if should not be merged
[ ] write tests for all new functionality

Impacts

[ ] Provider
[ ] Agency
[ ] Audit
[ ] Policy
[ ] Compliance

@avatarneil I should probably do the admin endpoints for publishing too, eh? I just realized that as I cut this PR. But I'd appreciate a sanity check from you before deeper into this.
@karcass What's with that bit about unpublished having no effect if you have a provider_id in your token? If you don't have a provider_id, these endpoints won't authorize you at the moment. Should that change?


key error in kf_serving_watch.py when running kfs-pipeline.ipynb sample

Hi,
Goal: I'm trying to run the top example of kfserving pipeline samples (see: https://github.com/kubeflow/kfserving/blob/master/docs/samples/pipelines/kfs-pipeline.ipynb)
What I changed:
client = kfp.Client()
namespace = 'anonymous'
What I expected to happen:
For a model to be deployed through kubeflow pipelines
What actually happened:
The step in the pipeline failed with exit code 1
Traceback (most recent call last):
  File "kfservingdeployer.py", line 177, in <module>
    autoscaling_target=autoscaling_target
  File "kfservingdeployer.py", line 105, in deploy_model
    KFServing.create(kfsvc, watch=True, timeout_seconds=120)
  File "/usr/local/lib/python3.6/site-packages/kfserving/api/kf_serving_client.py", line 102, in create
    timeout_seconds=timeout_seconds)
  File "/usr/local/lib/python3.6/site-packages/kfserving/api/kf_serving_watch.py", line 48, in watch
    url = kfserivce['status'].get('url', '')
KeyError: 'status'

Other info:

kubernetes v1.14.9-eks
kubeflow v1.0.1
knative v0.11.1
kfserving v0.3.0
Notebook server setup from kubeflow central dashboard, image used is tensorflow-1.15.2-cpu:1.0.0

Any tips to get this example up and running would be highly appreciated!
Kind regards, Koen

Update
Today after setting up the cluster and deploying kubeflow, kfserving and prerequisites I tried the sklearn-iris CLI example (https://github.com/kubeflow/kfserving/blob/master/README.md#test-kfserving-installation )
Success!
However, setting up a notebook server after this deployment no longer worked: Insufficient CPU
Maybe that partially explains why the example wouldn't run? Although the error from my original post doesn't clarify, maybe my cluster had no more resources.
deleted deployments sklearn-iris, pytorch-operator and tensorboard to create some room
also changed namespace='anonymous' to namespace='kubeflow', as the passed namespace should be equal to the namespace where kfserving is running (from description in: https://github.com/kubeflow/pipelines/blob/master/components/kubeflow/kfserving/component.yaml)
After these changes I no longer run into the original posted error but this one:
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/kfserving/api/kf_serving_client.py", line 92, in create
    inferenceservice)
  File "/usr/local/lib/python3.6/site-packages/kubernetes/client/apis/custom_objects_api.py", line 178, in create_namespaced_custom_object
    (data) = self.create_namespaced_custom_object_with_http_info(group, version, namespace, plural, body, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/kubernetes/client/apis/custom_objects_api.py", line 277, in create_namespaced_custom_object_with_http_info
    collection_formats=collection_formats)
  File "/usr/local/lib/python3.6/site-packages/kubernetes/client/api_client.py", line 334, in call_api
    _return_http_data_only, collection_formats, _preload_content, _request_timeout)
  File "/usr/local/lib/python3.6/site-packages/kubernetes/client/api_client.py", line 168, in __call_api
    _request_timeout=_request_timeout)
  File "/usr/local/lib/python3.6/site-packages/kubernetes/client/api_client.py", line 377, in request
    body=body)
  File "/usr/local/lib/python3.6/site-packages/kubernetes/client/rest.py", line 266, in POST
    body=body)
  File "/usr/local/lib/python3.6/site-packages/kubernetes/client/rest.py", line 222, in request
    raise ApiException(http_resp=r)
kubernetes.client.rest.ApiException: (404)
Reason: Not Found
HTTP response headers: HTTPHeaderDict({'Audit-Id': '631ffd1e-33ff-4464-878a-70c9d0ac3a2d', 'Content-Type': 'text/plain; charset=utf-8', 'X-Content-Type-Options': 'nosniff', 'Date': 'Fri, 03 Apr 2020 09:18:17 GMT', 'Content-Length': '19'})
HTTP response body: 404 page not found
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "kfservingdeployer.py", line 177, in <module>
    autoscaling_target=autoscaling_target
  File "kfservingdeployer.py", line 105, in deploy_model
    KFServing.create(kfsvc, watch=True, timeout_seconds=120)
  File "/usr/local/lib/python3.6/site-packages/kfserving/api/kf_serving_client.py", line 96, in create
    %s\n" % e)
RuntimeError: Exception when calling CustomObjectsApi->create_namespaced_custom_object:                 (404)
Reason: Not Found
HTTP response headers: HTTPHeaderDict({'Audit-Id': '631ffd1e-33ff-4464-878a-70c9d0ac3a2d', 'Content-Type': 'text/plain; charset=utf-8', 'X-Content-Type-Options': 'nosniff', 'Date': 'Fri, 03 Apr 2020 09:18:17 GMT', 'Content-Length': '19'})
HTTP response body: 404 page not found

What would be best, should I create a new issue for the new error? And can someone confirm the original error occurs when insufficient CPUs are available?

/cc @jinchihe @animeshsingh

Fixed in commit
https://github.com/kserve/kserve/blob/7baebda3ea4b2d856550e77eb0ee6e36da5d6fc5/python/kserve/kserve/api/kserve_client.py#L296


WIP: auth-proxy cleanup

WIP!  DO NOT MERGE...yet - I am having difficulty with building the frontend at the moment, so I have not had a chance to do an end-to-end test yet.  Once I've confirmed this is all working, I will remove the WIP.

This PR has all sorts of good stuff.

Upgrades to latest mod_auth_openidc.

Container no longer runs as root!  It now starts the parent process as www-data, and sticks to that user for all child processes.

Disables a lot of unused Apache modules and configs, and simplifies the configs that are there.  There's more work to be done here, but I think this is a good first take.

Makes logging consistent across all of Apache, and allows you to set the LogLevel via a new LOG_LEVEL envvar, which you can pass in via a Docker envvar.

Creates a status page at the root resource (https://<IP_ADDRESS>:4443/ locally).  I modeled this after the status endpoints of our APIs.  The only thing missing is an upSince, which I couldn't figure out how to do without executing a shell command from within the template, and I wasn't about to enable that.  It looks like:
{
  "message": "Welcome to auth-proxy",
  "status": "OK",
  "time": "2016-12-22T08:45:44Z",
  "host": "3f433fa5c763"
}

Converts all Apache error pages into JSON messages.  The most common is likely a 401 Unauthorized, which is what you get when you attempt to call the API, but your credentials are invalid.
{
    "httpStatus": 401,
    "message": "Unauthorized",
    "path": "/hmda/"
}

...but you could also see 404s...
{
    "httpStatus": 404,
    "message": "Resource Not Found",
    "path": "/abcdefg"
}

...or perhaps a 502 - Bad Gateway if auth-proxy is up, and you're authenticated, but the API is down:
{
    "httpStatus": 502,
    "message": "Bad Gateway",
    "path": "/hmda/institutions"
}

...also, there is a companion PR for the docker-compose.yml coming soon.  It basically just adds the new LOG_LEVEL envvar and updates the ports on auth_proxy service.

The companion PR is cfpb/hmda-platform#756.  These PRs should be merged at the same time.

Taking the WIP flag off.  I also renamed the issue as this has become a bit more than a cleanup. :)
@wpears, its all yours.

Thanks @wpears!  Yeah, I switched to this layout since this is a Debian-style Apache install, which does split the config up into little snippets (configlets?).  This layout is nice when you're hosting a bunch of different sites, with different setups, but I actually feel it adds unnecessary complexity for our particular usecase.  I'm considering merging them at some point.  Happy to discuss further, though.


WIP: Create a lightweight base docker image

Close #10

Some interesting articles for this task:
First of all how to create a docker image as light as possible : https://luis-sena.medium.com/creating-the-perfect-python-dockerfile-51bdec41f1c8
Ideally I would like to use mamba for dependency resolution, so I need conda in my installation: https://fabiorosado.dev/blog/install-conda-in-docker/
Finally, I have the impression that there are interesting things to look at with distroless and conda-lock, but it seems more useful for images that go into production, so it is to investigate : https://uwekorn.com/2021/03/01/deploying-conda-environments-in-docker-how-to-do-it-right.html


Controller dependent reachable set for continuous ODEs with non-linear dynamics

Hi, thank you for your work! May I know if it is possible to compute a controller-dependent reachable set for continuous ODEs with non-linear dynamics? I checked out the example for Quadrotor, but it only supports one fixed target. How can I get the reachable set with a set of control inputs or a certain control policy? Thank you!

Hi @yuzhou42, thanks for your interest in our work. We don't have an out-of-the-box user/solver interface for the type of problem that you want to solve: some manual work has to be done to prepare and solve such problems using JuliaReach.
Can you give us more details on the problem you want to solve, or a solution that you have attempted? Or an article doing a similar work? We would be happy to help if you have problems using our library.
Let me also comment on the other repo, https://github.com/JuliaReach/NeuralNetworkAnalysis.jl . In that case, the controls are given by neural network outputs, but if you have say, a Julia function instead, i think it shouldn't be hard to adapt such solver to use it. In fact you could check the simple black_box_toy_model.jl; the controller in this case is the function called "oscillator" and is state-dependent and it is applied at each multiple of the period.

Hi @mforets,
Thank you for your reply!
I'm facing two issues. First is that I'm not sure how to feed in the set of admissible control input signals for a continuous ODEs as there are no similar examples.
Second is that I tried the cartpole model with ReachabilityAnalysis, but couldn't get it run for more than 1s. Here is the sample code:
@taylorize function cartpole!(dx, x, params, t)
    local m_c, m_p, l, g, u = 0.85944, 17.08072, 0.4626, 9.81, 0
    dx[1] = x[3]
    dx[2] = x[4]
    dx[3] = 1.0/(m_c+m_p*sin(x[2])^2)*(u+m_p*sin(x[2])*(l*x[4]^2-g*cos(x[2])))
    dx[4] = 1.0/(l*(m_c+m_p*sin(x[2])^2))*(-u*cos(x[2])-m_p*l*x[4]^2*cos(x[2])*sin(x[2])+(m_c + m_p)*g*sin(x[2]))
    return dx
end
X0 = Hyperrectangle(low=[0,-1,0,0], high=[0,1,0,0]);
prob = @ivp(x' = cartpole!(x), dim=4, x(0) ∈ X0 * 0.001)
@time sol = solve(prob, tspan=(0.0,0.5), alg=TMJets(maxsteps=1000000, abstol=1e-10));

The error output is like

┌ Warning: Minimum absolute tolerance reached:
│   t[0] = 0.8112222762549506
│   E′ = IntervalArithmetic.Interval{Float64}[Interval(-Inf, Inf), Interval(-Inf, Inf), Interval(-Inf, Inf), Interval(-Inf, Inf)]
│   E = IntervalArithmetic.Interval{Float64}[Interval(-Inf, Inf), Interval(-Inf, Inf), Interval(-Inf, Inf), Interval(-Inf, Inf)]
│   _success = false
│   all(iscontractive.(E′, E)) = false
│   reduced_abstol = 1.0000000000000003e-51
└ @ TaylorModels /home/yu/.julia/packages/TaylorModels/b295K/src/validatedODEs.jl:747
┌ Warning: Maximum number of validate steps reached.
│   t[0] = 0.8112222762549506
│   E′ = IntervalArithmetic.Interval{Float64}[Interval(-Inf, Inf), Interval(-Inf, Inf), Interval(-Inf, Inf), Interval(-Inf, Inf)]
│   E = IntervalArithmetic.Interval{Float64}[Interval(-Inf, Inf), Interval(-Inf, Inf), Interval(-Inf, Inf), Interval(-Inf, Inf)]
│   _success = false
│   all(iscontractive.(E′, E)) = false
└ @ TaylorModels /home/yu/.julia/packages/TaylorModels/b295K/src/validatedODEs.jl:762
┌ Warning: Exiting due to unsuccessfull step
│   _success = false
│   t0 = 0.8112236622119696
└ @ TaylorModels /home/yu/.julia/packages/TaylorModels/b295K/src/validatedODEs.jl:894

I checked out the black_box_toy_model.jl example you pointed out, it is somewhat similar to what I wanted to do. But unfortunately, I couldn't add NeuralNetworkAnalysis successfully to run it.
Best,
Yu

. But unfortunately, I couldn't add NeuralNetworkAnalysis successfully to run it.

just in case: the package is not registered yet so you need to do
] add https://github.com/JuliaReach/NeuralNetworkAnalysis.jl.git

or did you get an error elsewhere?
Concerning the cartpole model until 1s, it may help to start with subsets of the initial states and find algorithm parameters that give reasonable results (in terms of runtime and accuracy).
Moreover, it is possible to get a factor of ~2x perf improvement if you follow the tips about the @taylorize macro explained here, because that helps the way the macro works. In this case I wrote:
@taylorize function cartpole_v2!(dx, x, params, t)
    local m_c, m_p, l, g, u = 0.85944, 17.08072, 0.4626, 9.81, 0

    aux0 = sin(x[2])
    aux1 = aux0^2
    aux3 = cos(x[2])
    aux4 = x[4]^2
    aux5 = m_c + m_p*aux1
    aux6 = l*aux4 - g*aux3
    aux7 = m_p*l*aux4*aux3*aux0
    aux8 = (m_c + m_p)*g*aux0
    aux9 = u + m_p*aux0*aux6
    aux10 = -u*aux3-aux7+aux8
    aux11 = 1.0 / aux5
    aux12 = aux10 / l

    dx[1] = x[3]
    dx[2] = x[4]
    dx[3] = aux11 * aux9
    dx[4] = aux11 * aux12
    return dx
end

Here are some results. I didn't play too much with parameters, so I expect there is room for improvement. Moreover, it may be worth to try the multi-threaded flowpipe computation (start julia with a number of threads > 1, the default threading option should dispatch correctly): I'd be interested to know what results do you get.
X0 = Hyperrectangle(low=[0, -0.001,0,0], high=[0, 0.001,0,0]);

# here i chose a deliberately large number or splits in the x2 direction.. try with smaller values!
X0s = split(X0, [1, 100, 1, 1])

prob = @ivp(x' = cartpole_v2!(x), dim=4, x(0) ∈ X0s);

alg = TMJets21a(maxsteps=10_000, abstol=1e-5, orderQ=1, orderT=4, adaptive=true)
@time sol = solve(prob, tspan=(0.0, 1.0), alg=alg);

# plots
#plot(sol, vars=(0, 1), xlab="t", ylab="x₁", alpha=0.8, lw=0.0, c=:blue)
#plot(sol, vars=(0, 2), xlab="t", ylab="x₂", alpha=0.8, lw=0.0, c=:blue)

Hi @mforets, thank you for your help. With multithreading, the calculation time for the same setup is about 126s on my side. Decreasing the number of splits to 10 also speeds up the time to 12s for 1s reachable set. But I find it's still a bit hard to tune when I increase the time for the reachable set to more than 1s. May I know how I can add constraints on the states? Thanks!

With multithreading, the calculation time for the same setup is about 126s on my side. Decreasing the number of splits to 10 also speeds up the time to 12s for 1s reachable set.

:+1:  Good to know that with 10 splits you can reach to the desired time horizon. As usual, there is a tradeoff between the quality of the approximation and the computational resources used, and with more splitting to cover the initial set you may expect smaller sets at intermediate and final time (there are exceptions though).

But I find it's still a bit hard to tune when I increase the time for the reachable set to more than 1s.

Unfortunately, the current state of affairs is that parameter tuning cannot be avoided in most scenarios. In fact, finding good parameter heuristics at runtime is a research problem, see e.g. [1].

May I know how I can add constraints on the states?

IIUC you'd like to evaluate one or more reach-sets, make some transformation on the state variables and continue the computation with those new values. An example of a computation along those lines can be found here, where X is the current reach-set in n + m variables (n state variable and m control variables), and U0 is a set that corresponds to the new control values; it is a set in R^m.
Understanding this would require familiarity with TaylorModels.jl, TaylorSeries.jl and IntervalArithmetic.jl which make the basis for the internal representation of Taylor model reach-sets used in this library, and also the range approximation strategies using sets from LazySets.jl. We plan to add publicly available documentation soon, and we are preparing a workshop to give at the JuliaCon 2021 conference on these aspects [2]. You are invited to attend the workshop!
PS feel free to reach us on gitter or the (JuliaLang) zulip channel reachability-analysis
[1] https://ieeexplore.ieee.org/document/9304431
[2] https://github.com/JuliaReach/JuliaCon-2021-Workshop-Its-All-Set

May I know how I can add constraints on the states?

Maybe I misunderstood your question. Do you have an example of the type of constraints that you want to add? For instance if you want to add conditions (spatial or temporal), that is achieved by adding an invariant to the system definition, like @ivp(x' = cartpole_v2!(x), dim=4, x(0) ∈ X0s, x ∈ W), where W is an n-dimensional set. Then, whenever a reach-set is disjoint with the invariant W, the simulation halts.

Thank you for your help @mforets! You've solved all the questions I have so far. Looking forward to the new documentation and the workshop!


An icon to visit engine's website in Options page

It's an idea that I would want to visit a search engine's website to understand its pages and descriptions, such as the IQDB. Click the name will enter to editing mode instead of visiting the site, it should have a small icon column for visiting the site, and stores a new field for the visit url.

This OK for default providers, but NOT for custom providers.
I have no idea how to place "visit icon" look better than now.
The width of row may different between default and custom providers.

I also don't think it's necessary tbh. Users will see the favicon and also can click on edit and see the full URL and they can visit the domain manually. It would also not be so easy to implement it for custom providers as FlandreDaisuki said.
I don't want to clutter the interface, I want to keep it simple and understandable. So I will mark this as "rejected".


run datahub ingest failed

hi everyone
i got failed when i run "datahub ingest -c ./examples/recipes/mysql.yml".help me please,thanks
debug log :
{datahub.entrypoints:64} - Using config: {'source': {'type': 'mysql', 'config': {'username': 'root', 'password': 'root', 'database': 'mydatebase', 'host_port': 'localhost:3307', 'table_pattern': {'deny': ['performance_schema'], 'allow': ['mydatebase.my_table']}}}}
message:
1 validation error for PipelineConfig
sink
field required (type=value_error.missing)

Hi @liqi444 - you'll need to add a sink to your recipe configuration as well - see these docs: https://datahubproject.io/docs/metadata-ingestion/#sinks.
For example, if you started DataHub using the quickstart guide, you might do this:
source: <same as before>

sink:
  type: "datahub-rest"
  config:
    server: 'http://localhost:8080'

Hi @liqi444 - you'll need to add a sink to your recipe configuration as well - see these docs: https://datahubproject.io/docs/metadata-ingestion/#sinks.
For example, if you started DataHub using the quickstart guide, you might do this:
source: <same as before>

sink:
  type: "datahub-rest"
  config:
    server: 'http://localhost:8080'

thank you


Should [DesignTimeProviderServices] be in M.EFCore.dll?

It's currently in Relational, but for the same reasons as [DbContext], it feels like it should be in the core assembly.
cc @lajones

I've no objection. If we had a "provider functionality but for all providers, not just relational ones" nupkg to me it would be better there. But since we don't have that EFCore is fine. But what were the reasons for [DbContext]?

The main reason behind putting [DbContext] there was that, even though it is currently only used by relational providers, it is a general enough concept that could be expanded to other classes of providers.

Yep - agreed - it's pretty much the same situation.

Fixed with 8b40798.

Note for providers: the namespace and name of the attribute didn't change - just which package it is stored in - from Microsoft.EntityFrameworkCore.Relational to Microsoft.EntityFrameworkCore.


Search UI Enhancements

move sort box
recolor sortbox
recolor grid/list buttons
changes to facet layout
add collapsable menu for facets and sort box
some general cleanup of layout

:+1:


Fixing BigQueryFileLoads test for windows.

r: @udim

I've replaced _ with .. I'm leaving the : to . for later.

That's the reason I'm not replacing ATM- because I'm not sure if it could break anything.


ci: Update keycloak image version for integration testing

Description
Update keycloak image to latest version 17.0.0-legacy => 17.0.1-legacy for integration testing
Checklist (Definition of Done)

[ ] All acceptance criteria specified in JIRA have been completed
[ ] Unit and integration tests added that prove the fix is effective or the feature works (tested against emulated and non-emulated OCM environment)
[ ] Documentation added for the feature
[ ] CI and all relevant tests are passing
[ ] Code Review completed
[ ] Verified independently by reviewer
[ ] Required metrics/dashboards/alerts have been added (or PR created).
[ ] Required Standard Operating Procedure (SOP) is added.
[ ] JIRA has created for changes required on the client side

Thanks for the PR @VanillaSpoon. It looks good to me. Let's see what CI says.
@akoserwal what do you think?


[OpenAPILSExtention]Improve openAPI language server error message

Purpose

Goals

Providing a meaningful full error message for the user

Approach

Add the field to response for storing the error.

Close the favour of this PR https://github.com/ballerina-platform/ballerina-openapi/pull/668


MAXO:0035094	platelet aggregation assay

MAXO:0035094	platelet aggregation assay
Def: An assessment of how well platelets aggregate (clump together) in the process of blood clotting.

added via template


feat(projects)!: Change shortname to xsd:NCName forma, Escape special character in payloads of projects endpoints (DSP-1555 )

resolves DSP-1555

@SepidehAlassi I forgot, could you maybe add a line to the migration notes?


Core Jon Snow still contributes strength when other attackers removed from challenge

If you kill/remove the attacking characters from a challenge while Core Jon Snow is on the board, he continues to add his str through to resolution,

Thanks for reporting. Fix is in. :)