Support response_modes_supported

The .well-known/openid-configuration supports a property response_modes_supported which can take either "query" or "fragment".  oidc-client-js only seems to support "fragment", meaning it only looks in the URL after the #.
My OpenID provider (over which I have no control) only supports the "query" response mode, so it puts the details in the query string.
I'd do the work myself and send a PR, but my employment contract prohibits it 👎

My OpenID provider (over which I have no control) only supports the "query" response mode, so it puts the details in the query string.

The protocol specifically disallows tokens from being sent in quest string params, so your token server is violating the spec if that's all it supports. That's also why this library doesn't support it.

https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata

response_modes_supported
OPTIONAL. JSON array containing a list of the OAuth 2.0 response_mode values that this OP supports, >as specified in OAuth 2.0 Multiple Response Type Encoding Practices [OAuth.Responses]. If omitted, the >default for Dynamic OpenID Providers is ["query", "fragment"].

http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes

I'd do the work myself and send a PR, but my employment contract prohibits it 👎

Also, shame on your company for using OSS without allowing contributions back. I know it's your company, and not you personally. Feel free to pass this feedback to them.

response_modes_supported
OPTIONAL. JSON array containing a list of the OAuth 2.0 response_mode values that this OP supports, >as specified in OAuth 2.0 Multiple Response Type Encoding Practices [OAuth.Responses]. If omitted, the >default for Dynamic OpenID Providers is ["query", "fragment"].

from that same spec:
code token
    When supplied as the value for the response_type parameter, a successful response MUST include an Access Token, an Access Token Type, and an Authorization Code. The default Response Mode for this Response Type is the fragment encoding and the query encoding MUST NOT be used. Both successful and error responses SHOULD be returned using the supplied Response Mode, or if none is supplied, using the default Response Mode.
code id_token
    When supplied as the value for the response_type parameter, a successful response MUST include both an Authorization Code and an id_token. The default Response Mode for this Response Type is the fragment encoding and the query encoding MUST NOT be used. Both successful and error responses SHOULD be returned using the supplied Response Mode, or if none is supplied, using the default Response Mode.
id_token token
    When supplied as the value for the response_type parameter, a successful response MUST include an Access Token, an Access Token Type, and an id_token. The default Response Mode for this Response Type is the fragment encoding and the query encoding MUST NOT be used. Both successful and error responses SHOULD be returned using the supplied Response Mode, or if none is supplied, using the default Response Mode.
code id_token token
    When supplied as the value for the response_type parameter, a successful response MUST include an Authorization Code, an id_token, an Access Token, and an Access Token Type. The default Response Mode for this Response Type is the fragment encoding and the query encoding MUST NOT be used. Both successful and error responses SHOULD be returned using the supplied Response Mode, or if none is supplied, using the default Response Mode.

That only covers multi-type requests.

So you're only doing response_type=token?

I'm not 100% sure to be honest, I get an id_token and a state back.

If you're only doing response_type=token, then you're not doing OIDC. Arguably, then, the multiple response type spec is not pertinent.

It seems like this is a moot point anyway, it seems our OID server does support response_mode=fragment, it's just not listed in /.well-known/openid-configuration.
Now to figure out why I'm getting told that there's no state in the response even though there clearly is.  Thanks for your help!

I guess I am a little confused. By default IdentityServer4 gives the following response_mode values:
//Constants.cs
public static readonly List<string> SupportedResponseModes = new List<string>
        {
            OidcConstants.ResponseModes.FormPost,
            OidcConstants.ResponseModes.Query,
            OidcConstants.ResponseModes.Fragment
        };

But I see you mention above that the spec forbids tokens from being sent in query string parameters. Also, the end_session endpoint requires you to pass the id_token as the id_token_hint parameter if you want the post_logout_redirect_uri to work. What am I missing here?
Thanks!


Certificate error - bad attribute name on default attribute values

The AuthContextExtension specifies the SAML source for every attribute in the certificate subject name.
However if that attribute is set by a default value, then no SAML name is specified.
This is a violation of the XML Schema of the SAMLAuthContext xml content.
In the reference signature service, the proper SAML attribute name is set. If none is set in the sign request, we should have a name for "default". It could be argued that the value "default" is more accurate as it does not imply that the IdP was the source of the value in the cert.

It turns out that this issue was fixed quite some time ago. This issue is just that the deployed service is some revisions behind. This will be fixed when a new sign service is deployed.


remove PWA

hi,
we are currently in the process of moving our PWA from one domain to another.
I would like to delete the old entry (as it will be removed soon).
I can't seem to find any option for this from the UI atm.
Old entry: https://pwa-directory.appspot.com/pwas/5769646556971008
New entry: https://pwa-directory.appspot.com/pwas/5937094109298688
Thanks,
Dan

Hi @danmana
I just deleted the old entry.
Cheers,
Julian


FAQ converted into YML

wcf-adapter-faq-wcf-error-handling.md
wcf-adapter-faq-general-conceptual.md
wcf-adapter-faq-message-flow-and-mapping.md
frequently-asked-questions-for-the-biztalk-adapter-pack.md
wcf-adapter-faq-wcf-endpoints.md
wcf-adapter-faq-using-wcf-services.md
wcf-adapter-faq-service-architecture.md
wcf-adapter-faq-development-libraries.md
Converted into YML

Docs Build status updates of commit 9e29600:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

biztalk/TOC.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/adapter-oracle-ebs/oracle-e-business-suite-adapter-faqs.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/adapter-sql/sql-adapter-faqs.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/biztalk-adapter-pack.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/frequently-asked-questions-for-the-biztalk-adapter-pack.md
:white_check_mark:Succeeded

biztalk/adapters-and-accelerators/frequently-asked-questions-for-the-biztalk-adapter-pack.yml
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/post-installation-steps-for-biztalk-adapter-pack-2016.md
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-development-libraries.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-development-libraries.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-general-conceptual.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-general-conceptual.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-message-flow-and-mapping.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-message-flow-and-mapping.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-service-architecture.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-service-architecture.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-using-wcf-services.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-using-wcf-services.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-wcf-endpoints.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-wcf-endpoints.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-wcf-error-handling.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-wcf-error-handling.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faqs.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 4824419:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

biztalk/TOC.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/adapter-oracle-ebs/oracle-e-business-suite-adapter-faqs.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/adapter-sql/sql-adapter-faqs.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/biztalk-adapter-pack.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/frequently-asked-questions-for-the-biztalk-adapter-pack.md
:white_check_mark:Succeeded

biztalk/adapters-and-accelerators/frequently-asked-questions-for-the-biztalk-adapter-pack.yml
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/post-installation-steps-for-biztalk-adapter-pack-2016.md
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-development-libraries.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-development-libraries.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-general-conceptual.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-general-conceptual.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-message-flow-and-mapping.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-message-flow-and-mapping.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-service-architecture.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-service-architecture.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-using-wcf-services.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-using-wcf-services.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-wcf-endpoints.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-wcf-endpoints.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-wcf-error-handling.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-wcf-error-handling.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faqs.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

@MandiOhlinger - Could you please review the .yml converted page and let me know if it's good to sign-off.
cc: @Khairunj

Docs Build status updates of commit 007c30d:
:warning: Validation status: warnings

File
Status
Preview URL
Details

biztalk/adapters-and-accelerators/adapter-siebel/get-started-with-the-biztalk-adapter-for-siebel-ebusiness-applications.md
:warning:Warning
View
Details

biztalk/TOC.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/adapter-oracle-ebs/oracle-e-business-suite-adapter-faqs.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/adapter-sql/sql-adapter-faqs.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/biztalk-adapter-pack.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/frequently-asked-questions-for-the-biztalk-adapter-pack.md
:white_check_mark:Succeeded

biztalk/adapters-and-accelerators/frequently-asked-questions-for-the-biztalk-adapter-pack.yml
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/post-installation-steps-for-biztalk-adapter-pack-2016.md
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-development-libraries.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-development-libraries.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-general-conceptual.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-general-conceptual.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-message-flow-and-mapping.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-message-flow-and-mapping.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-service-architecture.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-service-architecture.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-using-wcf-services.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-using-wcf-services.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-wcf-endpoints.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-wcf-endpoints.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-wcf-error-handling.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-wcf-error-handling.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faqs.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/adapter-siebel/get-started-with-the-biztalk-adapter-for-siebel-ebusiness-applications.md

