Use Julia's type-inference to automatically detect which control-flow statements need tracing

So @jumerckx and I had this nice discussion on Slack in which we came to the conclusion that we can use Julia's type-inference to select which control-flow statements (I'm thinking of if but for or while could apply).
Based on @jumerckx work on IRCode introspection, we can do sth similar to @makslevental mlir-python-extra's capability of converting Python ifs constructs from the AST to MLIR scf.if ops. Although this is nice for a potential Brutus implementation, it doesn't completely fit Reactant's/XLA array processing model. The reason is that in Reactant's model, some statements in the traced code are considered "constant" from the MLIR's point of view. Basically, all code that doesn't deal with runtime values of traced TracedRArrays can safely be considered constant.
Reactant has a multistage compilation procedure:

We retrieve the IRCode with our own abstract interpreter (derived from Enzyme.jl) for replacing some methods
Currently not fully exploited but the idea is that control-flow analysis would run here with the IRCode from point (1)
We compile the IRCode and run the function, which emits the MLIR code
We command XLA to compile the MLIR and wrap the flattening/unflattening + compiled function call + sync calls in a Thunk

The idea is that in step (2), we would use the type-inferred type of the predicate of the conditionals to check whether we need to emit a stablehlo.if op on that conditional; i.e. stablehlo.if only should be emitted if the predicate on Julia if is a TracedRNumber{Bool}, so Julia's type-inference could tell us that for free.
@wsmoses later stated that there's another approach using Polygeist, which actually would allow us to get more Julia code into MLIR. I'm writing this here because it might be beneficial in mid-term, but mainly because it's a nice side-effect of using Julia for this and we don't want to forget it in case we need to revisit.

Polygeist wont get us more code into MLIR but it will automatically structure the code once in MLIR

I will note that types alone won’t be sufficient, we’d need to ensure that the types are guaranteed to have the same number and type of traced values . Eg a union type would be invalid. However we can be conservative and only auto lower control flow to known good types

We also will need to replace typenunstable calls to a new method that also calls our own abstract interpreter (but also note that we obviously can’t auto control flow any code with a type unstable code)

Julia's type-inference to select which control-flow statements

umm how is this possible? how does Julia's type system connect to Julia's CFG?

It doesn't. But we're generating mlir at Julia runtime and we simply execute e.g. for loops if they don't contain traced mlir values.

Polygeist wont get us more code into MLIR but it will automatically structure the code once in MLIR

yeah, i expressed it incorrectly. what i meant is that the whole approach of taking the LLVM IR from Julia, passing it to LLVM dialect and using Polygeist to raise to structured control-flow will effectively get Julia code into MLIR, not only the emitted HLO ops during tracing that we have right now.

I will note that types alone won’t be sufficient, we’d need to ensure that the types are guaranteed to have the same number and type of traced values . Eg a union type would be invalid. However we can be conservative and only auto lower control flow to known good types

We also will need to replace typenunstable calls to a new method that also calls our own abstract interpreter (but also note that we obviously can’t auto control flow any code with a type unstable code)

completely agree. in any case, this idea applies to the predicates.

In my fork of Brutus I used for HLS FPGA kernels, I explore control flow raising from JuliaIR with for and if. It's work pretty well and I think is a interesting approach because one can get Iterator type and const information such as invoke Base.iterate($(QuoteNode(1:16))::UnitRange{Int64}, %4::Int64)::Union{Nothing, Tuple{Int64, Int64}} in the following example:
(C::StaticArray((16, 16), Float64), A::StaticArray((16, 16), Float64), B::StaticArray((16, 16), Float64)) -> begin
    for i in 1:size(A, 1)
        for k in 1:size(A, 2)
            for j in 1:size(B, 2)
                C[i, j] += A[i, k] * B[k, j]
            end
        end
    end
    return nothing
end

with the following JuliaIR:
  1 ──       nothing::Nothing