Line 56, Column 5: [Warning-file-not-found] Invalid file link: '../frequently-asked-questions-for-the-biztalk-adapter-pack.md'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 082ff3b:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

biztalk/TOC.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/adapter-oracle-ebs/oracle-e-business-suite-adapter-faqs.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/adapter-siebel/get-started-with-the-biztalk-adapter-for-siebel-ebusiness-applications.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/adapter-sql/sql-adapter-faqs.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/biztalk-adapter-pack.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/frequently-asked-questions-for-the-biztalk-adapter-pack.md
:white_check_mark:Succeeded

biztalk/adapters-and-accelerators/frequently-asked-questions-for-the-biztalk-adapter-pack.yml
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/post-installation-steps-for-biztalk-adapter-pack-2016.md
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-development-libraries.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-development-libraries.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-general-conceptual.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-general-conceptual.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-message-flow-and-mapping.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-message-flow-and-mapping.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-service-architecture.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-service-architecture.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-using-wcf-services.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-using-wcf-services.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-wcf-endpoints.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-wcf-endpoints.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faq-wcf-error-handling.md
:white_check_mark:Succeeded

biztalk/core/wcf-adapter-faq-wcf-error-handling.yml
:white_check_mark:Succeeded
View

biztalk/core/wcf-adapter-faqs.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Fixed bug with changes months on datepicker

This is an issue with using the .setMonth method when the current day value is larger than the largest day value of the month being set.
When setting a new month, we now set the date to the first day of the month.
E.g.
Adding 1 month to Jan 31, means it tries to set the date to Feb 31 which doesn't exist and therefore it instead sets the date to Mar 02.
var theDate = new Date('01 31 2016')
theDate.setMonth(1)
console.log(theDate) // 03 02 2016

var theNewDate = new Date('01 31 2016')
theNewDate.setMonth(1, 1)
console.log(theNewDate) // 02 01 2016

Fixes issue #533

Bien visto! 😄


Incorrect renaming if multiple identifiers appear on the same line

Suppose that we have an identifier that is used multiple times on the same line, as in the following file (x will be renamed):
fn main() {
    let x = 0;
    let longer_variable = 1;
    println!("{} {} {} {} {}", x, longer_variable, x, longer_variable, x);
}

and we rename that identifier to something that changes the length (in this case we rename it to YYYYYYY) we get the following file:
fn main() {
    let YYYYYY = 0;
    let longer_variable = 1;
    println!("{} {} {} {} {}", YYYYYY, longer_variaYYYYYYle, x, longer_YYYYYYariable, x);
}

The renaming function has clearly found the instances of x (correctly), but it has has replaced them by index from left to right.  Therefore, it has missed the 2nd instance of x by 5 chars and the second instance of x by 10 chars and replaced the corresponding parts of the text.  This means that whenever this occurs you have to fix these instances by hand, which usually takes longer than doing a basic text substitution.
This would be fixed if the substrings were replaced in reverse (right to left) order, since then the indices would still be valid.
I'm quite happy to make a PR for this myself (if someone points me in the right direction code-wise), but I have exams in a few weeks and need to revise :cry: so I won't be able to sink lots of time into it.
P.S. Loving rust-analyzer - it's so much better than every other language server I've seen :).
P.P.S. I'm using latest rust-analyzer with coc and neovim on Linux Mint - I can get exact versions when I get back to my laptop.

Thinking about it, this might not be a problem with rust-analyzer - I don't have any other (decent) language servers installed so I can't test if others do the same thing.

I can't reproduce this in Code.

OK that kinda makes sense - thinking about it, I find it unlikely that language servers would be responsible for editing text directly, so this is more likely a problem of CoC or neovim.  I'll do some more digging... thanks for checking this out though!

For the record, we seem to return this:
[Trace - 22:41:18] Received response 'textDocument/rename - (197)' in 2ms.
Result: {
    "documentChanges": [
        {
            "edits": [
                {
                    "newText": "yyyy",
                    "range": {
                        "end": {
                            "character": 9,
                            "line": 1
                        },
                        "start": {
                            "character": 8,
                            "line": 1
                        }
                    }
                }
            ],
            "textDocument": {
                "uri": "file:///home/me/Projects/hello/src/main.rs",
                "version": 26
            }
        },
        {
            "edits": [
                {
                    "newText": "yyyy",
                    "range": {
                        "end": {
                            "character": 32,
                            "line": 4
                        },
                        "start": {
                            "character": 31,
                            "line": 4
                        }
                    }
                }
            ],
            "textDocument": {
                "uri": "file:///home/me/Projects/hello/src/main.rs",
                "version": 26
            }
        },
        {
            "edits": [
                {
                    "newText": "yyyy",
                    "range": {
                        "end": {
                            "character": 52,
                            "line": 4
                        },
                        "start": {
                            "character": 51,
                            "line": 4
                        }
                    }
                }
            ],
            "textDocument": {
                "uri": "file:///home/me/Projects/hello/src/main.rs",
                "version": 26
            }
        },
        {
            "edits": [
                {
                    "newText": "yyyy",
                    "range": {
                        "end": {
                            "character": 72,
                            "line": 4
                        },
                        "start": {
                            "character": 71,
                            "line": 4
                        }
                    }
                }
            ],
            "textDocument": {
                "uri": "file:///home/me/Projects/hello/src/main.rs",
                "version": 26
            }
        }
    ]
}

I'm not sure how returning multiple changes is different from returning multiple edits.

OK so this tracks down the problem to be that of CoC.  CoC is treating the individual changes as atomic actions and applying them one after another (causing the ranges of later edits to become invalid) whereas Code is merging them and assuming that the ranges refer to the original document.  According to the LSP specification Code's implementation is correct and CoC's is wrong, so no changes are required here.


Fixing measurement for pod lantencies

Type of change

[x] Refactor
[ ] New feature
[x] Bug fix
[x] Optimization
[ ] Documentation Update

Description
Modifying logic to uniquely identify the run specific resources, ignoring the rest while calculating latencies. And also handling negative cases for v2 latencies to be on safe side, which ideally shouldn't happen in most of the cases.
Related Tickets & Documents

Related Issue # https://github.com/cloud-bulldozer/kube-burner/issues/413
Closes #

Checklist before requesting a review

[x] I have performed a self-review of my code.
[ ] If it is a core feature, I have added thorough tests.

Testing
Tested on self-managed AWS cluster and made sure the resources are not being repeated in latency calculations.
Initial run: https://gist.github.com/vishnuchalla/17d969f94d4cd1c909e29b6438837265
Follow up run: https://gist.github.com/vishnuchalla/da565a4de189f7c8edd6bb4a65ddc4fa

@marceloamaral you might be interested in similar kind of change for VM latencies as well. If yes please feel free to let us know!


Default values & validators for generic fields

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
Alright, first off, thanks a ton for creating this great project. I use it in a professional context on a daily basis and it is really one of the best python packages I have come across!
Now to my issue, where I don't even know if it is a bug or if I am using pydantic in a way that is not intended, or both.
My use case is about modelling different Integrations/Triggers (e.g. API Gateway, ...) for AWS Lambda handlers written in python. I plan on creating a plugin architecture where I use generic pydantic models to make implementing new Integrations as simple as possible.
This example code works fine, including the field validator on Event.body, everything works as expected:
import json
from base64 import b64decode
from typing import Generic, Optional, TypeVar
from typing_extensions import Annotated

from pydantic import BaseModel, ValidationInfo, field_validator, Field

T = TypeVar("T", bound=Optional[BaseModel])

class Event(BaseModel, Generic[T]):
    isBase64Encoded: bool = False
    body: T

    @field_validator("body", mode="before")
    def deserialize_body(cls, v: Optional[str], info: ValidationInfo) -> T:
        if v is None:
            return None

        if info.data["isBase64Encoded"]:
            v = b64decode(v)

        return json.loads(v)

class EventBody(BaseModel):
    payload: int

E = Event[EventBody]

d = {
    "isBase64Encoded": False,
    "body": "{\"payload\": 123}"
}

e = E.model_validate(d)

print(e)

I also need to support the case where d["body"] == None which works just fine when defining E = Event[Optional[EventBody]] - so far so good.
Now, the last case is where "body" is not present on d and I somehow need to supply a default value. I initially managed to make it work by defining E = Event[ Annotated[Optional[EventBody], Field(default=None)] ] BUT that stops working as soon as I add the field_validator on field Event.body.
Then I get a message which complains about "body" field being required on E.
Honestly, to me it feels like that Annotated[Optional[EventBody], Field( ... )] is working at all in the case where I don't have custom validation on Event.body is just a lucky coincidence - but yeah, I wanted to ask the gurus if there is a way how I can make this work!
I hope I could make myself clear and that I got the point across, if not, please ask for more information!
Best,
Stefan
Example Code
import json
from base64 import b64decode
from typing import Generic, Optional, TypeVar
from typing_extensions import Annotated

from pydantic import BaseModel, ValidationInfo, field_validator, Field

T = TypeVar("T", bound=Optional[BaseModel])

class Event(BaseModel, Generic[T]):
    isBase64Encoded: bool = False
    body: T

    @field_validator("body", mode="before")
    def deserialize_body(cls, v: Optional[str], info: ValidationInfo) -> T:
        if v is None:
            return None

        if info.data["isBase64Encoded"]:
            v = b64decode(v)

        return json.loads(v)

class EventBody(BaseModel):
    payload: int

E = Event[
    Annotated[Optional[EventBody], Field(default=None)]
]

d = {
    "isBase64Encoded": False,
}

e = E.model_validate(d)

print(e)

Python, Pydantic & OS Version
pydantic version: 2.4.2
        pydantic-core version: 2.10.1
          pydantic-core build: profile=release pgo=true
               python version: 3.8.10 (default, May 26 2023, 14:05:08)  [GCC 9.4.0]
                     platform: Linux-5.4.0-110-generic-x86_64-with-glibc2.29
             related packages: typing_extensions-4.8.0

Hi @mattiZed,
Thanks so much for your question. We're so glad that Pydantic is coming in handy for you. Thanks, also, for the thoroughly explained example - that makes things super easy on our end.
Just to make sure I understand - I assume the following definition change be an option for you?
class Event(BaseModel, Generic[T]):
    isBase64Encoded: bool = False
    body: Optional[T] = None  # <-- note change in field type here
    ...

That change should work, but I'm guessing that doesn't work for your use case. If not, happy to help you figure out an alternative solution 😄.

Hi @sydney-runkle, thanks for the reply on a friday evening ;-)
If I change the definition to what you propose, I can not control if  EventBody  has Optional type or not - to clarify:
E = Event[EventBody]

d = {
    "isBase64Encoded": False,
    "body": None
}

e = E.model_validate(d)

this is expected to fail, as Event[EventBody] signifies EventBody is of non-Optional type. To accept a d like in the example, I require: Event[Optional[EventBody]].

@mattiZed,
Sure thing. Ok, I understand your problem definition a bit better now. Would a subclassing approach like this one work, then?
import json
from base64 import b64decode
from typing import Generic, Optional, TypeVar

from pydantic import BaseModel, ValidationInfo, field_validator

T = TypeVar("T", bound=BaseModel)

class Event(BaseModel, Generic[T]):
    isBase64Encoded: bool = False
    body: T

    @field_validator("body", mode="before")
    def deserialize_body(cls, v: Optional[str], info: ValidationInfo) -> T:
        if v is None:
            return None

        if info.data["isBase64Encoded"]:
            v = b64decode(v)

        return json.loads(v)

class EventBody(BaseModel):
    payload: int

class MyEvent(Event[T], Generic[T]):
    body: Optional[T] = None

E = MyEvent[EventBody]

d1 = {
    "isBase64Encoded": False,
    "body": "{\"payload\": 123}"
}

d2 = {
    "isBase64Encoded": False,
    "body": None
}

d3 = {
    "isBase64Encoded": False,
    # "body": "{\"payload\": 123}"
}

e1 = E.model_validate(d1)
print(repr(e1))
#> MyEvent[EventBody](isBase64Encoded=False, body=EventBody(payload=123))

e2 = E.model_validate(d2)
print(repr(e2))
#> MyEvent[EventBody](isBase64Encoded=False, body=None)

e3 = E.model_validate(d3)
print(repr(e3))
#> MyEvent[EventBody](isBase64Encoded=False, body=None)

Because we're using a subclassing approach above, the deserialize_body field validator is inherited and still takes effect as expected.
The difficulty with your initial approach, annotating an optional type with a Field specification and parametrizing a generic model with that type, is that said Field information isn't attached to the core schema of the model, which is primarily responsible for the validation and serialization.
Let me know if this works for you. Happy to answer any follow up questions as well 😄. Happy Friday! 🥳

Okay, I think I understand your approach.
That would require someone who is using the integration package to create a subclass of the base Event and then control Optional and default value of the generic type(s) in that subclass if they have that need. I can see how that could be a solution.
Still, I like this syntax E = Event[Path, Optional[Query], Body] because it looks pretty intuitive to me - if it's possible, I would like to
save people from having to subclass the original <Something>Event. Do you see any way how that might be possible?
About the initial approach:
Yes, I did some digging into BaseModel and inspected self.model_fields of an
Event[ Annotated[Optional[EventBody], Field(...)] ]

to understand what's going on and I think I saw FieldInfo objects that would look like this:
{ "body": FieldInfo(annotation=Annotated[ ..., FieldInfo(..., required=False) ], required=True)}

So I think the problem is that I can not really hook into the original FieldInfo which is created for field "body" when I do
Event(BaseModel, Generic[T])
    body: T

Right, I've implemented the whole situation:

import json
from base64 import b64decode
from typing import Generic, Optional, TypeVar

from pydantic import BaseModel, ValidationInfo, field_validator, ValidationError

Q = TypeVar("Q", bound=BaseModel)
B = TypeVar("B", bound=BaseModel)

class Event(BaseModel, Generic[Q, B]):
    isBase64Encoded: bool = False
    query: Q
    body: B

    @field_validator("body", mode="before")
    def deserialize_body(cls, v: Optional[str], info: ValidationInfo) -> B:
        if v is None:
            return None

        if info.data["isBase64Encoded"]:
            v = b64decode(v)

        return json.loads(v)

class Query(BaseModel):
    limit: int = 1

class Body(BaseModel):
    payload: int

# Define Event: Body has to be present, Query is nullable but also has to be present
E = Event[Optional[Query], Body]

d = {
    "isBase64Encoded": False,
    "query": { "limit": 1 },
    "body": "{\"payload\":123}"
}

print(E.model_validate(d))
# -> isBase64Encoded=False query=Query(limit=1) body=Body(payload=123)

d = {
    "isBase64Encoded": False,
    "query": None,
    "body": "{\"payload\":123}"
}

print(E.model_validate(d))
# -> isBase64Encoded=False query=None body=Body(payload=123)

d = {
    "isBase64Encoded": False,
    "body": "{\"payload\":123}"
}
# this will fail: query is nullable but required
try:
    E.model_validate(d)
except ValidationError as e:
    print(e)

# Derive from base Event so we can default "query" to None
class DefaultQueryEvent(Event[Query, Body]):
    query: Optional[Query] = None

E = DefaultQueryEvent

d = {
    "isBase64Encoded": False,
    "body": "{\"payload\":123}"
}

#  This will work again
print(E.model_validate(d))

So I could live with this solution, especially since the situation of a field being not present on d instead of being None/null is probably very rare - I assume these AWS events are all well behaved and they don't exclude a field from their own event but you never know - better safe than sorry.
Still I feel like having to derive from the base Event class to make the default value work is a bit clumsy. So if you got any other idea let me know :)
Otherwise, I think we can consider this issue closed.