2 2 ┄─ %2  = φ (#1 => (1, 1), #9 => %27)::Tuple{Int64, Int64}
  │    %3  = Core.getfield(%2, 1)::Int64
  └─── %4  = Core.getfield(%2, 2)::Int64
3 3 ┄─ %5  = φ (#2 => (1, 1), #7 => %22)::Tuple{Int64, Int64}
  │    %6  = Core.getfield(%5, 1)::Int64
  └─── %7  = Core.getfield(%5, 2)::Int64
4 4 ┄─ %8  = φ (#3 => (1, 1), #5 => %17)::Tuple{Int64, Int64}
  │    %9  = Core.getfield(%8, 1)::Int64
  │    %10 = Core.getfield(%8, 2)::Int64
5 │    %11 = invoke Base.getindex(_2::StaticArray{(16, 16), Float64, 2}, %3::Int64, %9::Int64)::Float64
  │    %12 = invoke Base.getindex(_3::StaticArray{(16, 16), Float64, 2}, %3::Int64, %6::Int64)::Float64
  │    %13 = invoke Base.getindex(_4::StaticArray{(16, 16), Float64, 2}, %6::Int64, %9::Int64)::Float64
  │    %14 = Base.mul_float(%12, %13)::Float64
  │    %15 = Base.add_float(%11, %14)::Float64
  │          invoke Base.setindex!(_2::StaticArray{(16, 16), Float64, 2}, %15::Float64, %3::Int64, %9::Int64)::Any
6 │    %17 = invoke Base.iterate($(QuoteNode(1:16))::UnitRange{Int64}, %10::Int64)::Union{Nothing, Tuple{Int64, Int64}}
  │    %18 = (%17 === nothing)::Bool
  │    %19 = Base.not_int(%18)::Bool
  └───       goto #6 if not %19
  5 ──       goto #4
7 6 ── %22 = invoke Base.iterate($(QuoteNode(1:16))::UnitRange{Int64}, %7::Int64)::Union{Nothing, Tuple{Int64, Int64}}
  │    %23 = (%22 === nothing)::Bool
  │    %24 = Base.not_int(%23)::Bool
  └───       goto #8 if not %24
  7 ──       goto #3
8 8 ── %27 = invoke Base.iterate($(QuoteNode(1:16))::UnitRange{Int64}, %4::Int64)::Union{Nothing, Tuple{Int64, Int64}}
  │    %28 = (%27 === nothing)::Bool
  │    %29 = Base.not_int(%28)::Bool
  └───       goto #10 if not %29
  9 ──       goto #2
9 10 ─       return Main.nothing
   => Nothing

That is translated and raised to a julia Dialect that can be translated directly to SCF and other standard dialect. I used LLVM loop analysis mlir::CFGLoopInfo and it was able to recover complex nested loop.
module {
  func.func @main(%arg0: !JC<StaticArray{(16, 16), Float64, 2}>, %arg1: !JC<StaticArray{(16, 16), Float64, 2}>, %arg2: !JC<StaticArray{(16, 16), Float64, 2}>) {
    goto()[^bb1] : ()
  ^bb1:  // pred: ^bb0
    "loop"() ({
      %1 = ConstantOp {value = #s<Base.UnitRange{Int64}(start=1, stop=16)>} : (!JC<Base.UnitRange{Int64}>)
      ret(%1) : (!JC<Base.UnitRange{Int64}>)
    }, {
    ^bb0(%arg3: !JC<Int64>):
      "loop"() ({
        %1 = ConstantOp {value = #s<Base.UnitRange{Int64}(start=1, stop=16)>} : (!JC<Base.UnitRange{Int64}>)
        ret(%1) : (!JC<Base.UnitRange{Int64}>)
      }, {
      ^bb0(%arg4: !JC<Int64>):
        "loop"() ({
          %1 = ConstantOp {value = #s<Base.UnitRange{Int64}(start=1, stop=16)>} : (!JC<Base.UnitRange{Int64}>)
          ret(%1) : (!JC<Base.UnitRange{Int64}>)
        }, {
        ^bb0(%arg5: !JC<Int64>):
          %1 = ConstantOp {value = #s<Base.getindex>} : (!JC<GlobalRef>)
          %2 = InvokeOp(%1, %arg0, %arg3, %arg5) {f = #s<getindex(StaticArray{(16, 16), Float64, 2}, Int64, Int64) from getindex(StaticArray{S, T, D} where D where T where S, Any...)>} : (!JC<GlobalRef>, !JC<StaticArray{(16, 16), Float64, 2}>, !JC<Int64>, !JC<Int64>) -> !JC<Float64>
          %3 = InvokeOp(%1, %arg1, %arg3, %arg4) {f = #s<getindex(StaticArray{(16, 16), Float64, 2}, Int64, Int64) from getindex(StaticArray{S, T, D} where D where T where S, Any...)>} : (!JC<GlobalRef>, !JC<StaticArray{(16, 16), Float64, 2}>, !JC<Int64>, !JC<Int64>) -> !JC<Float64>
          %4 = InvokeOp(%1, %arg2, %arg4, %arg5) {f = #s<getindex(StaticArray{(16, 16), Float64, 2}, Int64, Int64) from getindex(StaticArray{S, T, D} where D where T where S, Any...)>} : (!JC<GlobalRef>, !JC<StaticArray{(16, 16), Float64, 2}>, !JC<Int64>, !JC<Int64>) -> !JC<Float64>
          %5 = IntrinsicOp(%3, %4) {f = #s<#<intrinsic #12 mul_float>>} : (!JC<Float64>, !JC<Float64>) -> !JC<Float64>
          %6 = IntrinsicOp(%2, %5) {f = #s<#<intrinsic #10 add_float>>} : (!JC<Float64>, !JC<Float64>) -> !JC<Float64>
          %7 = ConstantOp {value = #s<Base.setindex!>} : (!JC<GlobalRef>)
          %8 = InvokeOp(%7, %arg0, %6, %arg3, %arg5) {f = #s<setindex!(StaticArray{(16, 16), Float64, 2}, Float64, Int64, Int64) from setindex!(StaticArray{S, T, D}, T, Any...) where {D, T, S}>} : (!JC<GlobalRef>, !JC<StaticArray{(16, 16), Float64, 2}>, !JC<Float64>, !JC<Int64>, !JC<Int64>) -> !JA<Any>
          "yield"() : () -> ()
        }) : () -> ()
        "yield"() : () -> ()
      }) : () -> ()
      "yield"() : () -> ()
    }) : () -> ()
    %0 = nothing() : (!JC<Nothing>)
    ret(%0) : (!JC<Nothing>)
  }
}

In Reactant case, the loop analysis can directly be done with JuliaIR analysis (Valentin presented a LICM JuliaIR pass here: https://vchuravy.dev/talks/licm/ ) .  Then, this analysis can be used to generate tracing calls.


Response code 401 (Unauthorized) in enter credetial stage

Hi
previously we could enter the http token in settings
i regenerated new HTTP token
I understand that we should insert it in "Gerrit: enter credentials"
during this stage i get  an Error: "HTTPError: Response code 401 (Unauthorized)"
when i put my URL

how should i solve it?
Thanks

Can you double check whether the token is correct and whether the account is still authenticated?
If so there should be a "copy curl command" buttons somewhere along the credential entereing stage. If you run the curl command in a terminal and still can't authenticate that probably means you've entered the wrong credentials/url or maybe your administrator has disabled the HTTP API.

Can you double check whether the token is correct
i  generate new token from gerrit server :

i failed in the first step of credential entering stage
i assume that the http token step is after the url step, right?
could it be that the url step use old http token ?
how can i set new http token in the plugin

account is still authenticated?
how i can i check that the account is still authenticated?

If you run the curl command in a terminal and still can't authenticate that probably means you've entered the wrong credentials/url

can i use curl with the http token ?
which curl  is being used in the url stage that cause to the 401 error ?
I will test it

issue was updated with steps

Ahhh I think you might be right. The URL check should not be doing an authenticated check and so shouldn't be able to return a 401. Will look into this some time this week!

great
Thank you

Looked into it some more, it's only doing a simple get request (code) without any credentials to the provided URL. So if that URL is returning a 401, chances are you're behind some sort of (corporate) proxy that also checks for an additional company cookie before allowing access. Or maybe HTTP access has been disabled entirely. You can check by just running curl --url "your_url" in a terminal

i ran :

curl --url "<my_url>"

this is the response:

is it match the response expected by plugin?

No that response is not expected and redirects won't be handled by the extension. I guess I could add support for something like this but I have no idea how the redirection scheme is set up so it's kind of hard for me to do so without more info. I think it should work if you just change the URL to be the actual URL (so the one that you've moved to). In this case I think that's https://git-xxxxxx.com/r/# but I'm not too sure. I'm sure your gerrit admin knows more about your specific setup.

after speaking with our admin i understand
that our setup assume that all endpoints requests should be authenticated

the default url ( curl --url https://git-xxx.yyyyy.com ) redirect to projects endpoint ( https://git-xxx.yyyyy.com/r/#/admin/projects)
when accessing an endpoint without authentication (curl --url https://git-xxx.yyyyy.com/r/#/admin/projects ) i get 302 status code that redirect me again to the our org SSO (Single Sign On) page
if I understand it correctly from gerrit Docs, rest api projects endpoint can be authenticated, as described in Gerrit authentication section
is it make sense to allow 3XX Redirection status code  at urlStep check in enterBasicCredentials code?

Alright the default endpoint redirecting is not a big issue. This endpoint isn't actually being used.
However endpoints requiring SSO to be reached is an issue. Even if the extension would follow redirects, it would need to log into your SSO provider via an API request which is pretty much impossible. That is unless authenticated API requests (under the /a/ URL) are allowed without authentication. That would allow using of the REST API like normal without SSO.
Or am I misunderstanding and would only following redirects fix this?

Alright the default endpoint redirecting is not a big issue. This endpoint isn't actually being used.
However endpoints requiring SSO to be reached is an issue. Even if the extension would follow redirects

i think that allow 302 redirection status will solve the issue
i think that the redirection to SSO is done only  for  requests that are not authenticated

Or am I misunderstanding and would only following redirects fix this?

i think we don't need to follow the redirection at all , as you mentioned,  the endpoint in urlStep isn't actually being used. right?
the real validation is done with the authentication (user+http token) in passwordStep->validate step
i don't know which endpoint is being requested in passwordStep phase, but i assume this step will pass, because it contains  the Authentication credentials
i tested curl with Authentication as described in  gerrit Authentication
with the following format:
curl --url https://git-xxx.yyyyy.com/r/a/accounts//detail --user <my_name>:<http_token>
and got the following response:

Hey sorry for the slow response. Indeed you're right that the main URL isn't actually being used. I think the easiest fix is for the test-URL to just be /config/server/version (which is actually being used). That will fix your case without needing to do any SSO.

Fixed in version 1.2.48!

/config/server/version also requires authentication our use case. You need to ask for credentials first and then send an auth header as part of the GET request. I've used the REST API with our instance and it works as expected.

Yeah, it works totally fine if you just bypass the testConnection() check. I went in and edited the extension.js locally and things are totally working now after being able to skip testConnection to enter credentials. GET requests to my gerrit instance work fine in the output window.
testConnection() {
        let e = {
            path: "",
            method: "GET",
            onError: null,
            unauthenticated: !0
        },
            r = {
                path: "r/a/accounts/self",
                method: "GET",
                onError: null
            },
            i = this;
        return {
            get exists() {
                return Promise.resolve(true); // shim this to True
            },
            get authenticated() {
                return Promise.resolve(true); // also shim this to true
            },
            runCurlCommand: s => {
                let o = zo.window.createTerminal("cUrl"),
                    a = this._username && this._password ? ` --user "${this._username}:${this._password}"` : "",
                    u = "",
                    l = this._getCookieJar(r);
                l?.cookieString && (u = ` --cookie "${l.cookieString}"`);
                let f = this._getUrlAndParams(e).url ?? "<no-url>",
                    y = this._getUrlAndParams(r).url ?? "<no-url>",
                    C = `echo "Unauthenticated: " && curl${u} "${f}"`,
                    _ = `echo "Authenticated: " && curl${a}${u} "${y}"`,
                    v = [];
                s.forExists && v.push(C), s.forAuthenticated && v.push(_), o.sendText(v.join(' && echo -e "\\n" && '), !1), o.show()
            }
        }
    }
    ```

Hmm I want to understand before I fix this. Is just {host}/config/server/version authenticated? How so? Is this some custom authentication or Gerrit's builtin one?
I could consider adding a "ignore test" button somewhere but ideally that wouldn't be needed

unfortunately,  the fix didn't resolve it for me also
in our org methodology all Gerrit request  are  authenticated  , including host}/config/server/version
therefore i still get the unauthorized response

Changed it to fall back to an authenticated request if the unauthenticated one fails in version 1.2.51


Visual query builder

Why are we doing this work
We'd like to provide a good query building experience for the users of the Clickhouse datasource. On https://github.com/grafana/google-bigquery-datasource/issues/11, we built a new and improved visual query builder that we'd like to adopt across all our datasources.
Acceptance

Datasource is updated to use the new visual query builder

Fixed by #48


solved_issue_12

Made the Landing page which have a good  description about the Camput space website and its features including the problems its solving
Its have some Animations

@sethshivam11  i hope you like the changes made by me ,
do let me  if anything you wanted to change in the landing page , I will do it for you

@gopalepic Animations are good but it is looking very basic. Also fix the mobile navbar to go to available-rooms route.

@sethshivam11 what changes do you want in animations ,

@sethshivam11 mobile navbar routing issue is solve now !

@sethshivam11  got you , soon coming up with modern changes

Hey, @gopalepic I am the Mentor of this Project. For Modern Animations, You can use Framer Motion and Many UI Components like Acceternity UI, Shadcn UI and many Taiwind UI Components like Flowbite and Many More. Happy Coding !!

@Arghadip-Chatterjee thank for suggestions
I will go through them

@gopalepic I am not forcing you to add animations, this much animation is great. I want you to focus on the design of the landing page.

@sethshivam11 thanks for the information
I will share some designs soon
Do let me know which one you like the most for your website

@sethshivam11  , Do let me know if you think there should more changes ,
after going through your whole website , I thought these changes will definitely make your website
attractive

@gopalepic No, the landing page is looking very basic and boring, add some images and make it attractive. You can consider the GitHub copilot site, or you can search modern landing pages on Google and consider them as well.

@sethshivam11  , This time i will try my best to make it more attractive

@sethshivam11 can you share some samples , it would be easy for me to understand your perspective for your webstie

@sethshivam11  , i made some changes ,
These are not the final changes ,
I just wanted to know that do you like the changes ??

@gopalepic You are just using an image and the text is lagging, this is not looking like a landing page.

@sethshivam11  , share some examples or sites so that I can refer them , I wanted to know what's in your brain about the landing page

@gopalepic Some references are:

https://pin.it/2RJL9dzYa
https://pin.it/4H0we34Hh
https://pin.it/tXsA5vQNJ
https://pin.it/6AoPMTFGS

@sethshivam11 , i was not healty from past few , days
lets restart the work

@gopalepic It's ok, get well soon.

@gopalepic you are working on it?

@sethshivam11 yes , will update u soon

@gopalepic I don't think you are working on it.


[Error] connect wallet problem

I faced a problem in connect wallet flow in my some tries and also some users reported this problem
https://github.com/user-attachments/assets/f9a30a39-b4cd-4295-9b1e-46721c7fc456
@mmahdigh @MoeNick

I faced a problem in connect wallet flow in my some tries and also some users reported this problem
VID_20241111_215050_213.mp4.mp4
@mmahdigh @MoeNick

Hello @mmahdigh
You're experiencing transcript error. It sounds like your query would be best dealt with by the support team.
I'll have to refer you to the official support live chat with the ticket ID FLO161387
Please see the link below to our dedicated support line:
Flow Wallet DApps Support Ticket Requests.
Note; Click on the live chat icon at the bottom corner of the page to initiate chat with a live support agent.

today I tried multiple time with different account and brwser and I didn't see this problem , Do you add some change related to this issue ? @mmahdigh

today I tried multiple time with different account and browser and I didn't see this problem , Do you add some change related to this issue ? @mmahdigh

No, I haven't made any changes. @Meriem-BM did you?

we can call it DONE for now


Adds example 49-hextile

Provides a simple example to demonstrate real-time hex tiling, mainly a simple port of what is done here https://github.com/mmikk/hextile-demo
https://github.com/bkaradzic/bgfx/issues/2842
This has been tested on windows (dx11/opengl)

What's texture Nature_Pebbles_4K.png license?
Also make name it all lower case.

Also it would be good to add hextile rotation, like in this video (at 0:11):
https://user-images.githubusercontent.com/20206840/174149327-fd6bbf22-9299-49f9-8f96-c043d90fdde4.mp4

What's texture Nature_Pebbles_4K.png license?
Also make name it all lower case.

Looks like MIT (https://github.com/mmikk/hextile-demo/blob/main/LICENSE) since I picked it from https://github.com/mmikk/hextile-demo/blob/main/hextile-demo/textures/details/Nature_Pebbles_4K_d.png
let me know if we need to use a different image?

Also it would be good to add hextile rotation, like in this video (at 0:11): https://user-images.githubusercontent.com/20206840/174149327-fd6bbf22-9299-49f9-8f96-c043d90fdde4.mp4

This has been added, in UI added sliders to configure it, also added UI to configure tile rate.

let me know if we need to use a different image?

Try finding something appropriate here, it's all under CC0 license:
https://polyhaven.com/textures
Also should be smaller in disk size.

let me know if we need to use a different image?

Try finding something appropriate here, it's all under CC0 license: https://polyhaven.com/textures
Also should be smaller in disk size.

Updated, let me know if this one is good, it's from here https://polyhaven.com/a/aerial_rocks_04

Just add info about new texture here:
https://github.com/bkaradzic/bgfx/blob/master/docs/license.rst

CC0 license

done

Just add info about new texture here: https://github.com/bkaradzic/bgfx/blob/master/docs/license.rst

done

"Use regular tiling" zoom level is messed up, so comparison looks bad.

"Use regular tiling" zoom level is messed up, so comparison looks bad.

Fixed.

Fixed.

It still looks messed up, toggle between two quickly and you'll see.

Also convert texture to .ktx and add mipmapping so that texture in the distance is not shimmering...

This has been done, let me know if there is any additional flags to pass in bgfx to use mipmap but I think it's already working.

Fixed.

It still looks messed up, toggle between two quickly and you'll see.

This should be fixed as well, TileRate can cause tiles in the case of hex-tile to be different but I have picked a value that can correspond decently with Regular tiling.

Oh yeah this looks great now... shows well tiling in the distance...
The only thing with texture is to leave original source texture .png inside https://github.com/preetishkakkar/bgfx/tree/master/examples/assets/textures directory, and reference it here: https://github.com/preetishkakkar/bgfx/blob/master/examples/assets/textures/textures.ninja

Oh yeah this looks great now... shows well tiling in the distance...
The only thing with texture is to leave original source texture .png inside https://github.com/preetishkakkar/bgfx/tree/master/examples/assets/textures directory, and reference it here: https://github.com/preetishkakkar/bgfx/blob/master/examples/assets/textures/textures.ninja

Done!

"Tile Rate" doesn't affect texture when "use regular tile" is selected.

"Tile Rate" doesn't affect texture when "use regular tile" is selected.

That is correct, all of other parameters effects only when hextiling is select, regular tiling simply do linear tiling, do you expect tile rate to effect regular tiling as well, if yes in which way?

do you expect tile rate to affect regular tiling as well, if yes in which way?

Yes, it should increase/decrease tiling. Basically flipping between two, texture should be always at the same zoom level.

do you expect tile rate to affect regular tiling as well, if yes in which way?

Yes, it should increase/decrease tiling. Basically flipping between two, texture should be always at the same zoom level.

will get it in

do you expect tile rate to affect regular tiling as well, if yes in which way?

Yes, it should increase/decrease tiling. Basically flipping between two, texture should be always at the same zoom level.

will get it in

new PR for fix https://github.com/bkaradzic/bgfx/pull/2923


[suggestion]:  encode file option system

Type
Both
Suggestion
hi!
would it be possible to integrate an x265/x264 encoding option system to reduce the weight of videos, particularly for crunchy
thanks

i tried to transcoding but is not recognized
ffmpegOptions: "-c:v hevc_amf -preset fast -b:v 3000k -c:a copy -bsf:a aac_adtstoasc"


[FEATURE]: [PayU] Currency Unit Conversion

:memo: Feature Description

Each currency can be described in terms of base or minor units.
For instance, when dealing with USD currency, the Cent is considered as the minor unit, while the Dollar is considered the base unit.
In Hyperswitch, the amount value is expected to be always provided in minor units.
For example: In USD, If the amount is 1 in base unit (Dollar), then it will be equivalent to 100 in minor units (Cent)
Some of the connectors integrated require the amount to be converted to a desirable unit before being passed to them.
We have functions to_currency_base_unit and to_currency_lower_unit in place to convert the minor unit amount to its decimal equivalent and vice versa. These conversions are handled explicitly based on the connector.

:hammer: Possible Implementation

ConnectorCommon trait have been implemented for the connector.
This trait contains get_currency_unit method. This method needs to be implemented.
It will define what type of conversion needs to be done during connector_router_data creation. Concurrently handle the creation of connector_router_data to be passed for the connector request body creation.
You can check this PR for further reference https://github.com/juspay/hyperswitch/pull/2196

:bookmark: Note: All the changes needed should be contained within hyperswitch/crates/router/src/connector/
:package: Have you spent some time checking if this feature request has been raised before?

[X] I checked and didn't find a similar issue

:package: Have you read the Contributing Guidelines?

[X] I have read the Contributing Guidelines

:sparkles: Are you willing to submit a PR?

Hey Can I work on this?

Hey @PrerakMathur20, sure! I've assigned this to you.
In case you have any queries, you can ask them on this issue thread, or on our discord server, or on slack whichever you are comfortable with

Hey @PrerakMathur20  ,
Let us know if you face any issues. Happy to help! : )

Absolutely! Thank you so much!

Hey @PrerakMathur20 ,
Are you still working on this issue?
Please let us know if you need any help:)

Hey @swangi-kumari , Yes I'm still working on resolving this issue.
Sure, I'll let you know if i face any issues. Thanks.

Hey @PrerakMathur20
Just checking in - are you working on it? Do you need help from our side?

Hey @deepanshu-iiitu ,
I'm still working on the issue. I'm working on the feature. I'll make a PR soon.

Hello @PrerakMathur20 ,
Are you still working on this issue?
Lets us know if you need any help.

Closing because currency conversion implementation have changed


Windows GA in Rancher

Areas for QA to test (checked indicates QA checks are done).

[x] Support adding Windows worker nodes for custom cluster
[ ] Users should be able to add Windows  2019 (1809 or 1903).
[x] Only support k8s 1.15 and above for Windows cluster
[x] Only support flannel as the network plugin for Windows cluster
[x] Support 2 flannel backends. VXLAN and HOST-GW.
[x] Add default taints for linux workers in Windows clusters. So users don't have to add node selector stuff for their Windows workloads.
[ ] Users should be able to use Rancher logging to collect log from stdout
[ ] Users should be able to enable Rancher monitoring to see Windows worker metrics/pod metrics
[ ] Users should be able to use Rancher alerting and notification for Windows nodes and pod.

https://kubernetes.io/docs/setup/production-environment/windows/intro-windows-in-kubernetes/

I'm waiting for support for 1809 a few months, do you have any news or preview of release?

@thxCode / @deniseschannon Any update on the timeline for 1809 support?  Anything I can do to help move this forward?

Any news on this?

@ekarlso It's actively being developed as I write this.

@loganhz did you have a preview build?

@ekarlso you can use rancher/rancher:master for now. We will release the preview build in the middle of May. Thanks!

Blocked by https://github.com/rancher/rancher/issues/21899

@loganhz
Users should be able to add Windows 2019 (1809 or 1903). ==> We are currently validating only with 1903 with K8s 1.15 . Can you please confirm that we are NOT planning extend support for 1809?

Windows Server 2019 is based on 1809. Does that mean you are not planning to support  Windows 2019 either?

1809 should just work unless there are some Docker and Windows side bug.
1809 will not be in our support list https://rancher.com/support-maintenance-terms/

I unchecked the last three checkboxes in issue description. I put those there for QA to test. Once we have validated we will check them off (and issue will be ready to close).

All the features tracked in this ticket are available and have been validated using latest rancher server build master-head.
Issues found when testing these features are tracked as separate issues.


Fixed #791 XVim menu not appearing in Editor menu

Fixes #803 and #791
It should work for all supported Xcode versions

It persists for me and I am using XCode 6.4.

@samson333 Are you sure you checked out my branch? I won't say I'm sure it should work (you never know with Xcode) but it looks like it should. Please clone wczekalski/XVim and checkout fix/#791-6.4-Menu-Item. If you are sure it doesn't work, well, then let's close this issue :disappointed:

Wow. It is back. I tried uninstall and install for a few times. Then I gave up. But after rebooting, it is back... Looks like need to reboot.

Unfortunately this is still a problem for me.  I'm using OSX Yosemite 10.10.4 with Xcode Version 6.4 (6E35b).  I'm on the develop branch of XVim with these changes and have tried rebooting the computer and closing and reopening Xcode numerous times.  If I install XVim with Xcode open the menu will show up but XVim won't work.  If I then close and open Xcode the menu will be gone.

Did you try clone and download from this branch:
https://github.com/wczekalski/XVim/tree/fix/%23791-6.4-Menu-Item.
Best regards,
Tian
On Sun, Sep 13, 2015 at 2:26 AM, David Quon<EMAIL_ADDRESS>wrote:

Unfortunately this is still a problem for me. I'm using OSX Yosemite
10.10.4 with Xcode Version 6.4 (6E35b). I'm on the develop branch of XVim
with these changes and have tried rebooting the computer and closing and
reopening Xcode numerous times. If I install XVim with Xcode open the menu
will show up but XVim won't work. If I then close and open Xcode the menu
will be gone.
—
Reply to this email directly or view it on GitHub
https://github.com/XVimProject/XVim/pull/821#issuecomment-139848819.

After upgrading to OSX 10.10.5 and pulling the latest develop branch on commit d5ef953 it's now working for me.  :+1:

To all early adopters: Please make sure that you install from XVimProject:develop. This code is not conatined in the master branch AFAIK. If you are sure you cloned from the branch and restarted Xcode and the menu still doesn't show up, then there's something wrong going on and this problem should be revised.


fix: Use rs.secondaryOk on versions that deprecated rs.slaveOk

Pull Request (PR) description
rs.slaveOk has been deprecated since version 3.6.20 and others. Warnings are all over the place e.g.
in the mongodb_is_master fact. Which makes the fact and /root/.mongrc.js unusable.
Using a try-catch block to use the new command rs.secondaryOK() by default and fall back to rs.slaveOK() fixes this.

This looks like a cleaner implementation than https://github.com/voxpupuli/puppet-mongodb/pull/593 since it gracefully falls back. At first glance it looks ok, but I'll wait for the tests to complete

@ekohl : I've merged my changes into a single commit and also rebased on upstream/master.
Tests are running again. Please consider merging.


[TE] Refactor Dashboard Server resources and dependencies

This refactor further extends the use of Guice beyond the datalayer by
wrapping all resource classes and dependencies with Guice.
Changes:

replaces the top level object constructions in the Dashboard Server with Guice.
All the dependencies have been moved to the Dashboard Server Module.
Changes in the Resource files mostly involve adding @Inject annotation
Make the metric registry easily accessible

Possible next steps:

simplify the resource structure
convert absolute resource paths to relative paths which make it much easier to manage resources
refactor the Anomaly Server dependencies

There is no expected behavior change with this PR.

Thanks a lot @jihaozh! Yes! I'm planning to do that too!


feat: add cosmos to registry

https://github.com/NixOS/flake-registry
so can nix run cosmso#whatever

and/or here publish to https://flakehub.com/

I believe we are already published on flake hub https://flakehub.com/flake/informalsystems/cosmos.nix

I believe we are already published on flake hub https://flakehub.com/flake/informalsystems/cosmos.nix
Closing for now. Feel free to re-open if there is something more to be done.


1747 improve logging for database tools extract-study warn for missing data objects

This PR provides minor updates to the extract-study tool:

make study_id an argument rather than option
remove filename normalization swapping ':' for '-' in study_id.  Colons appear to work fine in filenames
update logging ERROR for orphan data objects or study-id not found

It makes me really nervous that we are codifying nicknames for studies in this script. It's not your fault that we have nicknames, but I am going to push for them to be added to the Study instances in MongoDB. So hopefully we won;t need this after that. You would just modify your code to look by id or by nickname.
# Studies with non-compliant IDs that have been re-IDed
# Name:, study ID, legacy study ID
STUDIES = {
    "Stegen": ("nmdc:sty-11-aygzgv51", "gold:Gs0114663"),
    "SPRUCE": ("nmdc:sty-11-33fbta56", "gold:Gs0110138"),
    "EMP": (None, "gold:Gs0154244"),
    "Luquillo": (None, "gold:Gs0128850"),
    "CrestedButte": ("nmdc:sty-11-dcqce727", "gold:Gs0135149"),
}
# Update study IDs after re-IDing
DEFAULT_STUDY_ID = STUDIES["Stegen"][0]

I would prefer this formatting
@click.option("--quick-test",
              is_flag=True,
              default=False,
              help=("Quick test mode - biosamples and omics only "))

over
@click.option("--quick-test", is_flag=True, default=False, help=("Quick test "
                                                                 "mode - "
                                                                 "biosamples "
                                                                 "and omics "
                                                                 "only "))

your code for building directories is different from the os join methods I'm used to . What are the advantages and disadvantages?
SCRIPTS_DIR = Path(__file__).parent
PROJECT_ROOT = SCRIPTS_DIR.parent.parent
LOCAL_DIR = PROJECT_ROOT / "local"

This is using pathlib which I find to be simpler and more succinct than using os

can you say more about "Colons appear to work fine in filenames". What systems have you checked that on?
I have the expectation that this will work on recent MacOSes and Linuxes. It would be great it it ran on Windows too.
I guess I'm saying "In the absence of cross-platform testing, I want to be more defensive about file names"

The main additional functionality was to make the log file more useful by elevating missing data objects to ERROR, and some other less adverse case to WARNING
My rationale for using colons in the filenames:

It is consistent with the way data directories are name in our data store: /global/cfs/cdirs/m3408/results
Same as corresponding object in the DB
Colons in directory names usually don't do any harm ;-)
removes the need for a normalization / de-normalization kludge


Added tmpPath variable for linux agents

Adding this parameterized tmpPath argument will let us specify tmpPath locattion to download results and tfsec binary to anyother directory. Needed to hardned OS  agents #20

The idea is reasonable, especially since pipeline jobs should not be spewing configuration binaries into "/tmp/tfsec", since other pipelines run at the same time or with local access could replace those. The existing README.md doesn't say anything about using "/tmp/tfsec" for the binary, which alarmed me.


VarQTEResult missing from API ref.

Summary
VarQite and VarQrte return a VarQTETResult but it was missing from the API ref. I added it so the result return from the evolve methods now can correctly link to this the result.
Details and comments
I marked it for backport as we can re-publish the docs so as to update them to include this.

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 90.516%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
6452

Relevant Lines:
7128

💛  - Coveralls


Update base-images.yml

Motivation

Please give a brief description for the background of this change.
Issue number:

Modifications
Change summary
Please describe what changes are included in this pull request.
Revision diff summary
If there is more than one revision, please explain what has been changed since the last revision.
Testing
Is your change tested? If not, please justify the reason.
Please list your testing steps and test results.

CI test run result:

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

This is a fork I created on my personal account for testing.


Fix Jenkins skip for CPU/GPU

Each step should be checking the docs-only build and marking itself as skipped if necessary, these two were skipping the i386 step instead.
Thanks for contributing to TVM!   Please refer to guideline https://tvm.apache.org/docs/contribute/ for useful information and tips. After the pull request is submitted, please request code reviews from Reviewers by @ them in the pull request thread.
@areusch

Thanks @driazati / @areusch, this is now fixed! :smile_cat:


How can I test?

Hi guys, I use Ubuntu on a VM. Let's suppose I want to test if a command that is meant to run every X days works. How can I speed up my local timer or do whatever is recommended?
Do you have any unit test for this?

I tested by modifying my code from running daily to running every second.  For example:
Daily schedule:
schedule.every().day.at(time).do(task)
Second schedule:
schedule.every(1).seconds.do(task)
Then be sure to include the conditional check to run the scheduled task:
while True:      schedule.run_pending()      time.sleep(x)
This worked for me.

We use freezegun as follows:
import schedule

from freezegun import freeze_time
from unittest.mock import MagicMock
from datetime import datetime, timedelta

def test_schedule_weekly():
    mockTask = MagicMock()
    m = lambda: mockTask(datetime.now())

    start = datetime(2017, 1, 1, 0, 0)
    until = datetime(2018, 1, 1, 0, 0)
    with freeze_time(start) as fzdt:

        scheduler = schedule.Scheduler()
        scheduler.every().sunday.at("6:00").do(m)

        while datetime.now() < until:
            fzdt.tick(delta=timedelta(minutes=15))
            scheduler.run_pending()

    assert mockTask.call_count == 52

Take a look at the [code that tests the library] to learn how to mock datetime and assert next_runs.

Take a look at the [code that tests the library] to learn how to mock datetime and assert next_runs.


flash: esp32: add cache handling during flash ops

Flash operations are not handling cache enable/disable operations, causing system crash due to interrupts placed in flash.

Converted to tag: https://github.com/zephyrproject-rtos/hal_espressif/releases/tag/bugfix_v3.7.1_flash_cache


Add Note About The Certificate Hashing Algorithm in API Key Generation

Description:
With [1], the certificate hashing algorithm in API Key Generation has been changed to SHA256 by replacing SHA1. Need to add a note about this in [2].
[1] https://github.com/wso2/carbon-apimgt/pull/12365
[2] https://apim.docs.wso2.com/en/4.3.0/design/api-security/api-authentication/secure-apis-using-api-keys/

A special note is not required since an API Key created in APIM 4.2.0 is working on a migrated APIM 4.3.0 setup.


Ability for custom storyshots testFunctions to utilise "snapshot per story file"

Issue:
Can't use multiSnapshotWithOptions with custom test function because getSnapshotFileName is not exported.
What I did
This is a small tweak to the new multiSnapshotWithOptions test function. It basically just exports the getSnapshotFileName function so it can be used by those of use who have implemented our own custom test function. I also did a minor refactor and moved the getSnapshotFileName function to the utils.js file. Do let me know if this doesn't make any sense.
How to test
Go to storybook\addons\storyshots
and run yarn example
Is this testable with jest or storyshots?
Storyshots
Does this need a new example in the kitchen sink apps?
It should not.
Does this need an update to the documentation?
[Updated Docs] Yes.. We could mention this export in the docs so other users could become aware of it.
If your answer is yes to any of these, please make sure to include it in your PR.

Fantastic first PR @digitalmaster !
I'd like @igor-dv to have a look before merging 👍

@ndelangen Thanks a lot! Glad others also find this useful :)
@igor-dv Added an example.. Let me know if it's unclear or has any bugs. 😬

@digitalmaster, thanks, looks great !

@digitalmaster, wanna merge ?

Sure.. on to this 3.3 release right? storybooks:release/3.3? Just wanna confirm.

yeah to the 3.3

@igor-dv I don't think I can't merge this PR myself without having push access to this repo right? Or am I missing something?

Ah, so let me push it then 😃

Awesome thanks.

Do you guys have any idea when another release will be created?


Generate human readable helper toString() methods

Useful for debugging to know what kind of adapter you're using. Adopted from Moshi with a similar StringBuilder approach to reduce string pool bloating
Example:
@Override
public String toString() {
  return new StringBuilder().append("TypeAdapter(").append("GenerateTypeAdapterTest.Taco").append(")").toString();
}

Need to update tests, but will wait for review of the implementation first before doing so

Eh just went ahead and updated the tests


modifyEager on multiple level relation

Hi there!
I'm trying to do something like this:
.modifyEager('children.movies', builder => {
   console.log(builder.modelClass());
});

The result of the console.log it's only the movies class. It's possible, in some way, to iterate throw all the levels of the relation (children AND movies)?

Hi,
it's not possible to easily access the other model classes in modifyEager. I cannot come up with a good reason to do that though. What are you trying to do?

I'm dealing with translations and I need to translate the children relations (Join the translation tables). With the example above, I'm getting the translated movies fields but not the children

You can do this:
.modifyEager('children', builder => {
   console.log(builder.modelClass());
})
.modifyEager('children.movies', builder => {
   console.log(builder.modelClass());
})

That could be a solution but all the process is being handled in a dynamic way. modifyEager is being called like this:
.modifyEager('[children, children.movies]', builder => {
   console.log(builder.modelClass());
})

Maybe if I parse the [children, children.movies] string and iterate throw all the relations. I'll give it a try!

Yeah, that works! Thanks @koskimas


How to reset the ngsticky header?

I want to reset ngSticky header when user click on button.
I tired following but it's not wokring.
There is controller definition inside the directory which has resetLayout function.
I thought that calling this function would reset the position, but don't know how to call this function.
I followed this fiddle but no help.

As a simple solution (i don't know if it is a good way but it works for me), you can retrieve the controller of the directive like this :
angular.element(<element where the directive is>).controller('sticky')
then call the resetLayout() method.
angular.element(<element where the directive is>).controller('sticky').resetLayout();

Code
angular.element(<element where the directive is>).controller('sticky').resetLayout();
is not adding the place holder.


MINOR: Improve logging around initial log loading

Users often get confused after an unclean shutdown when log recovery takes a long time. This patch attempts to make the logging clearer and provide a simple indication of loading progress.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

@ijuma Thanks for reviewing. Comments addressed.


Can we use this app as a default file manager

What's the Problem?
Can we use this app as a default file manager
Solution/Idea
Can we use this app as a default file manager
Alternatives
Can we use this app as a default file manager
Priorities

Capability
Priority

This proposal will allow developers to accomplish W
Must

This proposal will allow end users to accomplish X
Should

This proposal will allow developers to accomplish Y
Could

This proposal will allow end users to accomplish Z
Won't

Files Version
No response
Windows Version
No response
Comments
No response

Yes you can set Files as default from Settings > Experimental. The option is only available in the sideload version.


fix: change fertiscan-backend image

Close #353

I recommend pointing to a specific branch that has been merged. We can better manage the deployment this way.


SOLR-15090: Allow backup storage in GCS

Description
Solr offers a "BackupRepository" abstraction that allows users to implement storage to arbitrary backends.  But ootb, Solr only offers repositories for HDFS (deprecated) and local file system.  Users commonly want to backup data to the cloud-storage systems offered by popular vendors like Google, Amazon, and Microsoft.
Solution
This PR adds a BackupRepository implementation for GCS, Google's cloud storage offering.  Credentials are stored on disk, in a file pointed to by an environment variable and a Java client provided by Google uses those credentials and other provided configuration to communicate with GCS.
Tests
The PR contains two new tests: GCSBackupRepositoryTest and GCSIncrementalBackupTest.  These tests work when provided with valid GCS credentials.  Prior to committing they'll need to be reworked to use a mocked/stubbed Storage object.
Checklist
Please review the following and check all that apply:

[x] I have reviewed the guidelines for How to Contribute and my code conforms to the standards described there to the best of my ability.
[x] I have created a Jira issue and added the issue ID to my pull request title.
[x] I have given Solr maintainers access to contribute to my PR branch. (optional but recommended)
[x] I have developed this patch against the main branch.
[x] I have run ./gradlew check.
[x] I have added tests for my changes.
[x] I have added documentation for the Reference Guide

There are a lot of files touched. Actually it seems to be due to merging to main. Could you do a "git pull --rebase" and then force push to this PR? This would highly reduce the number of files and help reviewers. Thanks!

There are a lot of files touched. Actually it seems to be due to merging to main.

I'm not sure the "main"-merge is the issue.  I'm not seeing anything in the "Files" view that shouldn't be there.  The file count is very high, but the large, large majority of those files/edits are sha1, license, and notice files for a few new deps that the gcs-repository contrib brings in.
I did a quick scan to make sure there weren't any irrelevant file diffs in the PR and nothing jumped out.  Am I missing something?

I ended up rebasing everything regardless @bruno-roustant  - the history got a bit tangled after your comment by a git-mistake on my part.
But I think my earlier comment still holds - the number of files touched is inflated by all the checksum files, etc.
Happy for any review.  I'll prob merge at week's end if I haven't heard any feedback one way or another.

Sorry for the delay, I was on vacation last week. I'm going to review now.

Thanks, and thanks for the review!  Really appreciate your time.

I was having some trouble with flakiness in GCSIncrementalBackupTest, but I just found the concurrency issue (caused by the  FakeStorageRpc test library).  With these tests passing I'll look to merge this afternoon!
Thanks for the reviews guys!


pip install mitmproxy fails (SyntaxError)

Command exits with the following dump:
Downloading/unpacking mitmproxy
  Running setup.py egg_info for package mitmproxy
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "/tmp/pip-build-root/mitmproxy/setup.py", line 19
        "netlib>=%s, <%s" % (version.MINORVERSION, version.NEXT_MINORVERSION),
                                                                             ^
    SyntaxError: invalid syntax
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "/tmp/pip-build-root/mitmproxy/setup.py", line 19

    "netlib>=%s, <%s" % (version.MINORVERSION, version.NEXT_MINORVERSION),

                                                                         ^

SyntaxError: invalid syntax

----------------------------------------
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build-root
/mitmproxy
Storing complete log in /root/.pip/pip.log

This is inside the deps dictionary (line 18) at setup.py. If I try to change it to a tuple or list (thus correcting syntax), I get an AttributeError (trying to access deps.update). The same happens at line 27, with another dict.

Hi there,
this looks like you're using Python 2.6. Could you upgrade to 2.7 please?
Cheers,
Max

I'll try it. Thought pip checked this before trying to run the script.


create logdir if not exists

Would be cool , if the provider guaranteed, that the log folder exists, where the logfile will be storred in.

feedback from irc #silex-php
13:13:18 - theahindle: There are much more knowledgeable people than me, but I personally think it shouldn't change the file system in the background - it should be explicit
13:13:25 - steffkes: welcome in the nice world of php ..
13:13:43 - theahindle: Like setting the handler to Monolog\LoggerMakeDirOnMyBehalfPlease or setting $app['monolog.mkdir'] = true;
13:13:53 - steffkes: yeah i like that more as well theahindle.

add an option is a valid solution for me, @fabpot what do you think?

In any case it should not be done in the definition of the service.

@henrikbjorn Well what is your suggestion, close this PR and create one within monolog or handle it in my project(s)?

Yes. Monolog should do this inside the handler that writes to the filesystem. Until then, you should handle it in your projects.
On the code side of things. You are adding complexity through 3 new indentation levels and many more code paths.

This is clearly the responsibility of Monolog to do that (if they want to, and they should :))
Regarding the option, that would not make sense. Asking someone to set an option to create a directory seems like the same amount of work than creating the directory directly. Closing this PR.

@fabpot https://github.com/Seldaek/monolog/pull/584 should be solved

@dominikzogg thanks for the heads up, that's a good news!


Incorrect HMAC sha256 value returned

Based on the HMAC specification (https://tools.ietf.org/html/rfc4868#section-2.7) it seems like rust-crypto is returning incorrect values based on the following test:
    #[test]
    fn hmac_test2() {
        let data = "Hi There".as_bytes();
        let key = [0x0b; 20];
        let mut digest = Sha256::new();
        digest.input(&data);

        let mut hmac = Hmac::<Sha256>::new(digest, &key);
        let result = hmac.result();
        let code = result.code();

        let expected = [176_u8, 52_u8, 76_u8, 97_u8, 216_u8, 219_u8, 56_u8, 83_u8, 92_u8, 168_u8, 175_u8, 206_u8, 175_u8, 11_u8, 241_u8, 43_u8, 136_u8, 29_u8, 194_u8, 0_u8, 201_u8, 131_u8, 61_u8, 167_u8, 38_u8, 233_u8, 55_u8, 108_u8, 46_u8, 50_u8, 207_u8, 247_u8];

        assert_eq!(&expected[..], &code[..]);
    }

---- handshake::tests::hmac_test2 stdout ----
thread 'handshake::tests::hmac_test2' panicked at 'assertion failed: (left == right)
left: [176, 52, 76, 97, 216, 219, 56, 83, 92, 168, 175, 206, 175, 11, 241, 43, 136, 29, 194, 0, 201, 131, 61, 167, 38, 233, 55, 108, 46, 50, 207, 247],
right: [202, 153, 85, 27, 117, 53, 17, 105, 88, 244, 48, 64, 123, 53, 206, 131, 198, 97, 109, 115, 144, 126, 12, 158, 115, 140, 252, 124, 229, 138, 21, 82]', src\handshake\mod.rs:367:8

Strange that there are no hmac + sha tests in the project.
Your test fails because you pass the data to sha256 (the collision resistant hashfunction) and not to hmac. You should change your test to:
    #[test]
    fn hmac_test2() {
        let data = "Hi There".as_bytes();
        let key = [0x0b; 20];
        let mut digest = Sha256::new();
        //digest.input(&data); // <-- remove this line

        let mut hmac = Hmac::<Sha256>::new(digest, &key);
        hmac.input(&data); // <-- add this line
        let result = hmac.result();
        let code = result.code();

        let expected = [176_u8, 52_u8, 76_u8, 97_u8, 216_u8, 219_u8, 56_u8, 83_u8, 92_u8, 168_u8, 175_u8, 206_u8, 175_u8, 11_u8, 241_u8, 43_u8, 136_u8, 29_u8, 194_u8, 0_u8, 201_u8, 131_u8, 61_u8, 167_u8, 38_u8, 233_u8, 55_u8, 108_u8, 46_u8, 50_u8, 207_u8, 247_u8];

        assert_eq!(&expected[..], &code[..]);
    }

PS: You called the test function hmac_test2. Does this mean you have written more tests? If so, could you commit or PR them to https://github.com/niluxv/rust-crypto (if you agree to publish them under the MIT and APACHE2.0 licences)? Every new test is helpful.

Hi, thanks for the response!
That makes sense, I wonder if I just didn't notice there was an input function on hmac.  The documentation didn't really have examples so I was kind of flailing about trying to get an hmac to calculate.
While the code this was written in was MIT, the reason that's hmac_test2() was because my hmac_test() function was testing a custom calc_hmac() function I had written that takes two strings, concatenates them, then calculates the hmac for them (required for the RTMP protocol handshake, which is what I was implementing).    The hmac_test2() test was just an attempt to rule out my custom code and figure out what I was doing wrong in trying to get any hmac to calculate correctly.
Feel free to copy this test over though and use it.

@KallDrexx
If you need just HMAC-SHA256 take a look at RustCrypto's hmac and sha2 crates. They are significantly smaller and written in pure Rust.


Update MD file on new branch 2017-03-13_01-11-17

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestCon.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


micromamba doesn't support being aliased (at leat not for activate)

Hey @wolfv , starting to try out micromamba. Tried to alias it to mm and activation fails (by alias I mean I tried symlinking /bin/micromamba -> /bin/mm and then just copied /bin/micromamba -> /bin/mm. Both failed)
# mm activate
The following argument was not expected: activate
Run with --help for more information.

but micromamba activate works just fine:
# micromamba activate
(base) [root@ip-xxx ec2-user]#

Hi @ericdill thanks for testing micromamba!
Indeed, we use the same mechanism as conda here, which means that "micromamba" in itself is a bash command and micromamba activate evaluates to something like:
source $(/path/to/micromamba shell activate -p ...)
that's why aliasing with a symbolic link or moving the binary won't work.
However you could probably create an alias in bash that would do it (e.g. alias mm=micromamba in your .bashrc)

I think we can't and won't fix this for now.


Mark inner public structs and static methods as IndexedForCodeCompletion

struct Test {
  struct Inner {};
  static void foo();
};

Inn^
fo^

We do not provide the completion for Inner, which I believe we should with a required qualifier Test::.
This also applies to static methods.

FWIW this was a deliberate decision to keep the index size manageable.
We provide completion within the scope of the outer class, and when
qualified by the outer class name (using Sema completion).
Apart from in pre-namespace codebases where classes are used as pseudo-ns,
are you sure this will add more signal than noise? (And enough to justify
the cost)
On Fri, Jun 14, 2019, 11:10 AM kadir çetinkaya<EMAIL_ADDRESS>wrote:

struct Test {
struct Inner {};
static void foo();
};
Inn^
fo^
We do not provide the completion for Inner, which I believe we should
with a required qualifier Test::.
This also applies to static methods.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/clangd/clangd/issues/61?email_source=notifications&email_token=AAEGBAKFBXGOGEJ5AL3TRMLP2NN7LA5CNFSM4HYF66Y2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4GZQFU5A,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAEGBANHGEYJK2E5KYFKGSTP2NN7LANCNFSM4HYF66YQ
.

From the user's standpoint a static function in a class is not much different from a function inside a namespace. I would argue that providing completions in provided cases seems useful.
But do agree that we have to be careful with the index size if we plan to do this and also make sure we don't suggest struct and functions inside templates, e.g.
template <class T>
struct Test {
  static void foo();
};

fo^

Update: today we already store these in the index (I believe we always did, see https://github.com/llvm/llvm-project/blame/cac6d2173103c3a3c963985697fbc4f7943f5a7f/clang-tools-extra/clangd/index/SymbolCollector.cpp#L275, recorddecls as contexts are always stored). they only show up in workspace symbol requests today.
Regarding showing them in code completion though, I think I agree with the sentiment that this is more likely to cause noise than helping the user. As I wouldn't want to see create methods from all the factories in a codebase all of a sudden, similarly for inner classes. Moreover we don't seem to have any extra complaints.
I wonder what exact use case I had in mind at the time I was filing the request, maybe there's value in showing the methods/inner types available for symbols defined within the main file, but I don't think it makes sense at a global scope. Hence closing this one.


Enhancement: compatibility with Electron 21 will require copying all memory Buffers, will have performance cost

Possible bug
Is this a possible bug in a feature of sharp, unrelated to installation?

[x] Running npm install sharp completes without error.
[x] Running node -e "require('sharp')" completes without error.

Are you using the latest version of sharp?

[x] I am using the latest version of sharp as reported by npm view sharp dist-tags.latest.

What is the output of running npx envinfo --binaries --system --npmPackages=sharp --npmGlobalPackages=sharp?
  System:
    OS: Linux 5.15 Ubuntu 22.04.1 LTS 22.04.1 LTS (Jammy Jellyfish)
    CPU: (8) x64 Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz
    Memory: 9.20 GB / 31.23 GB
    Container: Yes
    Shell: 5.1.16 - /bin/bash
  Binaries:
    Node: 16.17.0 - /run/user/1000/fnm_multishells/799191_1664035140689/bin/node
    Yarn: 1.22.19 - /run/user/1000/fnm_multishells/799191_1664035140689/bin/yarn
    npm: 8.15.0 - /run/user/1000/fnm_multishells/799191_1664035140689/bin/npm
  npmPackages:
    sharp: ^0.31.0 => 0.31.0

What are the steps to reproduce?
Run sharp with electron 21
What is the expected behaviour?
Sharp should be compatible
Please provide a minimal, standalone code sample, without other dependencies, that demonstrates this problem
{
  "dependencies": {
    "electron": "^21.0.0-beta.8",
    "sharp": "^0.31.0"
  },
  "scripts": {
    "test": "electron main.js"
  }
}

const sharp = require('sharp')

const semiTransparentRedPng =  sharp({
  create: {
    width: 48,
    height: 48,
    channels: 4,
    background: { r: 255, g: 0, b: 0, alpha: 0.5 }
  }
})
  .png()
  .toBuffer();

It is important to run the script through electron, and it has to be v21+
Please provide sample image(s) that help explain this problem
This is because of a change electron have made, which breaks compatability for some native modules https://www.electronjs.org/blog/v8-memory-cage
Electron 21 was released on the 27th September, and I have opened an issue to complain about their breakage of the guaranteed stable node-api that electron are doing here. https://github.com/electron/electron/issues/35801
[826378:0924/183534.268000:ERROR:node_bindings.cc(146)] Fatal error in V8: v8_ArrayBuffer_NewBackingStore When the V8 Sandbox is enabled, ArrayBuffer backing stores must be allocated inside the sandbox address space. Please use an appropriate ArrayBuffer::Allocator to allocate these buffers.

A "more secure" feature that "will crash at runtime" sounds like a bit of an oxymoron.
The only workaround would be to take a copy of all memory before returning it to JS. This will affect Buffer and Stream-based output, as well as calls to metadata(). There will be an associated performance cost, so this will have to be optional.
Is there a way of querying the Electron runtime to determine if this "memory cage" feature is enabled, ideally via an ABI-stable napi_* call?

yeah, I am really not impressed. Out of the 7 native modules I use, 6 will break from this change which to me makes it far from 'rare'.
 Especially not wanting to penalise nodejs users because of electron. I havent looked yet, but from a skim of the original PR I dont see anything.
I feel like for now it might need to be checking the value of the process.versions.electron global? I have asked if there is a way on the original PR https://github.com/electron/electron/pull/34724

To clarify, I don't personally need this yet (Im very bad at keeping electron updated). But I've spent the last couple of hours looking into this and things around this, and thought you could do with a heads up to expect 'bug' reports users about this

I did a quick search of Node.js for previous discussion around a "memory cage" and the only result is a closed-and-not-merged PR that has some interesting observations about the performance impact.
https://github.com/nodejs/node/pull/43537
Electron patches its Node.js with what appears to be a similar change, so it's possible there'll be a performance impact on anyone using Buffers in Electron.
https://github.com/electron/electron/blob/main/patches/node/support_v8_sandboxed_pointers.patch

I just read the Electron 21 blog post and headed straight here and saw my fear confirmed.

Is there a way of querying the Electron runtime to determine if this "memory cage" feature is enabled, ideally via an ABI-stable napi_* call?

I don't know of any direct way to query for this feature, but the Electron version could be queried at least?

@lovell the implementation they actually went with can be found by following the link in this comment: https://github.com/nodejs/node/pull/43537#issuecomment-1264553033

the implementation they actually went with can be found by following the link in this comment: nodejs/node#43537 (comment) - not sure if it's relevant, but in the interest of gathering the necessary data.

I dont think that really teaches us anything. All I see there is changing some node internals to always use a different memory allocator, which is essentially what they have said we need to do in that blog post

I see a related warning when using Electron 21:
(node:228244) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead. (Use electron --trace-deprecation ... to show where the warning was created)
As well, use of metadata() causes a FATAL crash. I have had to revert to a slower parser to parse EXIF data.

Please see https://github.com/nodejs/node/pull/45181 for the required changes to Node.js itself and https://github.com/nodejs/node-addon-api/issues/1227 for follow-up changes to the node-addon-api wrapper. Once these are made available in published releases, there will also be changes required to sharp to use the new API they provide.

@arnhrwd That Buffer deprecation warning is not from sharp.

@lovell ,
FYI https://github.com/nodejs/node/pull/45181/ has landed.

@lovell In case you aren't following along, the upstream change has been released in node 19.1.0, but not any other versions of nodejs yet. And I don't think it is in any release of electron yet

There's a work-in-progress branch for this at v8-memory-cage, which is dependent on Electron updating its various internal versions of Node.js to include the new napi_no_external_buffers_allowed status.

Commit https://github.com/lovell/sharp/commit/584807b4f5e1b831785c79eef5367f737589f29b adds this and it will be part of v0.31.3.
Please remember you'll need a version of Electron that provides the patched version of Node.js

v0.31.3 now available with a workaround for the V8 memory cage.
Please remember you'll need a future version of Electron that provides the patched version of Node.js to take advantage of this.
https://github.com/electron/electron/search?q=09ae62b&type=issues

Works smoothly after upgrade to Electron 22.0.2 with Sharp v0.31.3, thanks!

Based on the release notes, the following versions of Electron are all patched and should work:

v20.3.9
v21.3.4
v22.0.1
v23.0.0-beta.1

@lovell just a question is my problem is relating to this all new memory handling with electron + node.
I have an electron app and everything runs wonderful with v23. but when using v24 i got random: GSlice: assertion failed: sinfo->n_allocated > 0 errors when doing things with sharp especially when doing things in parallel.
I have a graphql and express api which also generates thumbnails for images on the fly and so on.
Now i do not know if the error is coming from sharp or electron.
PS: i found a possibe root cause in another github issue/soution with a similar issues in other libs.
https://github.com/libvmi/libvmi/pull/927
my system is ubuntu 22.04, node 18, sharp 0.33, electron 24 (breaks), electron 23 (works)

@KillerCodeMonkey I'm unsure which version "sharp 0.33" refers to, but the latest sharp v0.32.0 does not rely on the GSlice allocator at all, as it has been removed from the glib dependency, so I would guess this error is more likely to be from Electron. The G_SLICE=always-malloc environment variable can be used to switch it off, but my advice (to Electron) would be to upgrade to a more recent version of glib without it.

thanks for the quick replay and you are right.. sorry for the typo, i meant sharp v0.32.0


fragmentReplacements and Prisma Client

Is your feature request related to a problem? Please describe.
Current implementation of Prisma client does not support fragmentReplacements as schema delegation is not a feature of Prisma client.
This makes usage of Prisma Client with libraries like middleware fragments a bit inconvenient because you have to use the $fragment syntax in each resolver to make it work defeating the purpose of middleware fragments.
Describe the solution you'd like
Prisma Client can support fragmentReplacements via a new API that might look like this:
const prisma = new Prisma({
  // Other Initialization options like endpoint, secret
  fragmentMap: {
    User: `... on User { profile { name } }`
  }
})

Describe alternatives you've considered
Currently, I have to use $fragment syntax on each resolver or fall back to use binding (missing our on awesome Client features including type safety).

This is related to field preselection.


Just updated (ComfyUI and all nodes) and no longer seeing option in right-click menu

I recently (yesterday) updated ComfyUI and all nodes, and noticed that Tagger is no longer showing up in the right-click menu for images nodes.

+1 same here

same

How to solve it

This should now be resolved if you update

如果您更新，这个问题现在应该可以解决

Still can't solve it

It shows up for me. 👍

I'm on commit a7dd82e668bfaf7fac365a4e73a1ba1acf224fbb of ComfyUI and commit ec533b7cf2be1230eddf07ac74faf434ab805b33 of ComfyUI-WD14-Tagger.


BOM Price Range Multiplying

Please verify that this bug has NOT been raised before.

[X] I checked and didn't find a similar issue

Describe the bug*
The total "price range" of a BOM is increasing everytime you expand a subassembly. It appears that the subassembly is being double counted when you click the "Load BOM for subassembly" button.
This is consistent across multiple BOMs but cannot be reproduced on the DEMO.

Item M1-00036 is expanded and the $2.3 is added to the total price range at the bottom.

Steps to Reproduce

Open part with BOM that is nested with >1 depth
Note price range of BOM-1
Expand child BOM-A
Note increase in price range of BOM-1

Expected behaviour
Pricing should not change.
Deployment Method

[ ] Docker
[ ] Bare metal

Version Information
0.12.8
Please verify if you can reproduce this bug on the demo site.

[ ] I can reproduce this bug on the demo site.

Relevant log output
No response

@bberg115 thanks for reporting - this issue has actually already been closed in https://github.com/inventree/InvenTree/pull/5721
This fix will be available in the upcoming 0.13.0 release :)

Sorry, I didn't see that. Thanks!


updates vscode cheat sheet

adds command

opens previously closed tab

rm extra spaces at end of lines (one at the beginning on line 9)

Thank you!


iPad Bug

Weird bug I noticed for iPad devices
If I run the app on release mode Slider is not fully visible, If I run the app in Debug mode everything is ok. iOS15
@Ramiz69
Release

Debug

Slider is configured via StoryBoard, with Top, Leading and Trailing Constraints. If build in iPhone preview on Storyboard selected bug is present. If I change iPad preview on Storyboard and build bug is not present.
Bug is reproducible in your Demo App via Storyboard

Fixed


Vint broken

using vint version 0.3.9 on both neovim and vim 8, there is a python process started taking 100% cpu whenever entering a vim file, also no errors are displayed

Do you see the problem when g:ale_lint_on_enter is set to 0? Does it happen on all Vim files, or just some Vim files?

every .vim file,but not with that option at 0

I'll have to try this later with that version of Vint. It works on my machine.

I can't reproduce this on a mac or on linux with neovim. Have you tried reinstalling Vint from pip?

Vint works when using neomake, so I think it is a bug here. I did reinstall vint

I suspect the Ale#queue() function has to do with it

This issue is occurring for me as well.
Initially there is only one vint instance created, but once I makes some edits, multiple processes are then created.
Setup:

nvim 0.1.5
OSX
vint 0.3.9

@bounceme Many changes have happened since this issue was opened. Do you still see these issues?

I don't know, I can't check right now as my setup has been changed quite a bit too.

I just tested with vint  and I am no longer experiencing this issue.
Setup:

vint 0.3.10
nvim 0.1.7
OSX
ale 8c758e3

Hmm. I'll close this for now, and the issue can be re-opened if it comes back.


[vimeo:user] not all videos extracted

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm asking a question and not reporting a bug or requesting a feature
[X] I've looked through the README
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've searched known issues and the bugtracker for similar questions including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Please make sure the question is worded well enough to be understood
Yt-dlp finds 26 videos in the playlist, instead of 36 available on the webpage

Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
F:\_distr\yt>yt-dlp   --no-check-certificate  --flat-playlist    --path F:\VIMEO
 -vU "https://vimeo.com/coachingupuniversity"
[debug] Command-line config: ['--no-check-certificate', '--flat-playlist', '--pa
th', 'F:\\VIMEO', '-vU', 'https://vimeo.com/coachingupuniversity']
[debug] Encodings: locale cp1251, fs utf-8, pref cp1251, out utf-8 (No VT), erro
r utf-8 (No VT), screen utf-8 (No VT)
[debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp [4d9231208] (win_exe
)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-7-6.1.7601-SP1 (OpenSSL 1.
1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 2024-07-04-git-03175b587c-essentials_build-www.gyan
.dev (setts)
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2024.07.04,
 curl_cffi-0.5.10, mutagen-1.47.0, requests-2.32.3, sqlite3-3.35.5, urllib3-2.2.
2, websockets-12.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Loaded 1830 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releas
es/latest
Latest version<EMAIL_ADDRESS>from yt-dlp/yt-dlp
yt-dlp is up to date<EMAIL_ADDRESS>from yt-dlp/yt-dlp)
[vimeo:user] Extracting URL: https://vimeo.com/coachingupuniversity
[vimeo:user] coachingupuniversity: Downloading page 1
[download] Downloading playlist: up.university
[vimeo:user] coachingupuniversity: Downloading page 2
[vimeo:user] coachingupuniversity: Downloading page 3
[vimeo:user] Playlist up.university: Downloading 26 items of 26
[debug] The information of all playlist entries will be held in memory
[download] Downloading item 1 of 26
[download] Downloading item 2 of 26
[download] Downloading item 3 of 26
[download] Downloading item 4 of 26
[download] Downloading item 5 of 26
[download] Downloading item 6 of 26
[download] Downloading item 7 of 26
[download] Downloading item 8 of 26
[download] Downloading item 9 of 26
[download] Downloading item 10 of 26
[download] Downloading item 11 of 26
[download] Downloading item 12 of 26
[download] Downloading item 13 of 26
[download] Downloading item 14 of 26
[download] Downloading item 15 of 26
[download] Downloading item 16 of 26
[download] Downloading item 17 of 26
[download] Downloading item 18 of 26
[download] Downloading item 19 of 26
[download] Downloading item 20 of 26
[download] Downloading item 21 of 26
[download] Downloading item 22 of 26
[download] Downloading item 23 of 26
[download] Downloading item 24 of 26
[download] Downloading item 25 of 26
[download] Downloading item 26 of 26
[download] Finished downloading playlist: up.university

F:\_distr\yt>yt-dlp -U
Latest version<EMAIL_ADDRESS>from yt-dlp/yt-dlp
yt-dlp is up to date<EMAIL_ADDRESS>from yt-dlp/yt-dlp)

Notes for devs:
The website makes API calls instead of the webpage requests that the extractor currently makes.
The first API request is made to the profile_sections endpoint with a jwt authorization header:
https://api.vimeo.com/users/coachingupuniversity/profile_sections?autopause=0&autoplay=0&controls=1&like=1&logo=1&loop=0&share=1&watch_later=1&info_on_pause=1&badge=1&playbar=1&default_to_hd=1&volume=1&include_videos=1&fields=uri%2Ctitle%2CuserUri%2Curi%2Cunbounded%2Cposition%2Cclip_uris%2Cvideos.total%2Cvideos.data.video_details%2Cvideos.data.profile_section_uri%2Cvideos.data.is_staff_pick%2Cvideos.data.show_featured_comment%2Cvideos.data.featured_comment%2Cvideos.data.column_width%2Cvideos.data.clip.link%2Cvideos.data.clip.uri%2Cvideos.data.clip.name%2Cvideos.data.clip.type%2Cvideos.data.clip.categories.name%2Cvideos.data.clip.categories.uri%2Cvideos.data.clip.config_url%2Cvideos.data.clip.pictures%2Cvideos.data.clip.height%2Cvideos.data.clip.width%2Cvideos.data.clip.duration%2Cvideos.data.clip.description%2Cvideos.data.clip.created_time%2Cvideos.data.clip.user.uri%2Cvideos.data.clip.user.name%2Cvideos.data.clip.user.link%2Cvideos.data.clip.user.location%2Cvideos.data.clip.user.bio%2Cvideos.data.clip.user.membership.badge%2Cvideos.data.clip.user.skills%2Cvideos.data.clip.user.background_video%2Cvideos.data.clip.user.available_for_hire%2Cvideos.data.clip.user.pictures.sizes%2Cvideos.data.clip.user.is_expert%2Cvideos.data.clip.badge.type%2Cvideos.data.clip.metadata.connections.comments.total%2Cvideos.data.clip.live.scheduled_start_time%2Cvideos.data.clip.live.status%2Cvideos.data.clip.content_rating&videos_count_per_section=10&page=1&per_page=4

The response contains the user's numeric ID (uri) and the total number of videos:
{
    "total": 1,
    "page": 1,
    "per_page": 4,
    "paging": {
        "next": null,
        "previous": null,
        "first": "/users/coachingupuniversity/profile_sections?autopause=0&autoplay=0&controls=1&like=1&logo=1&loop=0&share=1&watch_later=1&info_on_pause=1&badge=1&playbar=1&default_to_hd=1&volume=1&include_videos=1&fields=uri%2Ctitle%2CuserUri%2Curi%2Cunbounded%2Cposition%2Cclip_uris%2Cvideos.total%2Cvideos.data.video_details%2Cvideos.data.profile_section_uri%2Cvideos.data.is_staff_pick%2Cvideos.data.show_featured_comment%2Cvideos.data.featured_comment%2Cvideos.data.column_width%2Cvideos.data.clip.link%2Cvideos.data.clip.uri%2Cvideos.data.clip.name%2Cvideos.data.clip.type%2Cvideos.data.clip.categories.name%2Cvideos.data.clip.categories.uri%2Cvideos.data.clip.config_url%2Cvideos.data.clip.pictures%2Cvideos.data.clip.height%2Cvideos.data.clip.width%2Cvideos.data.clip.duration%2Cvideos.data.clip.description%2Cvideos.data.clip.created_time%2Cvideos.data.clip.user.uri%2Cvideos.data.clip.user.name%2Cvideos.data.clip.user.link%2Cvideos.data.clip.user.location%2Cvideos.data.clip.user.bio%2Cvideos.data.clip.user.membership.badge%2Cvideos.data.clip.user.skills%2Cvideos.data.clip.user.background_video%2Cvideos.data.clip.user.available_for_hire%2Cvideos.data.clip.user.pictures.sizes%2Cvideos.data.clip.user.is_expert%2Cvideos.data.clip.badge.type%2Cvideos.data.clip.metadata.connections.comments.total%2Cvideos.data.clip.live.scheduled_start_time%2Cvideos.data.clip.live.status%2Cvideos.data.clip.content_rating&videos_count_per_section=10&page=1&per_page=4",
        "last": "/users/coachingupuniversity/profile_sections?autopause=0&autoplay=0&controls=1&like=1&logo=1&loop=0&share=1&watch_later=1&info_on_pause=1&badge=1&playbar=1&default_to_hd=1&volume=1&include_videos=1&fields=uri%2Ctitle%2CuserUri%2Curi%2Cunbounded%2Cposition%2Cclip_uris%2Cvideos.total%2Cvideos.data.video_details%2Cvideos.data.profile_section_uri%2Cvideos.data.is_staff_pick%2Cvideos.data.show_featured_comment%2Cvideos.data.featured_comment%2Cvideos.data.column_width%2Cvideos.data.clip.link%2Cvideos.data.clip.uri%2Cvideos.data.clip.name%2Cvideos.data.clip.type%2Cvideos.data.clip.categories.name%2Cvideos.data.clip.categories.uri%2Cvideos.data.clip.config_url%2Cvideos.data.clip.pictures%2Cvideos.data.clip.height%2Cvideos.data.clip.width%2Cvideos.data.clip.duration%2Cvideos.data.clip.description%2Cvideos.data.clip.created_time%2Cvideos.data.clip.user.uri%2Cvideos.data.clip.user.name%2Cvideos.data.clip.user.link%2Cvideos.data.clip.user.location%2Cvideos.data.clip.user.bio%2Cvideos.data.clip.user.membership.badge%2Cvideos.data.clip.user.skills%2Cvideos.data.clip.user.background_video%2Cvideos.data.clip.user.available_for_hire%2Cvideos.data.clip.user.pictures.sizes%2Cvideos.data.clip.user.is_expert%2Cvideos.data.clip.badge.type%2Cvideos.data.clip.metadata.connections.comments.total%2Cvideos.data.clip.live.scheduled_start_time%2Cvideos.data.clip.live.status%2Cvideos.data.clip.content_rating&videos_count_per_section=10&page=1&per_page=4"
    },
    "data": [
        {
            "uri": "/users/150209093/profile_sections/default",
            "title": null,
            "unbounded": true,
            "position": 1,
            "clip_uris": [],
            "videos": {
                "total": 36,
                "data": []
            }
        }
    ]
}

subsequent API calls are made to this videos endpoint, incrementing the page param:
https://api.vimeo.com/users/150209093/profile_sections/default/videos?autopause=0&autoplay=0&controls=1&like=1&logo=1&loop=0&share=1&watch_later=1&info_on_pause=1&badge=1&playbar=1&default_to_hd=1&volume=1&fields=video_details%2Cprofile_section_uri%2Cis_staff_pick%2Cshow_featured_comment%2Cfeatured_comment%2Ccolumn_width%2Cclip.link%2Cclip.uri%2Cclip.name%2Cclip.type%2Cclip.categories.name%2Cclip.categories.uri%2Cclip.config_url%2Cclip.pictures%2Cclip.height%2Cclip.width%2Cclip.duration%2Cclip.description%2Cclip.created_time%2Cclip.user.uri%2Cclip.user.name%2Cclip.user.link%2Cclip.user.location%2Cclip.user.bio%2Cclip.user.membership.badge%2Cclip.user.skills%2Cclip.user.background_video%2Cclip.user.available_for_hire%2Cclip.user.pictures.sizes%2Cclip.user.is_expert%2Cclip.badge.type%2Cclip.metadata.connections.comments.total%2Cclip.live.scheduled_start_time%2Cclip.live.status%2Cclip.content_rating&page=1&per_page=10

Is there a way to change the command line options to solve this problem?

@S-A-1812 no (other than manually copying/pasting all the individual video links)


[UI] Visualize metadata completeness scores for search results and data records

Background: The metadata completeness score is a reflection of how much metadata was parsed, or augmented relative to the number of fields that are considered, required and recommended in the schema. The optional fields are not currently considered for metadata completeness as they are highly variable and repository dependent.
To do:

[x] Generate potential visualizations of the metadata completeness score as it would be displayed (@candicecz):

[x] On the search results page
[x] On the metadata record page

[x] Formulate the description / question for a User test that would indicate which visualization is most interpretable (@EmilyHaag, @candicecz, @leandrocollares)
[x] Conduct a user test using the visualizations and the description / question to identify the top visualization (@leandrocollares, @EmilyHaag, @candicecz)
[ ] Iterate with NIAID team on the top design

Metadata completeness score badges are viewable on staging:

Within the search cards: https://data-staging.niaid.nih.gov/search
Within the resource page: https://data-staging.niaid.nih.gov/resources?id=GSE111097

Metadata completeness score badges are viewable on staging:
Within the search cards: https://data.niaid.nih.gov/search
Within the resource page: https://data.niaid.nih.gov/resources?id=GEO_GSE111097


SET-197 Dev Spring Clean

SET-197
Removing lots of codes smells....
Time for a clean up!
This repo will be smelling fresh in no time ;)

Not merging. More an exercise in how long cleaning up tech debt would take.


Absolutely not an issue

Hi,
Sorry to use the "issues" section for this but I'm trying to do what you did with ionicons but for heroicons.com... without much luck. May I ask what tools did you use? I have problems with icomoon.io because of strokes that should be fills (or the other way around) when I upload SVG from heroicons. Any advice?
Thanks for your work !

Hello @stevenart ! Please check out my article on how to convert your SVG files from stroke to path. If you have any questions related to the conversion process, let me know in the comments. I hope this helps.

Thank you!
Have a great day.


fixtures: refactor fixture loading

Release notes draft:
Gosoline Fixture loader refactoring changes:
In this release I have refactored the fixture loading process to make it more flexible for custom implementations.
The FixtureBuilderFactory type was renamed to FixtureSetsFactory for clarity of what it is. Also its Signature changed, as can be seen below.
The WithFixtureBuilderFactory application option was renamed to WithFixtureSetFactory and gets a FixtureSetsFactory passed (func(ctx context.Context, config cfg.Config, logger log.Logger) ([]FixtureSet, error)).
The FixtureSet struct was renamed to simpleFixtureSet and should be used with its factory func NewSimpleFixtureSet.
FixtureSet is now an interface with only a Write(ctx context.Context) error func.
This makes the fixture loading more customizable, if you want to have your own implementation that is specific to your use-case (not covered by gosoline).
The FixtureLoader doesn't use a writer factory anymore and makes the user provide a writer (when using a simpleFixtureSet), also its interface doesn't get passed a []*fixtures.FixtureSet anymore but []fixtures.FixtureSet (slice of pointers to structs => slice of interfaces).
The FixtureBuilder interface was removed without replacement, as the FixtureSetsFactory is supposed to deliver the fixture sets directly.
The FixtureWriterFactory interface was removed without replacement, as the simpleFixtureSet contains a writer, when used. If a different FixtureSet implementation is used, it is supposed to take care of writing (or abstract it away).
The FixtureWriter now gets passed a []any as fixtures instead of a *FixtureSet, as the implementations always only accessed the fixtures key of the original FixtureSet anyways.
The SimpleFixtureBuilderFactory was removed in favor of the NewSimpleFixtureSet factory func.
The WithFixtureBuilderFactories test suite option was renamed to WithFixtureSetFactories and accepts any amount of FixtureSetsFactory args.
The logic for checking whether a fixture set is enabled, should purge or write has been moved to the SimpleFixtureSet. Custom implementations may want to adopt the changes accordingly to stay compatible with prior application behavior.
The NamedFixture struct is now mostly Generic compatible, making it more type-safe and nicer to deal with due to proper typing.
The Writer factory funcs were replaced and their signatures changed:

BlobFixtureWriterFactory(settings *BlobFixturesSettings) FixtureWriterFactory => NewBlobFixtureWriter(ctx context.Context, config cfg.Config, logger log.Logger, settings *BlobFixturesSettings) (FixtureWriter, error)
ConfigurableKvStoreFixtureWriterFactory[T any](name string) FixtureWriterFactory => NewConfigurableKvStoreFixtureWriter[T any](ctx context.Context, config cfg.Config, logger log.Logger, name string) (FixtureWriter, error)
DynamoDbFixtureWriterFactory(settings *ddb.Settings, options ...DdbWriterOption) FixtureWriterFactory => NewDynamoDbFixtureWriter(ctx context.Context, config cfg.Config, logger log.Logger, settings *ddb.Settings, options ...DdbWriterOption) (FixtureWriter, error)
DynamoDbKvStoreFixtureWriterFactory[T any](modelId *mdl.ModelId) FixtureWriterFactory => NewDynamoDbKvStoreFixtureWriter[T any](ctx context.Context, config cfg.Config, logger log.Logger, modelId *mdl.ModelId) (FixtureWriter, error)
MysqlOrmFixtureWriterFactory(metadata *db_repo.Metadata) FixtureWriterFactory => NewMysqlOrmFixtureWriter(ctx context.Context, config cfg.Config, logger log.Logger, metadata *db_repo.Metadata) (FixtureWriter, error)
MysqlPlainFixtureWriterFactory(metadata *MysqlPlainMetaData) FixtureWriterFactory => NewMysqlPlainFixtureWriter(ctx context.Context, config cfg.Config, logger log.Logger, metadata *MysqlPlainMetaData) (FixtureWriter, error)
MysqlSqlxFixtureWriterFactory(metadata *MysqlSqlxMetaData) FixtureWriterFactory => NewMysqlSqlxFixtureWriter(ctx context.Context, config cfg.Config, logger log.Logger, metadata *MysqlSqlxMetaData) (FixtureWriter, error)
RedisFixtureWriterFactory(name *string, operation *string) FixtureWriterFactory => NewRedisFixtureWriter(ctx context.Context, config cfg.Config, logger log.Logger, name string, operation string) (FixtureWriter, error)
RedisKvStoreFixtureWriterFactory[T any](modelId *mdl.ModelId) FixtureWriterFactory => NewRedisKvStoreFixtureWriter[T any](ctx context.Context, config cfg.Config, logger log.Logger, modelId *mdl.ModelId) (FixtureWriter, error)

The MysqlPlainFixtureWriter was adjusted to be able to load larger fixture amounts for the same table/model.
Please check out the examples to see how to migrate from original to new usage.
Other notable changes:

Fixtures are now loaded after the change history (if the app option is given), to ensure you can also load a predefined history.

The mysql container for integration tests now specifies max_connection=1000 (original default was 151 as per mysql documentation). This should allow for bigger integration tests and parallel integration tests running more smoothly.

db.SqlFmt func Signature changed

includes a formatValues []any parameter (to behave like fmt.* funcs) and a was renamed to args for better understanding of what the parameter is used for.
The ToSql receiver func first performs a fmt.Format on the passed format with the given formatValues (instead of a originally) and passes args back for later usage with e.g. sqlx for letting the db escape the values in a prepared statement to prevent potential sql injection

There is now a NewAnonymousAuthenticator func in the httpserver/auth package to allow handlers to to database operations even when the user is not authenticated (yet)

Redis clients are now being provided via the appctx.Provide func instead of via a sync.Mutex locking with local variable cache mechanism.

Mack and Suzy were renamed to Bob and Alice as their parents did a mistake when filling out the birth papers.


added a vimeo extension that embeds a video

Would need own repo.

I will look into adding these extensions to their own repo. Some of them are really worth saving.

maybe add it to your other extension called youtube. If you could implement this it would be a must

https://github.com/showdownjs/youtube-extension/commit/07d02e6db4f7ee5be6c88cffb9a0fb31d5ce9d8f


Getting User from username giving wrong tenant when userStoreDomain is empty

Describe the issue:
In https://github.com/wso2/carbon-identity-framework/blob/6ec2ea235d479b933e9e0a0b2e94741fad6a9a02/components/application-mgt/org.wso2.carbon.identity.application.common/src/main/java/org/wso2/carbon/identity/application/common/model/User.java#L196
There is a small bug setTenantDomain is used but it must be changed to setUserStoreDomain
            if (StringUtils.isNotEmpty(userStoreDomain)) {                 user.setUserStoreDomain(userStoreDomain);             } else {                 user.setTenantDomain(UserCoreConstants.PRIMARY_DEFAULT_DOMAIN_NAME);             }
How to reproduce:
N/A
Expected behavior:
N/A

Optional Fields
Related issues:

Suggested labels:
Identity Framework

@geve82 Good catch!


Added free Learning essentials course to Learn and product pages

Description
For the /learn page and a group of product pages, I have added links to the new Sitecore Essentials course that is free and now available on learning.sitecore.com. There is only one 'pathway' that covers a lot of products, so I've tried to provide sub-bullets or descriptions where necessary to list the relevant topic/module that makes sense for that page.
For example, on the /learn page the Sitecore Essentials course shows up in all 4 "Getting Started" boxes, but I only list the modules that are appropriate for that box. Similarly, on the SXA page, I only mention the Introduction to SXA module. This pattern repeats across the product pages that are required.
Motivation
This fixes #180, and is meant as an interim solution to get the free courses listed. We may need a new issue to further refine the /learn page to highlight appropriate learning options.
How Has This Been Tested?
All markdown changes were tested locally in-browser to validate the display of the new text. Also validated on Vercel preview site and validated that all links work.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[x] Documentation update (non-breaking change; modified files are limited to the /data directory or other markdown files)

Checklist:

[x] I have read the Contributing guide.
[x] My code/comments/docs fully adhere to the Code of Conduct.
[ ] My change is a code change.
[x] My change is a documentation change and there are NO other updates required.
[ ] My change is a documentation change and it requires an update to the navigation.
[ ] My change has new or updated images which are stored in the /public/images folder that need to be migrated to Sitecore DAM

Reviewed on the Vercel environment, looks good!


Dependency resolution error

Building a project with Maven dependency:
<dependency>  <groupId>io.github.ranga543</groupId> <artifactId>yelp-fusion-client</artifactId> <version>0.1.3</version> </dependency>
results in the following Maven error:

The following artifacts could not be resolved: io.github.ranga543:yelp-fusion-client:jar:0.1.2, com.android.support:appcompat-v7:jar:25.1.1: Failure to find io.github.ranga543:yelp-fusion-client:jar:0.1.2 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced

Version 0.1.3 and 0.1.2 both result in the same error.

This is probably due to Yelp making the switch to the new version of the Yelp API. Just takes time for the servers to catch up I think


chore(demo): fix SwipeActions examples

Closes #

Could you please also fix these examples while you're at it:
https://taiga-ui.dev/experimental/surface/Layers


Run eel exposed function from another file

Hello,
I am trying to execute a function that I have written in JavaScript and exposed to eel, but from another python file.
At the moment, I am just doing
import gui

gui.test_function("x")

However, that results in

Traceback (most recent call last):
File "main.py", line 328, in <module>
main()
File "main.py", line 314, in main
gui.run_test_function("aaaaaa")
File "../interface\gui.py", line 102, in run_test_function
eel.test_function(test_text)
AttributeError: module 'eel' has no attribute 'test_function'

However, if I run it from within the gui.py folder, it works perfectly.
How can I fix this?
Thanks.

Please can you share a link to your git repo/code or otherwise include more details about your directory structures, files, and code. This will help with debugging. It looks like you might be importing the wrong eel into your gui.py folder - but hard to say for sure without more information.

@samuelhwilliams
Here is my file structure
interface
    node_modules
    web
        css
            main.css
        html
            index.html
        images
            ...
        js
            ...
        themes
            ...
    gui.py
    main.js
    package.json
    package-lock.json
    renderer.js
src
    main.py

Here is the relevant part of my gui.py script
import eel

options = {
	'mode': 'custom',
	'args': ['node_modules/electron/dist/electron.exe', '.']
}

def run_test_function(test_text):
	eel.test_function(test_text)

if __name__ == "__main__":
	open("console.txt", "w").close()
	eel.init('web')
	eel.start('html/index.html', options=options)

And main.py:
sys.path.insert(0, '../interface')
import gui

gui.run_test_function("test")

And here's a script in my index.html file
<script type="text/javascript">
        eel.expose(test_function);
        function test_function(test_text) {
          alert(test_text);
        }
</script>

Ok, the problem is in how you're executing the files and your understanding of the __name__ variable.
The file that you execute is the entrypoint to the program, and within that file, __name__ resolves to __main__. In other files/modules/etc that get imported into the program, __name__ resolves to the name of that file. This allows Python scripts to work out which file was the entrypoint to the program.
When you run gui.py directly, within that file __name__ resolves to __main__.  Because of this, the conditional block of code in that file gets run - initialising eel and starting it running.
When you run main.py instead, the __name__ reference in gui.py now resolves to just the word gui.py (or potentially some path leading to that file). So the conditional block doesn't get run when you import that module, which means eel never gets initialised, and so never communicates with javascript to work out what functions are available.
TL;DR I think you need to initialise eel in main.py before using the gui.run_test_function function.
Let me know if this helps - I haven't actually tested this.

@samuelhwilliams I understand. I fixed it by merging the two files. Thanks for your help.