Hi @mattiZed,
There's good news and there's bad news! After digging around a bit more, I think I found a solution that you'll be excited about. I took a closer look, and indeed, parametrizing generic models does change the core schema, allowing for validation based on the parametrized type.
We can see that here:
import json
from base64 import b64decode
from typing import Generic, Optional, TypeVar

from pydantic import BaseModel, ValidationInfo, field_validator, Field, Strict
from typing_extensions import Annotated

X = TypeVar("X", bound=BaseModel)

class Event(BaseModel, Generic[X]):
    x: X

class OptionalWithDefaultX(BaseModel):
    pass

E = Event[Annotated[Optional[OptionalWithDefaultX], Field(default=None)]]
# below shows that the default is actually taking effect on the schema
print(E.__pydantic_core_schema__['schema']['fields']['x']['schema']['default'])
# > None

e = E()
print(e.model_dump())
# > {'x': None}

Now the bad news:
This behavior doesn't seem to be working appropriately when a field_validator is involved. In that sense, I'd classify this as a bug, and hopefully we can get a fix out that allows you to use your original pattern + things will work as expected.

Hi @sydney-runkle,
ah, interesting. That supports my initial observation that E = Event[ Annotated[Optional[EventBody], Field(default=None)] ] actually does work as expected, as long as there is no field validator defined on Event.body. So for me this is actually 2x good news as

I have a workaround for now, deriving from the original base event
There might be a fix in the future which will make this work

Thanks so much for investigating and please keep me posted! 👍

I think I found another issue: I also need to support generics that have NoneType for a specific field:
(Note the bound=Optional[BaseModel] on R)
from pydantic import BaseModel
from typing import Generic, Optional, Type, TypeVar

R = TypeVar("R", bound=Optional[BaseModel])

class MyModel(BaseModel, Generic[R]):
    response: Type[R]

class Response(BaseModel):
    pass

m = MyModel[Response]
# fails

m = MyModel[None]
# also fails

I get:
pydantic_core._pydantic_core.SchemaError: Error building "model" validator:
  SchemaError: Error building "model-fields" validator:
  SchemaError: Field "response":
  SchemaError: Error building "is-subclass" validator:
  TypeError: '_GenericAlias' object cannot be converted to 'PyType'

When I remove Optional from the bound of the TypeVar it works, but obviously I cannot pass None as a generic anymore.

@mattiZed,
Glad you have a workable solution for now 😄. We'll keep you updated as we make progress on the "default set via generic" issue.
Regarding your next question, I do believe this is a bug in our Generic bound processing. The following works:
from pydantic import BaseModel
from typing import Generic, Optional, Type

class MyModel(BaseModel):
    response: Type[Optional[BaseModel]]

class Response(BaseModel):
    pass

# works
m = MyModel(response=Response)

# works
m = MyModel(response=type(None))

We can work on a fix for this issue as well. Thanks for reporting that problem 👍

Also, just for future reference - the issue here is that the function-before schema associated with the field-validator wraps up the default schema created based on the nature of the generics in our examples. We'd have to reorder the schema to bubble the default schemas up to the top in order for these examples to behave as anticipated.

Hi,
I just noticed that I never responded to your last comments. My apologies!
We have worked around the problem for now and are fine with your decision.
Continue the awesome work, pydantic is just great!


[NetAppFiles ] Update help description for pool-change

Description Update the help description for the az netappfiles volume pool-change operation that was incorrect

Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change.
[Component Name 2] az command b: Add some customer-facing feature.

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

[ ] I adhere to the Error Handling Guidelines.

NetAppFiles


JavaScript output disabled

Description
Looks like JavaScript output is disabled in the app. I don't remember if there is a setting to change this. I think the default state of the app should match JupyterLab (enabled by default).
Reproduce

Create a new cell with %%javascript\nconsole.log("Hi there");
Run you will see a message about JavaScript output being disabled

Expected behavior
JavaScript output should be rendered.

Can you give more detail on what you mean?

My understanding (which may very well be incorrect, I don't have a lot of experience in js in electron) is that js in electron has access to filesystem apis, etc. If we are running in a comparable browser sandbox in electron, then that's wonderful news to me :).
This seems also to be related to https://github.com/jupyterlab/jupyterlab-desktop/issues/242

closing since js output is enabled in newer versions. security concerns are tracked in another issue.

Thanks!
On Mon, Nov 8, 2021 at 7:14 PM Mehmet Bektas @.***>
wrote:

closing since js output is enabled in newer versions. security concerns
are tracked in another issue.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jupyterlab/jupyterlab-desktop/issues/305#issuecomment-963778416,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAGXUHYX6OL7DNLLWGYSTLULCG2BANCNFSM5F5UU6YQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--
Brian E. Granger
Senior Principal Technologist, AWS AI/ML @.***)
On Leave - Professor of Physics and Data Science, Cal Poly
@ellisonbg on GitHub


Can it work with --experimental-specifier-resolution=node  ?

Without this flag we need to import typescript files explicitly and VSCode shows errors on it:

Now in 0.1.0, it should just work (no need for --experimental-specifier-resolution=node)


Bcsc integration

Please check if the PR fulfills these requirements:

[x] After these changes, the app was run and still works as expected
[x] Tests for these changes were added (if applicable)
[x] All existing unit tests were run and still pass

Please specify the type of change this PR introduces (Bug fix, feature addition, content update, chore, etc.):
feature addition: Integration of bcsc-service into AOP for authentication
Additional Notes:

Will need to test asap to confirm testers are not locked out .  Auth service API should be setup now


fix: import bugs

Explain what this PR does.

Codecov Report

Merging #96 (f58f4b3) into main (bec2c17) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main      #96   +/-   ##
=======================================
  Coverage   86.29%   86.29%
=======================================
  Files          19       19
  Lines         956      956
  Branches       99       99
=======================================
  Hits          825      825
  Misses        112      112
  Partials       19       19

Impacted Files
Coverage Δ

numaprom/tools.py
86.33% <100.00%> (ø)

numaprom/udf/inference.py
100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Isolate processors

This pull move the KubernetesApplication into its own module.
Also makes ComponentApplication standalone (no longer requiring KubernetesApplication to work).

While I was at it I also dealt with a refegression found by @cmoulliard which had to do with custom decorators overwriting each other .


[Docs] Add note about Windows & Linux community responsibilities to the docs

For the forseeable future the OS X development experience (DX) is the highest priority because all of the core RN team and most of FB engineering uses Macs. Also you need OS X to build the iOS app anyway. The DX on OS X will naturally receive the most care and attention through extensive dogfooding and needing to support the large org. At the same time there are people in the community who are on Windows or Linux and would like to use RN. Since this is a community need, support for Windows and Linux is designated as a community responsibility.
So, communicating this clearly and helping people be aware of this is important. We should include it in the docs as well as have some text to paste or link people to in issues about Windows or Linux support. I don't have a specific place in the docs in mind but think we need to highlight this point somewhere in the setup flow.
cc @vjeux @mkonicek

I agree we should make this more obvious :)

How about a separate item 'Windows and Linux' support. At the beginning of the page you can explain the reasoning you already did very well in an issue I saw. Below could be the list of things that are known to work differently / not working yet on each platform.

I'm at a conf in Prague and a friend here is using RN on Windows. I will check how the experience is and get feedback.

done


Add missing URLs to custombuild.md

I'm not sure why, but there were a load of 'links' in this file that were missing actual URLs - maybe the intention was to go back and "fill in the blanks" later?
I've used my best-guess for some of these URLs, so IMHO someone from the devices team (@agherzan ?) should check them to see if there's "better" URLs that should have been used. Also pinging @shaunmulligan as GitHub history says that he added this file initially...

@lurch can you updated the PR commit with the required Change-type tag?

@imrehg Done. How come there was no automated warning from VersionBot, telling me that I'd forgotten to do so?

@lurch I think I know what's up with Versinbot - you are PR'ing from your fork, and Versionbot needs PR to be from a branch within the repo. Let me work around this this time.

Closing in favour of #444


chore (Topology.Algebra.Algebra): name and scope instance

This instance is reasonable mathematically but creates complexity in the typeclass search so we make it available only when needed by scoping it.

!bench

!bench

DiscreteTopology is not one of commonly used scopes, so I suggest that we just turn it into a lemma.

bors d+

bors merge


WIP -- improve pack codegen

Pack Codegen
The pack codegen looks good. We're using 16x16 shuffle strategy for LHS packing. It improves the performance a lot. Here is the ASM dump: https://gist.githubusercontent.com/hanhanW/3b67ca80389383d4c2de6e4b63f2698c/raw
Here is the benchmark result for packing w/o padding semantics (on LHS).

Shape
before
after

384x512
79.5 us
62.28 us

384x384
53.02 us
32.81 us

384x128
15.37 us
5.04 us

384x32
3.9 us
1.42 us

384x2
0.41 us
0.5 us

And some results for packing w/ padding semantics (on LHS).

Shape
before
after

391x384
91.19us
33.75 us

22833x48
692.16 us
386.35 us

391x34
7.49 us
4.36 us

5785x96
377.59 us
192.47 us

391x32
7.03 us
1.48 us

1485x192
172.24 us
103.57 us

391x17
3.87 us
2.92 us

There are rooms to improve packing with padding semantics. The ukernel is doing better than codegen. I'm going to prototype it using masking trick.
Pack Fusion Codegen
And I think we're having good pack fusion codegen with the PR as well. Here is an example that extracted from MobileBert model:
#map = affine_map<(d0, d1) -> (d1)>
#map1 = affine_map<(d0, d1) -> (d0, d1)>
func.func @generic_pack(%arg0: tensor<384x512xf32>, %arg1: tensor<512xf32>) -> tensor<24x512x16x1xf32> {
  %cst = arith.constant 3.40282347E+38 : f32
  %cst_0 = arith.constant 0.000000e+00 : f32
  %0 = tensor.empty() : tensor<384x512xf32>
  %1 = linalg.generic {indexing_maps = [#map, #map1, #map1], iterator_types = ["parallel", "parallel"]} ins(%arg1, %arg0 : tensor<512xf32>, tensor<384x512xf32>) outs(%0 : tensor<384x512xf32>) {
  ^bb0(%in: f32, %in_1: f32, %out: f32):
    %3 = arith.addf %in, %in_1 : f32
    %4 = arith.minf %3, %cst : f32
    %5 = arith.maxf %4, %cst_0 : f32
    linalg.yield %5 : f32
  } -> tensor<384x512xf32>
  %2 = tensor.empty() : tensor<24x512x16x1xf32>
  %pack = tensor.pack %1 inner_dims_pos = [0, 1] inner_tiles = [16, 1] into %2 : tensor<384x512xf32> -> tensor<24x512x16x1xf32>
  return %pack : tensor<24x512x16x1xf32>
}

Configuration
Single Generic Op
Fusion with the PR
Fusion without the PR

Single-threaded w/o Distribution mode
64 us
68 us
164 us

Single-threaded w/ Distribution mode
85 us
232 us
320 us

The packing overheads is hidden in fusion cases as expected.
The distribution mode somehow destroys the performance, although the inner loops of ASM dumps are identical. This needs more investigations. Anyway, we're at a good position for pack fusion codegen w/o distribution mode.  The generated ASM is: https://gist.githubusercontent.com/hanhanW/cccfae78af4cf24c49ee780396061ec2/raw
UnPack + Generic + Pack
If we benchmark with actual dispatch from MobileBert, which is unpack + generic + pack case, it still only take 66 us to finish. This shows again that pack/unpack overheads can be hidden in fusion! Also, the perf w/o PR is 292 us. We'll get ~5x improvements on overheads from the PR!
#map = affine_map<(d0, d1) -> (d1)>
#map1 = affine_map<(d0, d1) -> (d0, d1)>
func.func @unpack_generic_pack(%0: tensor<24x32x16x16xf32>, %1: tensor<512xf32>) -> tensor<24x512x16x1xf32> {
  %cst = arith.constant 3.40282347E+38 : f32
  %cst_0 = arith.constant 0.000000e+00 : f32
  %unpack_init = tensor.empty() : tensor<384x512xf32>
  %unpack = tensor.unpack %0 inner_dims_pos = [0, 1] inner_tiles = [16, 16] into %unpack_init : tensor<24x32x16x16xf32> -> tensor<384x512xf32>
  %2 = tensor.empty() : tensor<384x512xf32>
  %4 = linalg.generic {indexing_maps = [#map, #map1, #map1], iterator_types = ["parallel", "parallel"]} ins(%1, %unpack : tensor<512xf32>, tensor<384x512xf32>) outs(%2 : tensor<384x512xf32>) {
  ^bb0(%in: f32, %in_1: f32, %out: f32):
    %6 = arith.addf %in, %in_1 : f32
    %7 = arith.minf %6, %cst : f32
    %8 = arith.maxf %7, %cst_0 : f32
    linalg.yield %8 : f32
  } -> tensor<384x512xf32>
  %5 = tensor.empty() : tensor<24x512x16x1xf32>
  %pack = tensor.pack %4 inner_dims_pos = [0, 1] inner_tiles = [16, 1] into %5 : tensor<384x512xf32> -> tensor<24x512x16x1xf32>
  return %pack : tensor<24x512x16x1xf32>
}

Conclusions/Note

We have to address distribution mode issue.
We can have better codegen for padding cases

I just ran a benchmark for MobileBert!

Default
Data Tiling without the PR
Data Tiling With the PR

152 ms
253 ms
222 ms

The PR saves us 30 ms in the e2e model. I expect that we can get 47 ms improvement when we enable ukernels for mmt4d ops. That would bring us to 175 ms.


Dismiss

Hi
Is it possible to dismiss all dialogs when activity goes to "onPause" mode?
I open a dialog then without closing it, i lock the device. after unlocking the device an applock fragment opnes in my app but the previous dialog is not dismissed and make problem for my app.

You need to keep track of your dialogs and dismiss them individually.


Hi Niels!

Hi Niels!
In the case of WTQ we have some special logic that tries to find the answer text in the table or that populates the float_value
field if the answer is a real number.
The logic is here:
https://github.com/google-research/tapas/blob/master/tapas/utils/interaction_utils_parser.py
For WTQ parse_question will be called with mode REMOVE_ALL. (The same code is used for WikiSQL where we have the supervised mode that uses the coordinates extraction from the SQL and the weakly-supervised mode where we do the same as for WTQ.)
_parse_answer_coordinates is the code that searches for the answer.
_parse_answer_float will try to parse the text as a float.
_parse_answer_coordinates uses this linear optimization code but is actually just extracting the first text match of
the answer in the table.
Originally posted by @ghost in https://github.com/google-research/tapas/issues/50#issuecomment-705465960

@NielsRogge @ghost Can you let me know in case of Pytorch code of TAPAS we need to feed the data in SQA format. What should be fed in the answer coordinates field when the queries are of aggregation type where answer does not match with any of the table cell value.

@NielsRogge @eisenjulian @ghost In our dataset we don't have the intermediate labels in terms of answer_coordinates and can not calculate them using the parsing utility provided as the queries are aggregation queries and none of the cells would match the answer. We are using pytorch Hugginface TAPAS. If we try to pass answer_coordinates as None the code throws an error. Our question is what to be passed as answer_coordinates in such a scenario? When we tried to make the labels of cell selection as all zeros (as we don't know them) the model does not get trained. In short how to trained the model in the cases of weak supervision only. Please answer this as we are trying to figure this out for past month.

Hi,
Our model is built to first select relevant cells (scored higher than a
threshold) then to apply aggregation over the selected cells. In this case
you need to provide the coordinates of all cells to aggregate over. With
this logic the model is not capable of finding the result of aggregation
without computing the aggregation over specified cells.
Here are the fields in the interaction proto to fill:
// Coordinates of cells that contain the answers. (Please put all the cells
over which to aggregate)
repeated AnswerCoordinate answer_coordinates = 1;
// A function that is applied to the answer cells in order to obtain the
final answer. (Please choose between NONE/ SUM/ AVERAGE/ COUNT)
optional AggregationFunction aggregation_function = 2
// Present if the answer can be represented as a single float value, for
example produced by an aggregation ('the average population of all
countries'). (Please put your aggregation result)
optional float float_value = 4;
If the supervision is removed then the aggregation step should also be
removed. Thus nothing would ensure that the model understands the
connection between the aggregation operation and the cells tokens. Here you
are expecting a BERT based model over text to be able to act like a
calculator. (Usually BERT based models  (here I'm talking about
non-supervised tasks) are not very efficient on achieving calculation tasks
without using special tokens / additional methods (There are a lot of
papers / research that improves Bert perf as a calculator) but still you
can try it ). For that you need to change the TAPAS architecture model:

Easy to try: If you know/ can represent the final answer by only one
token: you can use a classifier model to predict a class (from your vocab
size).
More complex: change the architecture to enable sequential predictions
(not implemented yet)

Thanks,
Syrine
On Fri, Sep 24, 2021 at 2:56 PM ManasiPat @.***> wrote:

@NielsRogge https://github.com/NielsRogge @eisenjulian
https://github.com/eisenjulian @ghost https://github.com/ghost In our
dataset we don't have the intermediate labels in terms of
answer_coordinates and can not calculate them using the parsing utility
provided as the queries are aggregation queries and none of the cells would
match the answer. We are using pytorch Hugginface TAPAS. If we try to pass
answer_coordinates as None the code throws an error. Our question is what
to be passed as answer_coordinates in such a scenario? When we tried to
make the labels of cell selection as all zeros (as we don't know them) the
model does not get trained. In short how to trained the model in the cases
of weak supervision only. Please answer this as we are trying to figure
this out for past month.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/google-research/tapas/issues/138#issuecomment-926603573,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APARZOMXO3BDHN5OJSDTKATUDRYRTANCNFSM5ETCL5LA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


update selenium-webdriver

We should be very careful when updating dependencies like Webdriver. In addition, you've commented out some linting related code without an explanation.
Could you provide some reasoning behind these changes? If not, i'll go ahead and close this PR in 3 days. Thanks!

Hello Nick, about the commented lines, both commands (npm install, tsc) produce no output so checking that to determine if there was an error is breaking this test on my side, please let me know if I'm missing something about it

cla signed

Any news on this? What is needed to get it included? The older Selenium version in Protractor is a problem for running tests in Chrome Headless.

Is this still relevant or can this (stale) PR closed? Because https://github.com/angular/protractor/commit/0fbc2c0ac12992bd61712188a96aef6684bef0c1 landed and bumped the version of selenium-webdriver.

Already updated to 3.6.0. Close the PR


Missing quill_2.13 artifacts (postgres/mysql)

Version: 3.4.10
Module: finagle-postgres / async-postgres / finagle-mysql / async-mysql
Database: all
Expected behavior
Since #1644 got merged before the release 3.4.10 releases, and quill-core has a _2.13 artifact ( https://search.maven.org/search?q=quill-core ) it would be great for some other modules to have their_2.13 artifacts published.
Actual behavior
There are no _2.13 releases for finagle-postgres / async-postgres / finagle-mysql / async-mysql
https://search.maven.org/search?q=quill-finagle-postgres
https://search.maven.org/search?q=quill-async-postgres
https://search.maven.org/search?q=quill-finagle-mysql
https://search.maven.org/search?q=quill-async-mysql
@getquill/maintainers

I will starting working on this in a few days.
The async module will probably be replaced with jasync/r2dbc

quill-cassandra too

I've make a new release of postgresql-async with some fix ported from my internal version.
https://github.com/postgresql-async/postgresql-async/releases/tag/v0.3.0

Now blocked by this pr  FinaglePostgres


acl component and object-acl component

1.Bucket read and write permissions are modified
2.Bucket object read and write permissions are modified
@anvithks @wisererik Please check whether it can be merged.

@anvithks #2  Is the previous commit for 'yuejuSDS:master', which has no effect on this merge,thank you

Fixes #202


add nvcc to travis

Sorry I commented out the existing matrix just to see if this one worked (I can't add my fork to travis-ci).

Closing this as I don't know how to make NVCC work, feel free to re-open if you can make some progress.


In admin panel display aggregate values below change list table of models.

Do you have any examples?

Is it a third party application feature request?
No
Describe your feature request
I can't seem to find a way to display aggregate values like in Order model there'll be amount field, and I want to display total amount sum of all the orders just below the change list table of Order model, and it should update total amount sum if data filtered.
I tried to edit ModelAdmin.changelist_view but its not working I don't know what's wrong, I've followed the folder structure as mentioned in docs, also shuffled INSTALLED_APPS  up down no luck.
I'm not considering pagination should reflect on total sum amount, I just want to include case when I'll be filtering data based on date or search fields.

What I was considering to do is to add an option to load custom templates above and below this table where you can add your own html code. Adding an option to render  with custom business logc (calculate the total value of column) is not in the plan.

Implented in #776


Plus.PeopleApi.getCurrentPerson(mgoogleapiclient) return null.

Step 1: Are you in the right place?

For issues or feature requests related to the code in this repository file a Github issue.
For general technical questions, post a question on StackOverflow tagged appropriately.

Step 2: Describe your environment

Device: _____
OS version: _____
SDK version: _____
[Android] Google Play Services version: _____

Step 3: Describe the problem:
Steps to reproduce:

Observed Results:

What happened?  This could be a description, log output, etc.

Expected Results:

What did you expect to happen?

Relevant Code:
// TODO(you): code here to reproduce the problem

Plus.PeopleApi.getCurrentPerson(mgoogleapiclient) returning null sudden. It was working fine and build was uploaded on play store. I am unable to figure out what's happening sudden.
Thanks in advance
Binay

@binaykumarrana please use the issue template, it is there to help us understand your issue.  With the template blank and only the issue title filled out I can't guess what's going wrong.
Please fill out the template and re-open this issue if you still need help.


Create setup.py

Model on https://github.com/marella/chatdocs/blob/main/setup.py

Needs to include ctransformers, pyyaml in addition to existing requirements for alpaca-roleplay-discordbot.


Question about additional text formatting

Hi,
This is a great custom card but i was wondering if it might be possible to further alter the text displayed in the card.  For example, i would very much like to change the font size of the text displayed by the entity and/or included attribute.
So far i have played around with using options from card-mod but so far i can only change the font colour.
Is it possible to alter the font type/size in some way?
Regards
Nick

Hi,
Thanks
You can indeed change the font using this card. The card parse HTML so you can use the style attribute on an element to achieve this.
There is an example here on how you'd do this: https://www.w3schools.com/html/html_styles.asp
Hope this helps.


[Linking] Static Linking still produces .dll Files

Hello,
I've installed the cpprestsdk in x64-windows-static Mode and in the Property Globals in my Project.vcxproj, I did set the triplet to x64-windows-static. When building, there are still 6 .dll's generated in my Project Folder.

I even tried explicitly deleting the "normal" x64-windows (non-static) folders from vcpkg/installed, and then building just fails. Is there something else you need todo to get static linking to work or this an issue with cpprestsdk?

Hi @Uhrwerk7,
This definitely sounds like the x64-windows triplet is getting selected for your project. If you set the MSBuild verbosity to Normal or higher [1], we'll output a message saying which vcpkg triplet was selected.
Did you make sure to follow the integration documentation[2] and put the settings inside the "Globals" PropertyGroup?
[1] https://blogs.msdn.microsoft.com/saraford/2008/10/07/did-you-know-you-can-configure-the-msbuild-verbosity-in-the-output-window-329/
[2] https://github.com/Microsoft/vcpkg/blob/master/docs/users/integration.md#with-msbuild

Hello @ras0219-msft,
Where you able to make any progress on this issue? I manually compiled the cpprestsdk now, which is working, but an automatic solution would be preferable for the future :-)

Hi @Uhrwerk7 , thanks for reporting this issue!
I think this issue has been fixed. I checked it.
Thx.


Remove --registry flag

This is no simpler then putting the registry in the image page,
we should default to the registry specified in containers/image
and not override it.  People are confused by this option, and I
see no value.
Signed-off-by: Daniel J Walsh<EMAIL_ADDRESS>

https://github.com/projectatomic/buildah/issues/108

I think we might have some other fixes to do to make this work.
@nalind Can I do a
buildah from registry.access.redhat.com/fedora/rawhide

This patch requires everyone to say docker://registry.access.redhat.com/fedora/rawhide.  I don’t mind :) but I guess interacting with docker/distribution registries by default is considered desirable?
#229 was not really about the flag being useless, rather about being unintuitively named.

No I think we should allow the configuration to state where the content will go.  We can default to docker://  But adding
--registry registry.access.redhat.com fedora/rawhide
Is not a great situation.
I would prefer we follow the skopeo model, with a default transport being stored in a config file. not needing to have it specified on the command line.

--registry is not being used like --registry registry.access.redhat.com fedora/rawhide; that’s one of the ways it is confusing. It is used to specify the containers/image transport (docker/oci-archive/oci-layout/atomic/containers-storage… , along with a possible prefix of the transport-specific location (which may be the // syntax, or perhaps a host name, or perhaps even more).
Skopeo actually always requires the transport to be specified; maybe atomic does not.
(Also see kpod; IIRC some of the commands try to use the input as transport:description, or docker://description, depending on what works. I’m not at all sure this is semantically sound / unambiguous, but if various parts of the CLI have to have ambiguous / guessing behavior, it would be nice for all of them to behave consistently.)

Ok, I think we should default to the docker:// transport all over the place, and allow users to override by specifying the transport in the image name.  Not on some random misunderstood option.

@rhatdan that would make it clear and predictable

@nalind PTAL

@TomasTomecek Adding transport information to buildah from man page.  PTAL

@TomSweeneyRedHat @nalind PTAL

@nalind Can I merge this?

@nalind PTAL

Alright, let's merge this.

@rh-atomic-bot r+ 5b596a9


Implement observer module

This pull request introduces the observer module into Natalie and makes it spec-compliant too.
I'm not really sure what our takes are on implementing gems as first-party libraries - I know we already have some basic impl of the strscan gem too, so figured this would be okay.

Cool!


python312Packages.weatherflow4py: 0.2.22 -> 0.2.23

Diff: https://github.com/jeeftor/weatherflow4py/compare/refs/tags/v0.2.22...v0.2.23
Changelog: https://github.com/jeeftor/weatherflow4py/releases/tag/v0.2.23
Description of changes

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

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

5 packages built:

home-assistant-component-tests.weatherflow_cloud
python311Packages.weatherflow4py
python311Packages.weatherflow4py.dist
python312Packages.weatherflow4py
python312Packages.weatherflow4py.dist


Error: The "path" argument must be of type string. Received type undefined

Type: Bug

open vscode on remote-ssh
open a workspace
in current workspace, open a file out of current workspace
global search anything.
The "path" argument must be of type string. Received type undefined: Error: The "path" argument must be of type string.  We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.
Happy Coding!


TIKA-1532: DIF Parser and change mime-type from text/dif+xml to application/dif+xml

Implementation of DIFParser (GCDM Directory Interchange Format) with unit test and change to mime-type as per discussion in TIKA-1532

Generally looks good
One comment though - not sure that DIFContentHandler belongs in core? My hunch is that because it's specific to the DIF parser, it should live in the parsers package under DIF, much as the ODF one does - see under tika-parsers/src/main/java/org/apache/tika/parser/odf/

@HyperDunk can you update?

Yes. I will do the required changes by EOD today.
On Apr 29, 2015 10:03, "Chris Mattmann"<EMAIL_ADDRESS>wrote:

@HyperDunk https://github.com/HyperDunk can you update?
--
Reply to this email directly or view it on GitHub
https://github.com/apache/tika/pull/46#issuecomment-97505268.

@Gagravarr & @chrismattmann : Since the DIF content is of XML type I have included DIFParser.java in tika-parsers/src/main/java/org/apache/tika/parser/xml/ and hence I should be moving DIFContentHandler.java to the same. Other option will be to move both DIFParser and DIFContentHandler to tika-parsers/src/main/java/org/apache/tika/parser/dif/ (for which I will need to create a new package).
Please suggest.

ODF, iWorks, OOXML, RDF and Atom are all xml-based (and some others too). However, all of those have their own packages, as while they're XML based, they're specific to one particular flavour of XML. So, based on that precedent, I'd say the DIF parser and handler should be in the parsers module under org.apache.tika.parser.dif

Yes. That makes sense. I will do the changes and submit.
On Apr 29, 2015 14:19, "Gagravarr"<EMAIL_ADDRESS>wrote:

ODF, iWorks, OOXML, RDF and Atom are all xml-based (and some others too).
However, all of those have their own packages, as while they're XML based,
they're specific to one particular flavour of XML. So, based on that
precedent, I'd say the DIF parser and handler should be in the parsers
module under org.apache.tika.parser.dif
--
Reply to this email directly or view it on GitHub
https://github.com/apache/tika/pull/46#issuecomment-97588265.

Changes are done, tested and committed. Please review and accept pull request.

thanks @HyperDunk !


Rename Connector file and move to certified-connectors

When submitting a connector, please make sure that you follow the requirements below, otherwise your PR might be rejected. We want to make you have a well-built connector, a smooth certification experience, and your users are happy :)
If this is your first time submitting to GitHub and you need some help, please sign up for this session.

[✔] I attest that the connector doesn't exist on the Power Platform today. I've verified by checking the pull requests in GitHub and by searching for the connector on the platform or in the documentation.
[✔] I attest that the connector works and I verified by deploying and testing all the operations.
[✔] I attest that I have added detailed descriptions for all operations and parameters in the swagger file.
[✔] I attest that I have added response schemas to my actions, unless the response schema is dynamic.
[✔] I validated the swagger file, apiDefinition.swagger.json, by running paconn validate command.
[✔] If this is a certified connector, I confirm that apiProperties.json has a valid brand color and doesn't use an invalid brand color, #007ee5 or #ffffff. If this is an independent publisher connector, I confirm that I am not submitting a connector icon.

If you are an Independent Publisher, you must also attest to the following to ensure a smooth publishing process:

[ ] I have named this PR after the pattern of "Connector Name (Independent Publisher)" ex: HubSpot Marketing (Independent Publisher)
[ ] Within this PR markdown file, I have pasted screenshots that show: 3 unique operations (actions/triggers) working within a Flow. This can be in one flow or part of multiple flows. For each one of those flows, I have pasted in screenshots of the Flow succeeding.
[ ] Within this PR markdown file, I have pasted in a screenshot from the Test operations section within the Custom Connector UI.
[ ] If the connector uses OAuth, I have provided detailed steps on how to create an app in the readme.md.

Thank you!
Quick question, in ISV, the 2 fields in the Developer Hub ask for OAuth Client ID and OAuth Client Secret. The connector i'm submitting is for Microsoft Partners and uses aad.
My question is do I input my test Client Id and Client Secret using an app registration in my test partner account or do I use a client Id and client secret from our Microsoft internal aad?
Regards,
Sam

From: vmanoharas @.>
Sent: Friday, April 12, 2024 10:56 AM
To: microsoft/PowerPlatformConnectors @.>
Cc: Sam England @.>; Mention @.>
Subject: Re: [microsoft/PowerPlatformConnectors] Rename Connector file and move to certified-connectors (PR #3371)
@vmanoharas approved this pull request.
Hello @saenglanhttps://github.com/saenglan
I hope you are doing well.
Congratulations, your pull request is approved and merged. Please submit the files to ISV Studiohttps://docs.microsoft.com/en-us/connectors/custom-connectors/submit-for-certification#submit-to-isv-studio or update your submissionhttps://learn.microsoft.com/en-us/connectors/custom-connectors/submit-for-certification#update-submission-prior-to-certification using your latest commit ID, please allow us up to 1-2 weeks to review your submission, and our Engineers will notify you in the “Activity Control” area in ISV Studio. Please make sure that the icon meets all the requirementshttps://docs.microsoft.com/en-us/connectors/custom-connectors/certification-submission#design-an-icon-for-your-connector, that it’s size is 230x230, icon background is not white or transparent and it matches the iconBrandColor property in apiProperties.json file.
After making the submission in ISV Studio, please attach an intro.md file in the activity control section. This file is required and it's different from readme.md. You can find an example of intro.md file on this pagehttps://docs.microsoft.com/en-us/connectors/custom-connectors/submit-for-certification#submit-to-isv-studio at step 6.
Please Create an environment in the Preview regionhttps://docs.microsoft.com/en-us/connectors/custom-connectors/certification-testing#create-an-environment-in-the-preview-region. You will use this environment later to test your connectorhttps://docs.microsoft.com/en-us/connectors/custom-connectors/certification-testing#test-your-connector after Microsoft is done with the functional verification for your connector.
We expect all tests to be completed within 1-2 weeks.
If your connector passes all tests, the deployment process begins, and it typically takes up to 3 to 4 weeks to deploy your connector to all of our regions.
Please let me know if you have any questions or run into any problems while creating or updating your submission.
Thank you very much for working with us.
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/PowerPlatformConnectors/pull/3371#pullrequestreview-1997494711, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BHTAV62CGSKH4X5MUHLN47TY47Y25AVCNFSM6AAAAABGCUGM6GVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMYTSOJXGQ4TINZRGE.
You are receiving this because you were mentioned.Message ID: @.***>

Hi @saenglan,
Kindly add test credentials in ISV studio during ISV submission, if needed our engineers will request you in a different channel in ISV.


Alpha Trend Indicator Added to Resolve Issue #658

The code in this link works very fine and the outputs are exactly like TradingView's AlphaTrend here. Many thanks to @arifkenan for providing great data about AlphaTrend in issue #658 .
I have good news for @arifkenan and @ekremus who are probably waiting for AlphaTrend indicator to be added to pandas-ta, I have implemented and now waiting for @twopirllc to merge.
I have used the idea of the code mentioned above, to implement AlphaTrend taking advantage of Pandas library to accelerate the speed of run and code readability. After all, I have done some benchmark to compare previous code with current one, to see if there is any significant changes, and the results were surprising.
New implementation have nearly half or fewer time taken to run, here you can see the results, for multiple runs over 10K candlesticks, showing nearly 60ms run time for new implementation vs 140ms for previous code:

I also took advantage of Scalene library to find how each of the codes perform based on python, native and system run time. Results were also interesting to pay attention to. Previous code, implemented to use nearly 70% of time inside python code:

However, new implementation used nearly 44% of time inside python code, and more time was spent on native code (C language), which means better performance overall:

I have also compared outputs of new code with previous code, they were exactly the same over nearly 10K candlesticks for k1 and k2 (which are the two line of AlphaTrend indicator output):

When will alpha trend indicator implemented to pandas_ta?

@arifkenan,

When will alpha trend indicator implemented to pandas_ta?

This pull request has two indicators to be merged, refactored, and tested which is a time consuming process. Thus any expected date or time frame is open ended for any and all bug fixes or feature requests. If the need for the indicator supersedes the unexpected inclusion time, users are encouraged to copy the existing code in the PR and manually insert it into their local source until it is finally incorporated into the library.

Hi, thank you for all your work. You people are amazing. I was wondering if you can add AlphaTrend Indicator by Kıvanç Özbilgiç?
Because we all getting amazing reviews on this new indicator and maybe you can help us.

Although this library benefits from the contributions of many generous individuals, it continues to face a shortfall in financial support and donations necessary to sustain it as a full-time commitment and cover associated development costs. As a result, I am only able to allocate a portion of my already limited free time to its maintenance and improvement. 😑
If you and your coworkers are not able to contribute code to enhance and maintain this library maybe you can help us. We would like to kindly request your consideration for providing financial assistance through sponsorship or at the very least a donation. Your support in this manner would greatly contribute to the continued growth and sustainability of the library. 😎
Kind Regards,
KJ

still we can't use this indicator?

@arifkenan,

still we can't use this indicator?

I have already explained this in the prior comment.
Lastly, as an Open Source Library, you are not constrained from using the PR code supplied here and merging it into your code until it has been this has been merged into the development branch.
Your patience and understanding is appreciated! 😎
Kind Regards,
KJ

@aligheshlaghi97, @arifkenan, @ekremus
Alphatrend is now up on the development branch. If you can @aligheshlaghi97, I would be interested in the performance difference between the development version and the the code you submitted above with Scalene. 🤔
$ pip install -U git+https://github.com/twopirllc/pandas-ta.git@development

Zigzag on the other hand will not be included, as I need to find time to reverse engineer and refactor it.
Kind Regards,
KJ

Hi @twopirllc , Thanks for the efforts you put into this library and refactoring my codes. I am actually love to tackle into these problems, and as I checked your code, the time consumed in native C code, has increased to 79.5% (on my PC HP-EliteBook-830-G7-Notebook), which is great enhancement in comparison with my code. You can see the result below:

But the main point is on the total time of run, which is nearly 4 times more than the time to run my code (6 ms vs 28 ms). You can see it below:

If I could do anything else to help, please don't hesitate to let me know.

@aligheshlaghi97,

Thanks for the efforts you put into this library and refactoring my codes.

Thanks! Hope it helps.
I do want to point out from prior indicator speed improvements, that nested functions are more costly to execute because the nested code has to be recompiled each time it is called. That's why I moved the inner functions out. Eventually all remaining indicators with nested functions will be refactored.

But the main point is on the total time of run, which is nearly 4 times more than the time to run my code (6 ms vs 28 ms).

Interesting. 🤔
I assume with your test, you have numba installed and ran it at least once before running the Scalene test?
Per their docs:

First, recall that Numba has to compile your function for the argument types given before it executes the machine code version of your function, this takes time. However, once the compilation has taken place Numba caches the machine code version of your function for the particular types of arguments presented. If it is called again the with same types, it can reuse the cached version instead of having to compile again.

A really common mistake when measuring performance is to not account for the above behaviour and to time code once with a simple timer that includes the time taken to compile your function in the execution time.

KJ

@twopirllc,
Thanks for your reply and the points you mentioned.

I assume with your test, you have numba installed and ran it at least once before running the Scalene test?

No I was making a mistake while testing development branch implementation. But I've done this now and tested again, the results show that 71 percent of time spent in native code for your implementation, as you can see below:

But the main improvement is the time of run, which is literally 10 times better as you can see below:

The running time for your code is 27 ms vs 60 ms for my code. (In previous reply I made a mistake about the time, as I forgot 0 from end of each number):

But the main point is on the total time of run, which is nearly 4 times more than the time to run my code (6 ms vs 28 ms).

It was actually 60 ms vs 280 ms but after running some numba code before running your implementation, things totally changed and the time to run your code has decreased from 280 ms to only 27 ms.
Now it seems that the code on development branch is nearly 2 times faster than my implementation. But my question is that how this trick of running numba code before running the main code, has that much of improvement?

@aligheshlaghi97

Now it seems that the code on development branch is nearly 2 times faster than my implementation.

Thanks for double checking for me with Scalene. 😎 Looks like a useful tool. It's good to see the overall speed improvements the library has gotten with numpy/numba being rolled in bit by bit.

But my question is that how this trick of running numba code before running the main code, has that much of improvement?

I am not a numba expert, but this A ~5 min guide to Numba is good.

How to compile the numba before main?
I think it depends on your environment. For instance in a Jupyter Notebook, you would create a cell to run the All Study on a small test DataFrame. With a enough bars to trigger all the numba indicators. Now if your running in an app in the cloud or a remote server, that's a different situation. Again you would have to compile numba with some small test DataFrame and then you could update an environment variable or create a tmp file and check it's existance or fire off some event message or ... . 🤷🏼♂

Luckily numba has a possible solution with Compiling code ahead of time. I haven't had the time to check and test it out, but hopefully this solves that issue. 🤷🏼♂

@twopirllc
Thanks for your message and sharing those links with me. I will study more about numba and hopefully have more effective commits afterwards. Also if I could help with Scalene or profiling tools or methods, do not hesitate to let me know.
Best Regards,
Ali Gheshlaghi