Email as a common name.

Problem Statement
Hello.
I'm trying to set up a plugin with Google OIDC, and I have a small question. Can I use the email from the data obtained from OIDC to fill in the common name field?
Let me try to explain in more detail. I am using a configuration without client certificates and passwords (a sample client config is below). All authentication is performed only through openvpn-auth-oauth2. This is quite convenient, one configuration file for all clients.
remote vpn.example.com 8001
remote-cert-tls server
client
dev tun
proto tcp
key-direction 1
cipher AES-256-CBC
nobind
persist-key
verb 3
keepalive 10 60

<ca>
.....
</ca>
<tls-auth>
.....
</tls-auth>

But in this case, there is a small problem, since we do not specify a username anywhere, which can later be used as CN, so if you look at the statistics, it is not clear which user is which client (Common Name = UNDEF)
root@localhost:~# cat  /var/run/openvpn-server/status-tcp8001.log
OpenVPN CLIENT LIST
Updated,2023-12-27 08:10:21
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
UNDEF,<IP_ADDRESS>:48881,1784,3808,2023-12-27 08:10:02
UNDEF,<IP_ADDRESS>:58579,1558,3660,2023-12-27 08:10:16
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
<IP_ADDRESS>,UNDEF,<IP_ADDRESS>:58579,2023-12-27 08:10:19
<IP_ADDRESS>,UNDEF,<IP_ADDRESS>:48881,2023-12-27 08:10:20
GLOBAL STATS
Max bcast/mcast queue length,2
END
root@localhost:~#

Can you advise how to configure the plugin so that it passes the CN value to OpenVPN through the management interface, or is such functionality not available at the moment?
Proposed Solution
No response
Additional information
No response
Acceptance Criteria
No response

Hi @evgenii-mazhora

or is such functionality not available at the moment?

The OpenVPN server does not have the capability to override any client field.
I already request the feature month ago: https://github.com/OpenVPN/openvpn/issues/299
You can also leave some feedback there, including your use-case. If more people proving use-cases, there is a chance that the feature is included in the next minor version.

It looks as OVPN can use user name instead of common name. But how can we map it? Here is what I see in the logs when I run our test:
Feb 26 21:20:46 stg5testovpnw01 openvpn-auth-oauth2[3663]: time=2024-02-26T21:20:46.396-08:00 level=INFO msg="accept OpenVPN client cid 56, kid 1" cid=56 kid=1 common_name=EIS-CLIENT idtoken.subject=aroudnev idtoken.email="" idtoken.preferred_username="" user.subject=aroudnev user.preferred_username=""
Feb 26 21:20:46 stg5testovpnw01 ovpn-server[3670]: MANAGEMENT: CMD 'client-auth 56 1'
Feb 26 21:20:46 stg5testovpnw01 ovpn-server[3670]: <IP_ADDRESS>:49852 PUSH: Received control message: 'PUSH_REQUEST'
Feb 26 21:20:46 stg5testovpnw01 openvpn-auth-oauth2[3663]: time=2024-02-26T21:20:46.743-08:00 level=INFO msg="client established" cid=56 common_name="" reason=ESTABLISHED
Feb 26 21:20:46 stg5testovpnw01 ovpn-server[3670]: <IP_ADDRESS>:49852 MULTI_sva: pool returned IPv4=<IP_ADDRESS>, IPv6=(Not enabled)
Feb 26 21:20:46 stg5testovpnw01 ovpn-server[3670]: <IP_ADDRESS>:49852 MULTI: Learn: <IP_ADDRESS> -> <IP_ADDRESS>:49852
Feb 26 21:20:46 stg5testovpnw01 ovpn-server[3670]: <IP_ADDRESS>:49852 MULTI: primary virtual IP for <IP_ADDRESS>:49852: <IP_ADDRESS>
Feb 26 21:20:46 stg5testovpnw01 ovpn-server[3670]: <IP_ADDRESS>:49852 SENT CONTROL []: 'PUSH_REPLY,dhcp-option DNS <IP_ADDRESS>,dhcp-option DNS <IP_ADDRESS>,dhcp-option DNS <IP_ADDRESS>,redirect-gateway def1 bypass-dhcp,route <IP_ADDRESS> <IP_ADDRESS>,route <IP_ADDRESS> <IP_ADDRESS>,route <IP_ADDRESS> <IP_ADDRESS>,reneg-sec 0,route-gateway <IP_ADDRESS>,topology subnet,ping 10,ping-restart 120,auth-token-user YXJvdWRuZXY=,ifconfig <IP_ADDRESS> <IP_ADDRESS>,peer-id 0,auth-tokenSESS_ID,cipher AES-128-GCM,protocol-flags cc-exit tls-ekm dyn-tls-crypt,tun-mtu 1500' (status=1)
Feb 26 21:20:47 stg5testovpnw01 ovpn-server[3670]: <IP_ADDRESS>:49852 Data Channel: cipher 'AES-128-GCM', peer-id: 0
And, earlier, when I did not add an option for the username, OVPN reported client by CN . Co it looks as all we need to do is to map common name:
Feb 26 18:58:48 stg5testovpnw01 ovpn-server[3590]: EIS-CLIENT/<IP_ADDRESS>:47528 SENT CONTROL [EIS-CLIENT]: 'PUSH_REPLY,dhcp-option DNS <IP_ADDRESS>,dhcp-option DNS <IP_ADDRESS>,dhcp-option DNS <IP_ADDRESS>,redirect-gateway def1 bypass-dhcp,route <IP_ADDRESS> <IP_ADDRESS>,route <IP_ADDRESS> <IP_ADDRESS>,route <IP_ADDRESS> <IP_ADDRESS>,reneg-sec 0,route-gateway <IP_ADDRESS>,topology subnet,ping 10,ping-restart 120,auth-token-user YWxleGVpcg==,ifconfig <IP_ADDRESS> <IP_ADDRESS>,peer-id 1,auth-tokenSESS_ID,cipher AES-128-GCM,key-derivation tls-ekm' (status=1)
(EIS-CLIENT is CN from the certificate)

One more problem we discover once we run POC is that I can not see, how persistent session is configured and, more important, how can we reset session tokens on disconnect. IT is known problem (that logouts are way more difficult vs logins, in any SSO) but it persist somehow. It can be great if I can configure kind of idle lifetime or a way to say if user disconnects then system should invalidate SSO session. Maybe I can configure it on IdP side, I just used existing OIDC configuration and I have a huge number of options with both PingFederate and PingOne (and we can use any), so I hope to find a solution. One method can be to customize login (access granted) web page, adding SSO logout into it, other can be better understanding of persistent configuration options. We just started (I made test system running few hours ago) and it all looks very promising.

how can we reset session tokens on disconnect

By default, session tokens will not used across disconnects, unless oauth2.refresh.use-session-id=true is configured.
If supported by SSO, openvpn-auth-oauth2 will sent the SSO refresh_token to the revoke endpoint of the SSO provider to make the token invalid.
You can configure idle time with

oauth2.refresh.expires The timer will be reset on each REAUTH.

Good idea, I will test it.
On Tue, Feb 27, 2024 at 1:29 AM Jan-Otto Kröpke @.***>
wrote:

how can we reset session tokens on disconnect
By default, session tokens will not used across disconnects, unless
oauth2.refresh.use-session-id=true is configured.
If supported by SSO, openvpn-auth-oauth2 will sent the SSO refresh_token
to the revoke endpoint of the SSO provider to make the token invalid.
You can configure idle time with

oauth2.refresh.expires The timer will be reset on each REAUTH.

—
Reply to this email directly, view it on GitHub
https://github.com/jkroepke/openvpn-auth-oauth2/issues/100#issuecomment-1966129330,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFQ2RZMPHR4OM4EKTCAJJX3YVWROTAVCNFSM6AAAAABBECOE2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRWGEZDSMZTGA
.
You are receiving this because you commented.Message ID:
@.***>

Actually, does openvpn send IP and other information back to the plugin? If
it sends it, plugin can log IP with other information itself (we need -
user name, client-s IP, assigned IP if any was assigned, start and end of
the session with this IP).
The reason is simple. Let's say I (as NOC) receive a complaint from - say
our provider - dear XXX, we receive a complaint from YYY media company that
a copyrighted file was downloaded (exact time, IP , port, protocol, time of
session). Please investigate. (+ usual legal bullshit).
Our policy requires us to log all VPN sessions in a central place, and it
includes user,IP, external IP, connect/disconnect times and number of bytes.
So we first check on firewall logs who was NATed to this IP and port in
time of violation. We keep all firewall logs including NAT events so it is
easy. Then we check who was under this IP in time of violation, using VPN
logs (actually we integrate all logs but the idea is the same). And, then,
we know the exact person who did it (Yes, it is simplification, as a common
VPN user can not download Disney movies - many protections and FW rules
will prevent it - but the idea is the same for other events, up to 'post
files by mistake to the wrong repo'.
And this is why it is absolutely critical to have such logs in a single
record. Of course we can see logs all together and can guess that 'this
auth log matches this vpn log, just by time' but it can not eliminate race
conditions etc. And this is why I added this requirement to company-s
policy many years ago, and never regret doing it.
On Tue, Feb 27, 2024 at 9:31 AM Alexei Roudnev @.***> wrote:

Good idea, I will test it.
On Tue, Feb 27, 2024 at 1:29 AM Jan-Otto Kröpke @.***>
wrote:

how can we reset session tokens on disconnect
By default, session tokens will not used across disconnects, unless
oauth2.refresh.use-session-id=true is configured.
If supported by SSO, openvpn-auth-oauth2 will sent the SSO refresh_token
to the revoke endpoint of the SSO provider to make the token invalid.
You can configure idle time with

oauth2.refresh.expires The timer will be reset on each REAUTH.

—
Reply to this email directly, view it on GitHub
https://github.com/jkroepke/openvpn-auth-oauth2/issues/100#issuecomment-1966129330,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFQ2RZMPHR4OM4EKTCAJJX3YVWROTAVCNFSM6AAAAABBECOE2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRWGEZDSMZTGA
.
You are receiving this because you commented.Message ID:
@.***>

Yup, I will add the client IP to the logs.
https://github.com/jkroepke/openvpn-auth-oauth2/pull/199
Any future information then can be lookup by client IP from OpenVPN itself.

Yes, please.  It's maybe is an easiest thing to do and can be enough to
cross link logs.
If you can see IP assigned to the client, add it too (but I have doubts
about it as IP assignment is after authentication). As I said, ideally
(which I never saw) we need log of
Client-s IP, Client-s name, Operation (connected; assigned IP IP,
reconnected, disconnected). Any IP (even client-s IP) will work (with a
very rare exceptions) as it allows to link together OVPN logs and plugin
logs. OVPN log client-s IP in all (almost) messages so it is good cross
reference for ovpn/oauth logs.
On Tue, Feb 27, 2024 at 1:11 PM Jan-Otto Kröpke @.***>
wrote:

Yup, I will add the client IP to the logs.
#199 https://github.com/jkroepke/openvpn-auth-oauth2/pull/199
Any future information then can be lookup by client IP from OpenVPN itself.
—
Reply to this email directly, view it on GitHub
https://github.com/jkroepke/openvpn-auth-oauth2/issues/100#issuecomment-1967596525,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFQ2RZN4I6Q3RNRNDQFRWYLYVZDZVAVCNFSM6AAAAABBECOE2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRXGU4TMNJSGU
.
You are receiving this because you commented.Message ID:
@.***>

Ok.
All your advices regarding refresh token works well.
I got login page template from your code (actually it can be much better if
you have it as separate file as an example) and adjusted to our
requirements (so we show a way to end session now).
I can post information about working configuration to PingID community, if
you want.
On Tue, Feb 27, 2024 at 1:11 PM Jan-Otto Kröpke @.***>
wrote:

Yup, I will add the client IP to the logs.
#199 https://github.com/jkroepke/openvpn-auth-oauth2/pull/199
Any future information then can be lookup by client IP from OpenVPN itself.
—
Reply to this email directly, view it on GitHub
https://github.com/jkroepke/openvpn-auth-oauth2/issues/100#issuecomment-1967596525,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFQ2RZN4I6Q3RNRNDQFRWYLYVZDZVAVCNFSM6AAAAABBECOE2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRXGU4TMNJSGU
.
You are receiving this because you commented.Message ID:
@.***>

I can post information about working configuration to PingID community, if
you want.

Yes, please.
It would be also awesome, if you could provide a Guide, what needs to be configured at PingID. Like we have it for other providers:
https://github.com/jkroepke/openvpn-auth-oauth2/wiki/Providers

I will see if I can do  it. PingID is definitely well compatible with your
system, BUT Ping has many possible configurations - you can use PingOne or
PingFederate as IdP, and PingOne can be PingOne or PingOneForEnterprise.
I am going to create internal document HOW TO SET IT UP and I will
provide some extracts from it and obfuscated configurations for your
documentation, too.
PS. It is maybe #3 POC (PROOF OF CONCEPT) of related things. Most worked as
yes, it can be configured, and it works, but looks not stable or looks as
it will break on next update. This combination (Ubuntu Linux, OpenVPN ,
your plugin, and PingFederate as IdP), works extremely stable and we plan
to add it into the production as addition to existing VPN systems, which
uses RADIUS and so have serious limitations, for example when we run RADIUS
and MFA, you can not use SMS or EMAIL or FIDO devices as a second factor.
WebAuth allows it all.
On Tue, Feb 27, 2024 at 11:23 PM Jan-Otto Kröpke @.***>
wrote:

I can post information about working configuration to PingID community, if
you want.
Yes, please.
It would be also awesome, if you could provide a Guide, what needs to be
configured at PingID. Like we have it for other providers:
https://github.com/jkroepke/openvpn-auth-oauth2/wiki/Providers
—
Reply to this email directly, view it on GitHub
https://github.com/jkroepke/openvpn-auth-oauth2/issues/100#issuecomment-1968378122,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFQ2RZIPRG6QML3GY7PH5BLYV3LOZAVCNFSM6AAAAABBECOE2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRYGM3TQMJSGI
.
You are receiving this because you commented.Message ID:
@.***>

Thanks a lot!
Yeah, the legacy stuff (RADIUS, OAM, LDAP) doesnt work with modern authentication system and that was the root cause for openvpn-auth-oauth2.

PingID and openvpn-auth-oauth2 - document is here
https://docs.google.com/document/d/10na-NYZ-EamlufxO6sBuWbu9WQkSmj5Y/edit?usp=sharing&ouid=104011126278844356239&rtpof=true&sd=true
It is a public version of our document, I clean it from all possible
company related things (and it is released for the open source, as we have
few of our own projects on github, like open source VTI router). You can
copy it, convert to wiki, simplify, etc, as you wish. Just let me know if
it is useful and how you manage to use it. If you prefer to keep it as it
is now, it's ok too (It is accessible by the link).
Issues I had with documentation during POC / installation

it was not clean that redirect uri is /oauth2/callback (and I was lucky
that I used test setup  and it already had it with wildcard domain)
it was not obvious, how to find list of options (yaml file is not full,
and list of command options is not in clear view)
template for the message page - option do exists, but template example do
not (I extracted it from binary code using 'strings' command :) )
when using web browser (when auth is provided by external browser), it is
important to understand that if I run few chrome profiles, then it opens
auth window in the currently used browser instance. It may cause big
confusion - I had one profile when I started VPN, then I change to another
one, and when VPN client try to re-negotiate it opens new session in new
chrome browser instance, not knowing about old old, and can not reconnect
at all. It's not a problem but only if you expect it.

On Wed, Feb 28, 2024 at 10:40 AM Jan-Otto Kröpke @.***>
wrote:

Thanks a lot!
Yeah, the legacy stuff (RADIUS, OAM, LDAP) doesnt work with modern
authentication system and that was the root cause for openvpn-auth-oauth2.
—
Reply to this email directly, view it on GitHub
https://github.com/jkroepke/openvpn-auth-oauth2/issues/100#issuecomment-1969607313,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFQ2RZO43DDUL6DLESVOPTTYV52YZAVCNFSM6AAAAABBECOE2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRZGYYDOMZRGM
.
You are receiving this because you commented.Message ID:
@.***>

it was not obvious, how to find list of options (yaml file is not full,
and list of command options is not in clear view)

Could you please do an example, what is missing?

template for the message page - option do exists, but template example do
not (I extracted it from binary code using 'strings' command :) )

You mean this one? https://github.com/jkroepke/openvpn-auth-oauth2/blob/main/internal/ui/index.gohtml

Yes, this one. Maybe, it make sense to have it as a file or have it in
documentation (and yes, I could take it from github, not a problem). I had
big question how can user end session (as just disconnect do not end it,
and I am not sure how to configure LOGOUT options in PF which is way too
complicated for an easy experiments) I just added logout and dock links
into this web page.

Not much, but I do not see for example

/usr/bin/openvpn-auth-oauth2 --help | grep common-name-case-sensitive
--oauth2.validate.common-name-case-sensitive
BUT
grep common-name-case-sensitive /etc/openvpn-auth-oauth2/*yaml

Same for socket-mode.
Few more maybe.  So I got impression that yaml file is not exactly up to
date, PLUS it do not contain default values. Usually (see sshd config for
example) config file has default values, AND separate example may have
something else.
On Wed, Feb 28, 2024 at 3:24 PM Jan-Otto Kröpke @.***>
wrote:

it was not obvious, how to find list of options (yaml file is not
full,
and list of command options is not in clear view)

Could you please do an example, what is missing?

template for the message page - option do exists, but template
example do
not (I extracted it from binary code using 'strings' command :) )

You mean this one?
https://github.com/jkroepke/openvpn-auth-oauth2/blob/main/internal/ui/index.gohtml
—
Reply to this email directly, view it on GitHub
https://github.com/jkroepke/openvpn-auth-oauth2/issues/100#issuecomment-1970084404,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFQ2RZPAWQY4BNTZGGBQWU3YVZTJNAVCNFSM6AAAAABBECOE2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNZQGA4DINBQGQ
.
You are receiving this because you commented.Message ID:
@.***>

SO far, I created our multi service system (3 services on one Linux -
stable fast full) with embedded web proxy and automated scripts.
Works very well. SO the last thing I expect to be fixed is client-s IP in
AUTH logs and/or user id in openvpn logs . It's not a show stopper but is
important.
I will see if maybe I can port scripts etc as our open source project.
On Wed, Feb 28, 2024 at 4:44 PM Alexei Roudnev @.***> wrote:

Yes, this one. Maybe, it make sense to have it as a file or have it in
documentation (and yes, I could take it from github, not a problem). I had
big question how can user end session (as just disconnect do not end it,
and I am not sure how to configure LOGOUT options in PF which is way too
complicated for an easy experiments) I just added logout and dock links
into this web page.

Not much, but I do not see for example

/usr/bin/openvpn-auth-oauth2 --help | grep common-name-case-sensitive
--oauth2.validate.common-name-case-sensitive
BUT
grep common-name-case-sensitive /etc/openvpn-auth-oauth2/*yaml

Same for socket-mode.
Few more maybe.  So I got impression that yaml file is not exactly up to
date, PLUS it do not contain default values. Usually (see sshd config for
example) config file has default values, AND separate example may have
something else.
On Wed, Feb 28, 2024 at 3:24 PM Jan-Otto Kröpke @.***>
wrote:

it was not obvious, how to find list of options (yaml file is not
full,
and list of command options is not in clear view)

Could you please do an example, what is missing?

template for the message page - option do exists, but template
example do
not (I extracted it from binary code using 'strings' command :) )

You mean this one?
https://github.com/jkroepke/openvpn-auth-oauth2/blob/main/internal/ui/index.gohtml
—
Reply to this email directly, view it on GitHub
https://github.com/jkroepke/openvpn-auth-oauth2/issues/100#issuecomment-1970084404,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFQ2RZPAWQY4BNTZGGBQWU3YVZTJNAVCNFSM6AAAAABBECOE2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNZQGA4DINBQGQ
.
You are receiving this because you commented.Message ID:
@.***>

Works very well. SO the last thing I expect to be fixed is client-s IP in AUTH logs and/or user id in openvpn logs . It's not a show stopper but is important.

Just upgrade to lastest version. the client ip is part of the openvpn-auth-oauth2 logs

Confirming it. So we can link user's name and user's IP
For example
Mar  6 09:10:33 ***eisovpn03 openvpn-auth-oauth2[270174]:
time=2024-03-06T09:10:33.220-08:00 level=INFO msg="accept OpenVPN client
cid 2, kid 1" ip=<IP_ADDRESS>:63003 http://<IP_ADDRESS>:63003 cid=2 kid=1
session_id=BLpbY6NdQa6ZSAB4 common_name=eqxeisovpn03 idtoken.subject=
aroudnev ...
Mar  6 09:10:38 ***eisovpn03 openvpn[270168]: eqxeisovpn03/<IP_ADDRESS>:63003
http://<IP_ADDRESS>:63003 MULTI_sva: pool returned IPv4=<IP_ADDRESS>,
IPv6=(Not enabled)
TASK is done. IP/PORT define exact session on both sides. I can create a
filter which will post all connect/disconnects, with user IP and user name,
easily , with this.
On Wed, Mar 6, 2024 at 12:42 AM Jan-Otto Kröpke @.***>
wrote:

Works very well. SO the last thing I expect to be fixed is client-s IP
in AUTH logs and/or user id in openvpn logs . It's not a show stopper
but is important.
Just upgrade to lastest version. the client ip is part of the
openvpn-auth-oauth2 logs
—
Reply to this email directly, view it on GitHub
https://github.com/jkroepke/openvpn-auth-oauth2/issues/100#issuecomment-1980353350,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFQ2RZNCQXL5W67P5XFGJGDYW3JJDAVCNFSM6AAAAABBECOE2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOBQGM2TGMZVGA
.
You are receiving this because you commented.Message ID:
@.***>

I have a quick question - we must configure this parameter in the plugin
CONFIG_OAUTH2_ISSUER="https://test-sso.company.com"
(this is an example)
But if we read 'well known' json page (which is sp[ecified in , this page
PROVIDES this parameter. For example:
CONFIG_OAUTH2_ENDPOINT_DISCOVERY="
https://test-sso.company.com/.well-known/openid-configuration"
And this url contains issuer
"issuer": "https://test-sso.company.com",
(for example)
So it is not necessary, and if we check apache module or other
configuration, this parameter is not mandatory (as it usually comes
from a 'well-known' page).
Can it become optional (so it can be used if not provided by a
'well-known' page)?

The opposite the mandatory.
You have to define CONFIG_OAUTH2_ISSUER="https://test-sso.company.com" only. The underlying library will call [issuer]/.well-known/openid-configuration. That the standard OIDC discovery mechanism. Omit CONFIG_OAUTH2_ISSUER is not possible.
CONFIG_OAUTH2_ENDPOINT_DISCOVERY is only mandatory, if you have a crappy OIDC implementation,

Actually most OIDC implementations use *DISCOVERY url and do not request
ISSUER at all.
This is because (according to some forums, I did not check OIDC specs):
The issuer value itself does not need to resolve to any resource or
anything online. Only if you want to conform to the Discovery spec
then /.well-known/openid-configuration should resolve to the
Discovery metadata document that describes the Provider.
So, while, if issuers is configured and discovery is not, you may expect
discovery as  */.well-known/openid-configuration *, it is not
guaranteed. What is guaranteed is that discovery page provides real issuer
value. I can see a few examples when discovery page is not formed this way
For example here issuer can not be used as base URL:
https://help.akana.com/content/current/cm/api_oauth/oauth_discovery/m_oauth_getOpenIdConnectWellknownConfiguration.htm
De facto ONE OF - DISCOVERY or ISSUER - is mandatory, and ISSUER can be
used alone ONLY if ISSUER is resolved into URL used for DISCOVERY page
(which, btw, is not always true).
PS. But I checked few our OIDC IDP and I agree, they all satisfy to this
requirement ( */.well-known/openid-configuration ). *For example
both PingFederate and PingOneforEnterprise satisfy it (last one use issuers
like this one -
CONFIG_OAUTH2_ENDPOINT_DISCOVERY="
https://sso.connect.pingidentity.com/xxxxe07e-7fe8-4dc8-b8b4-c70f023ddc7b/.well-known/openid-configuration
"
CONFIG_OAUTH2_ISSUER="
https://sso.connect.pingidentity.com/xxxxe07e-7fe8-4dc8-b8b4-c70f023ddc7b"
)
So you are correct in MOST (but not all) cases. And if a DISCOVERY page is
provided, the issuer must be taken from it.
As an example, see apache OIDC module (it was written by PING developers
and is extremely solid)
########################################################################################

OpenID Connect Provider

For configuration of a single static provider, not using OpenID Connect
Provider Discovery.

########################################################################################
URL where OpenID Connect Provider metadata can be found (e.g.
https://accounts.google.com/.well-known/openid-configuration)
The obtained metadata will be cached and refreshed every 24 hours.
If set, individual entries below will not have to be configured but can
be used to add
extra entries/endpoints to settings obtained from the metadata.
If OIDCProviderMetadataURL is not set, the entries below it will have to
be configured for a single
static OP configuration or OIDCMetadataDir will have to be set for
configuration of multiple OPs.
#OIDCProviderMetadataURL
OpenID Connect Provider issuer identifier (e.g. https://localhost:9031 or
https://accounts.google.com)
Used when OIDCProviderMetadataURL is not defined or the metadata obtained
from that URL does not set it.
#OIDCProviderIssuer

Actually most OIDC implementations use *DISCOVERY url and do not request ISSUER at all.

Any major cloud like AWS; GCP; Azure requested an issuer. Kubernetes, the de-factor orchestrator for container workload is requested an issuer as well. Here are other examples as well:

https://doc.traefik.io/traefik-enterprise/middlewares/oidc/
https://dexidp.io/docs/connectors/oidc/

The OIDC discovery spec is very clear here:

The issuer value returned MUST be identical to the Issuer URL that was used as the prefix to /.well-known/openid-configuration to retrieve the configuration information.

It's important that a issuer is given first, because the client has to validate, if the same issue value is return back as given before.
In short: The discovery URL should be built from the Issuer, anything else is against the spec.
Nevertheless, any OIDC/OAUTH2 implementation is handled by https://github.com/zitadel/oidc/. The library is strict in terms of spec. As library consumer, I'm unable to change the behavior of library here.

It looks strange, but we configured dozens of clients, and all REQUIRED
metadata URL and not an issuer. It looks as specs added 'issuer to
metadata' rule later so older implementations did not use it.
In any case, it is not a problem, but I would state in documentation that
discovery is created from the issuer if not specified explicitly (if it is
not saying it already).
And thanks for this information, it was something new to learn.

Advanced template for APPROVED / DENIED page attached.
(company name and SLO URL must be adjusted)
We released system to BETA testing in production usage (it looks very
stable, and it's combination with Ping One Dock and all proxies on the same
host allows to create systems in a mouse click). We run few services per
OpenVPN server, generate profiles and publish them, proxy plugin, all on
the same URL (profiles are SSO protected).
The only drawbacks we found was OpenVPN connect 3.4 do not like to
reconnect automatically, if it requests key's recreation (but it is
documented), and no reasonable client exists for Linux. The rest works
really great. I posted decorated template which allows to add disclaimer to
the success page and looks more professional (and have css inline, as
original template used external css which did not allow to make changes).
In addition, as clients do not allow to end session (they allow to
disconnect but SSO session will exists and you will connect automatically
on next click), we added SLO Logout link to this page, just in case.
On Fri, Mar 8, 2024 at 2:15 PM Alexei Roudnev @.***> wrote:

It looks strange, but we configured dozens of clients, and all REQUIRED
metadata URL and not an issuer. It looks as specs added 'issuer to
metadata' rule later so older implementations did not use it.
In any case, it is not a problem, but I would state in documentation that
discovery is created from the issuer if not specified explicitly (if it is
not saying it already).
And thanks for this information, it was something new to learn.


Add collateral, link to it from Open Source

Purpose

Describe the problems, issues, or needs driving this feature/fix and include links to related issues in the following format: Resolves issue1, issue2, etc.

Goals

Describe the solutions that this feature/fix will introduce to resolve the problems described above

Approach

Describe how you are implementing the solutions. Include an animated GIF or screenshot if the change affects the UI (email<EMAIL_ADDRESS>to review all UI text). Include a link to a Markdown file or Google doc if the feature write-up is too long to paste here.

User stories

Summary of user stories addressed by this change>

Release note

Brief description of the new feature or bug fix as it will appear in the release notes

Documentation

Link(s) to product documentation that addresses the changes of this PR. If no doc impact, enter “N/A” plus brief explanation of why there’s no doc impact

Training

Link to the PR for changes to the training content in https://github.com/wso2/WSO2-Training, if applicable

Certification

Type “Sent” when you have provided new/updated certification questions, plus four answers for each question (correct answer highlighted in bold), based on this change. Certification questions/answers should be sent to<EMAIL_ADDRESS>and NOT pasted in this PR. If there is no impact on certification exams, type “N/A” and explain why.

Marketing

Link to drafts of marketing content that will describe and promote this feature, including product page changes, technical articles, blog posts, videos, etc., if applicable

Automation tests

Unit tests

Code coverage information

Integration tests

Details about the test cases and coverage

Security checks

Followed secure coding standards in http://wso2.com/technical-reports/wso2-secure-engineering-guidelines? yes/no
Ran FindSecurityBugs plugin and verified report? yes/no
Confirmed that this PR doesn't commit any keys, passwords, tokens, usernames, or other secrets? yes/no

Samples

Provide high-level details about the samples related to this feature

Related PRs

List any other related PRs

Migrations (if applicable)

Describe migration steps and platforms on which migration has been tested

Test environment

List all JDK versions, operating systems, databases, and browser/versions on which this feature/fix was tested

Learning

Describe the research phase and any blog posts, patterns, libraries, or add-ons you used to solve the problem.

I will remove the hidden slides and spring.
I think we should keep the editable pptx format so meetup presenters can re-use it (add their name, add other info that they feel is relevant).

But you can do that with a publicly shared gdoc - the same way that Go has
done with their brand presentation format. People just copy and go.
On Fri, Apr 27, 2018 at 11:31 AM, DSotnikov<EMAIL_ADDRESS>wrote:

I will remove the hidden slides and spring.
I think we should keep the editable pptx format so meetup presenters can
re-use it (add their name, add other info that they feel is relevant).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ballerina-platform/ballerina-www/pull/645#issuecomment-385056279,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAX9Cp2iz_q9sKiefj1livj1ebfOSUuFks5ts2PmgaJpZM4TpKY6
.

--
Tyler Jewell -- ceo -- wso2 -- +1<PHONE_NUMBER>

A publicly shared gdoc would work too (we can probably even be super-nice
to the community and offer both formats.) Do we have a shared Ballerina
gdrive that we can use for this? Using someone's personal gdrive for a
shared project is probably not a good idea - although I am obviously happy
to use mine if that is the only way for now.
On Fri, Apr 27, 2018 at 12:00 PM, Tyler Jewell<EMAIL_ADDRESS>wrote:

But you can do that with a publicly shared gdoc - the same way that Go has
done with their brand presentation format. People just copy and go.
On Fri, Apr 27, 2018 at 11:31 AM, DSotnikov<EMAIL_ADDRESS>wrote:

I will remove the hidden slides and spring.
I think we should keep the editable pptx format so meetup presenters can
re-use it (add their name, add other info that they feel is relevant).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<https://github.com/ballerina-platform/ballerina-www/pull/
645#issuecomment-385056279>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAX9Cp2iz_
q9sKiefj1livj1ebfOSUuFks5ts2PmgaJpZM4TpKY6>
.

--
Tyler Jewell -- ceo -- wso2 -- +1<PHONE_NUMBER>
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ballerina-platform/ballerina-www/pull/645#issuecomment-385064318,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGokS9aKGxUQ9x3IkSOmMk-MDNBga0_mks5ts2rpgaJpZM4TpKY6
.

It needs to be someone's personal drive for now.
On Fri, Apr 27, 2018 at 1:28 PM, DSotnikov<EMAIL_ADDRESS>wrote:

A publicly shared gdoc would work too (we can probably even be super-nice
to the community and offer both formats.) Do we have a shared Ballerina
gdrive that we can use for this? Using someone's personal gdrive for a
shared project is probably not a good idea - although I am obviously happy
to use mine if that is the only way for now.
On Fri, Apr 27, 2018 at 12:00 PM, Tyler Jewell<EMAIL_ADDRESS>wrote:

But you can do that with a publicly shared gdoc - the same way that Go
has
done with their brand presentation format. People just copy and go.
On Fri, Apr 27, 2018 at 11:31 AM, DSotnikov<EMAIL_ADDRESS>wrote:

I will remove the hidden slides and spring.
I think we should keep the editable pptx format so meetup presenters
can
re-use it (add their name, add other info that they feel is relevant).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<https://github.com/ballerina-platform/ballerina-www/pull/
645#issuecomment-385056279>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAX9Cp2iz_
q9sKiefj1livj1ebfOSUuFks5ts2PmgaJpZM4TpKY6>
.

--
Tyler Jewell -- ceo -- wso2 -- +1<PHONE_NUMBER>
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<https://github.com/ballerina-platform/ballerina-www/pull/
645#issuecomment-385064318>,
or mute the thread
<https://github.com/notifications/unsubscribe-
auth/AGokS9aKGxUQ9x3IkSOmMk-MDNBga0_mks5ts2rpgaJpZM4TpKY6>

.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ballerina-platform/ballerina-www/pull/645#issuecomment-385085406,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAX9CmL0QA9D6umZyxj8kiGTETRAGuJ2ks5ts393gaJpZM4TpKY6
.

--
Tyler Jewell -- ceo -- wso2 -- +1<PHONE_NUMBER>

OK, I will use mine then. Will update the PR.
On Fri, Apr 27, 2018 at 1:29 PM, Tyler Jewell<EMAIL_ADDRESS>wrote:

It needs to be someone's personal drive for now.
On Fri, Apr 27, 2018 at 1:28 PM, DSotnikov<EMAIL_ADDRESS>wrote:

A publicly shared gdoc would work too (we can probably even be super-nice
to the community and offer both formats.) Do we have a shared Ballerina
gdrive that we can use for this? Using someone's personal gdrive for a
shared project is probably not a good idea - although I am obviously
happy
to use mine if that is the only way for now.
On Fri, Apr 27, 2018 at 12:00 PM, Tyler Jewell<EMAIL_ADDRESS>wrote:

But you can do that with a publicly shared gdoc - the same way that Go
has
done with their brand presentation format. People just copy and go.
On Fri, Apr 27, 2018 at 11:31 AM, DSotnikov<EMAIL_ADDRESS>wrote:

I will remove the hidden slides and spring.
I think we should keep the editable pptx format so meetup presenters
can
re-use it (add their name, add other info that they feel is
relevant).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<https://github.com/ballerina-platform/ballerina-www/pull/
645#issuecomment-385056279>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAX9Cp2iz_
q9sKiefj1livj1ebfOSUuFks5ts2PmgaJpZM4TpKY6>
.

--
Tyler Jewell -- ceo -- wso2 -- +1<PHONE_NUMBER>
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<https://github.com/ballerina-platform/ballerina-www/pull/
645#issuecomment-385064318>,
or mute the thread
<https://github.com/notifications/unsubscribe-
auth/AGokS9aKGxUQ9x3IkSOmMk-MDNBga0_mks5ts2rpgaJpZM4TpKY6>

.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<https://github.com/ballerina-platform/ballerina-www/pull/
645#issuecomment-385085406>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/
AAX9CmL0QA9D6umZyxj8kiGTETRAGuJ2ks5ts393gaJpZM4TpKY6>

.

--
Tyler Jewell -- ceo -- wso2 -- +1<PHONE_NUMBER>
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ballerina-platform/ballerina-www/pull/645#issuecomment-385085666,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGokS47JG10Ndl_oJI4w1QvBncM1n9qUks5ts3-9gaJpZM4TpKY6
.

I've updated the page title and the slide deck link - now points to a public google slides deck, the link is read-only - anyone who wants to customize can make a copy of their own, hidden slides have been removed.

Looks good to me. Will wait on Thimuth's feedback before merging.


Add support for LinearCombination

Context:
PennyLane is switching to the new Operator Arithmetic as the default. This PR updates Lightning to be compatible with this change.
Description of the Change:

Update QuantumScriptSerializer to be smarter with new op math, and to accommodate LinearCombination.
Update tests with new fixtures that run tests on both new and old op arithmetic
Add support to all devices for detecting Projectors in Sum, Prod, and SProd instances when validating for adjoint diff. This function was the same between LKokkos and LGPU, so I moved this logic to LightningBase.

Benefits:
New op math as the default works with Lightning.
Possible Drawbacks:
Serialization with new op math has some weird nesting. Will be addressed in a follow up PR.
Related GitHub Issues:

[sc-58734]

Some LGPU test failures here. The failing test compares jacobian results against default.qubit, and default.qubit is the cause of the error, not LGPU. Not really sure what's happening as I can't recreate the error locally.

Some LGPU test failures here. The failing test compares jacobian results against default.qubit, and default.qubit is the cause of the error, not LGPU. Not really sure what's happening as I can't recreate the error locally.

This is now fixed.

Looks like codecov is failing due to MPI tests being skipped. Is this new?

Also, I activated labels to run tests for multi-GPU and build wheels, but I will remove it for now it is better to run it at the end, as a final round of CIs.

@mudit2812, please add a link to the pennylane PR to this PR description.

cmake had to be pinned due to issues with the latest release. See these commits to see which files were changed and would need to be unpinned eventually.


fix(bt): Don't constrain local icon (appearance) values (IDFGH-13170)

Bluetooth Assigned Numbers 2.6 Appearance Values contains many values which are not listed and there is no real danger from an invalid value, so allow user to set any value.

@esp-zhp Could you maybe take a quick look at this one? There is no need for the list restriction here.

If no limitations are imposed, it could introduce other issues.

How does the current solution affect you?

The current function lists 58 possible values, but there are over 250 defined in https://www.bluetooth.com/wp-content/uploads/Files/Specification/Assigned_Numbers.html#bookmark49 (I would like to use one of these). I don't think it is practical to provide constants for all of these considering new ones get added occasionally.
The appearance value just determines the icon that is shown when searching for bluetooth devices so there really isn't any danger of allowing an "invalid" value.

We will evaluate it. In fact, our original code did not impose restrictions; the restrictions were added later to address some issues.


UB | Subscription data modifies other subscriptions data.

Bug Report
Current Behavior
I'm using Angular9, Rxjs, and AngularFire. I've created an observable that fetch some users, and use ShareReplay(1), so only fetch the db once. The UB is that I subscribe 2 times to this observable, in one I order the values and splice the top 5, in the other one I group users. These are 2 different subscriptions to the same observable and when I subscribe to the second one the data incoming is missing the spliced users from the first one. Thanks in advance.
Reproduction

REPL or Repo link:
https://github.com/InDevelopmentCompany/SGM-Frontend/blob/develop/projects/webapp/src/app/mentors/list-mentors/list-mentors.page.ts

// obserbable I've created
 private mentorsCollection = this.route.params
    .pipe(
      this.perf.trace('list mentors'),
      map(params => this.db.collection('academic-periods').doc(params.periodId).ref),
      map(periodRef => this.db.collection<FirestoreMentor>('mentors', r => r
        .where('period.reference', '==', periodRef)
        .orderBy('displayName')
      )),
      switchMap(collection => collection.valueChanges()),
      shareReplay(1),
      tap(mentors => console.log(mentors.length))                /** <=========== this logs 68 */
    );

// first subscription
 private getBestMentors() {
    this.subs.sink = this.mentorsCollection
      .subscribe(mentors => {
        console.log(mentors.length);                                             /** <=========== this logs 68 */

        this.bestMentors = mentors
          .sort((m1, m2) => m2.stats.accompanimentsCount - m1.stats.accompanimentsCount)
          .splice(0, 5)
      });
  }

// second subscription
private groupMentorsByArea() {
    this.subs.sink = this.mentorsCollection
      .subscribe(mentors => {
        console.log(mentors.length);                             /** <=========== this logs 63 */

        const mentorPerArea: Map<AreasIds, AreaStat> = new Map();

        // for each mentor, store it in corresponding area entry
        mentors.forEach(mentor => {
          const areaId = mentor.area.reference.id as AreasIds;

          // Increment the data already stored
          if (mentorPerArea.has(areaId)) {
// more code ================

Expected behavior
Subscription internal data should not modify the observable or other subscriptions
Environment

RxJS version: ~6.5.4

Additional context/Screenshots

Subscription internal data should not modify the observable or other subscriptions

No, this behaviour should not be expected. This isn't a bug. What you are seeing is the expected behaviour.
The value that flows through the composed observable is not internal and ensuring that mutations made to it by subscribers are isolated is not this library's responsibility. Implementing this would be far too inefficient.
If you want this behaviour, add a map after the shareReplay and clone or proxy the value there.

Thanks a lot, have a great day.


Option for setting a different path to your custom files and plugins

just set ZSH_CUSTOM in your .zshrc
if not set oh-my-zsh.sh will use the default custom dir in the repository
I use this because i have oh-my-zsh as a submodule in my private toolbox, og i would like to commit
my custom files to my toolbox outside of oh-my-zsh
What do you guys think?

Apologies for the delayed response. Happy to merge this in

Better late than never, thanks for the merge!


Inquiry about Implementing Text Description Generation with LLM in Your Model

Dear Muhammad,
I hope this message finds you well. I have been deeply engaged with your work on utilizing the CLIP model for visual tasks, and I am thoroughly impressed by your innovative approach and the results achieved. Specifically, I find the idea of using large language models (LLMs) like GPT-3 to generate textual descriptions for each category, and incorporating these descriptions into training, to be particularly intriguing. This method holds promising potential for enhancing model performance by learning and extracting rich contextual knowledge from LLM data.
In reviewing your code implementation, I endeavored to understand how this process was explicitly implemented but seemed to miss the specific sections that detail this. It might be that I overlooked some details, or the process is represented in the code more subtly than I anticipated. Hence, I would like to ask a few questions:

Did you directly utilize GPT-3 or other large language models to generate textual descriptions for each category within your model training workflow? If so, how was this process integrated into your model training?

Regarding the generated textual descriptions, how did you integrate and utilize them for model training?

If possible, could you share some practical examples or code snippets on implementing and utilizing these generated textual descriptions? It would be immensely helpful for understanding and applying your method to my own research projects.

I sincerely believe that grasping these details will enable me to better comprehend your work and explore the possibilities of applying this concept to my research. I look forward to your response and once again thank you for sharing this exciting piece of research.
Best regards!

During the training process, the input file consists of label and text description. How is this done? Have some functions in dataloader been changed?

It seems that the templates folder is not used in the code.

Hi @SHIBOYA,
Thank you for showing interest in ProText!
Regarding your questions, kindly note the following.

Did you directly utilize GPT-3 or other large language models to generate textual descriptions for each category within your model training workflow? If so, how was this process integrated into your model training?

We do not directly utilize LLMs during the training workflow, instead, we use LLMs offline. First, we offline generate the textual descriptions for each training class from LLMs like GPT and store them in JSON files (saved here). If you want to regenerate the textual descriptions, you can use the code of CuPL baseline here.

Regarding the generated textual descriptions, how did you integrate and utilize them for model training?

We use the textual descriptions to learn a mapping from "a photo of a CLS" => detailed description for that class obtained from LLM. We have modified the data loader of the dassl library to obtain such text-to-text pairs.

If possible, could you share some practical examples or code snippets on implementing and utilizing these generated textual descriptions? It would be immensely helpful for understanding and applying your method to my own research projects.

You can see how the CLIP text encoders are used in the forward pass at protext.py as shown here.

During the training process, the input file consists of a label and text description. How is this done? Have some functions in the dataloader been changed?

Yes, we have changed the data loader to get text-to-text examples. The PyTorch data loader is implemented here.
I hope this is helpful. Feel free to ask if there is still any query.

For the text generated by GPT, how to ensure that the dimensions of target_embed and outputs generated by multiple different text descriptions are equal?

The timely advice and professional guidance you offered are incredibly valuable to me.

Dear Muhammad,
I have encountered a challenge regarding the optimal way to simultaneously load both image and sentence data during training. Specifically, I noticed that in your implementation, when dealing with textual data, you've adopted a technique where each text entry is replicated * (len(input_text)).
My question is, for a scenario where both images and their corresponding sentences need to be loaded concurrently, would you recommend applying a similar replication strategy for images to align with the sentence data in terms of tensor dimensions? Or is there a more efficient method or best practice that you could suggest for handling this type of multimodal data loading?
Best regards!

Dear Shiboya,
Thank you for your message.
I think you do not need to perform any replication as done in the original code if you already have image-text pairs as the multi-modal data.
This replication part needs to be done with text-only data.
I hope this is helpful. Thank you and kind regards!

Hi @SHIBOYA,
I am closing this issue for now. Feel free to reopen if there is still any question.
Thank you!


feat: add select (native) component

Purpose
Add Select component.
Approach
Implements Select  (native) component.
Custom Select (with custom dropdown, for React) will be developed separately.
This partially solves issue #3.
Testing
On Storybook preview.
Risks
N/A

Is the idea to release native Select before the custom?

No, it will still belong (native + custom) to 1.4.0 release, however made this into a separate PR just to have a more clear idea on where our base is and where the custom implementation goes towards.

This is really weird

I wonder if should encourage a default option when there's no placeholder.
We should ask @Subcide about this too.

We will discuss this tomorrow.
I think weirdest one is "borderless".
However, for HTML + CSS composition this is a totally valid one.

@rabelloo changed all this now to what we have discussed with designer.

LGTM


[DO-282] No error message shown when submitting a path exclusion that is not accepted by the API

It would be nice if there was some sort of feedback shown to the user if the path exclusion doesn't get saved. Also perhaps the dialog could be closed only when the submit is successful, in case there is just a typo or something in the path exclusion pattern.
From SyncLinear.com | DO-282

Any response got from DOS API in the failing case?


Refactor 0026-remove-duplicates-from-sorted-array.js

Reason for change :
This alternative is
-More concise while maintaining readability
-Straightforward, Easier to understand at a glance
-Achieves the same result with less code , with same complexity

File(s) Modified: 0026-remove-duplicates-from-sorted-array.js
Language(s) Used: javascript
Submission URL: _https://leetcode.com/problems/remove-duplicates-from-sorted-array/submissions/1433161644/_

@Rach1507 Solution looks good. Before I merge your PR take a look at my suggestion to fix spacing. I'll merge your PR once the spacing is fixed.

@Ykhan799  Thanks for spotting that—fixed now! Please check.

@Rach1507 Thanks for fixing your solution. PR is now merged 👍


Change procedural loops to function map() and filter()

Description
This is follow up to the comment in PR https://github.com/microsoft/responsible-ai-toolbox/pull/1242 to change the procedural loops to functional style in typescript.
Areas changed

npm packages changed:

[ ] responsibleai/causality
[ ] responsibleai/core-ui
[ ] responsibleai/counterfactuals
[ ] responsibleai/dataset-explorer
[ ] responsibleai/fairness
[ ] responsibleai/interpret
[ ] responsibleai/localization
[ ] responsibleai/mlchartlib
[x] responsibleai/model-assessment

Python packages changed:

[ ] raiwidgets
[ ] responsibleai
[ ] erroranalysis
[ ] rai_core_flask

Tests

[x] No new tests required.
[ ] New tests for the added feature are part of this PR.
[ ] I validated the changes manually.

Screenshots (if appropriate):
Documentation:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

Codecov Report

Merging #1255 (f84ca22) into main (2dd3799) will decrease coverage by 14.27%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main    #1255       +/-   ##
===========================================
- Coverage   89.85%   75.58%   -14.28%
===========================================
  Files          26       10       -16
  Lines        1331      258     -1073
===========================================
- Hits         1196      195     -1001
+ Misses        135       63       -72

Flag
Coverage Δ

unittests
75.58% <ø> (-14.28%)
:arrow_down:

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

Impacted Files
Coverage Δ

...erroranalysis/_internal/error_analyzer/__init__.py

erroranalysis/erroranalysis/version.py

erroranalysis/erroranalysis/__init__.py

...is/erroranalysis/_internal/surrogate_error_tree.py

erroranalysis/erroranalysis/report/error_report.py

...s/erroranalysis/_internal/error_report/__init__.py

erroranalysis/erroranalysis/_internal/metrics.py

erroranalysis/erroranalysis/_internal/constants.py

erroranalysis/erroranalysis/_internal/__init__.py

...ranalysis/erroranalysis/_internal/matrix_filter.py

... and 6 more

Continue to review full report at Codecov.

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


Redirect if not authenticated

Hi, I am enjoying this package, works perfect so far. Thank you.
Just come here to ask you if you have a best way to redirect to another page if the user is not authenticated. For example lets say "dashboard" it should redirect if not logged in.
This is my page
import React, { Component } from 'react'

import { Default } from '@/components/templates/Default'

class Dashboard extends Component {

    render() {
        return (
            <>
                <Default description="Dashboard Description" title="User's Dashboard">
                    <div className="user-area-all-style sign-up-area pt-100 bg-black">
                        Dashboard Content
                    </div>
                </Default>
            </>
        )
    }
}

export default Dashboard

This was answered before in #13, hopefully that will answer your question.

Great, Thanks!


Incorporating POLYFUN

1. Bug description
PolyFun is not installed. Reinstall echofinemap with PolyFun? This will automatically restart R. (y/n):
Error in echofinemap::POLYFUN_install() : PolyFun is not installed.
Awesome package!  Also thanks in advance for any help you can give me!
Expected behaviour
Your example echodata::BCST results included POLYFUN_SUSIE results.
2. Reproducible example
results <- echolocatoR::finemap_loci(

fullSS_path = cf.long.munged,
topSNPs = topSNPsmPth,
loci = c("ABHD17C","AFF3","ATXN","C20orf112","C6orf106"),
LD_reference = "1KGphase3",
#dataset_name = "cf.longevity",
fullSS_genome_build = "hg19",
bp_distance = 100000,
finemap_methods = c("ABF","SUSIE","FINEMAP","POLYFUN_FINEMAP","POLYFUN_SUSIE","PAINTOR","COJO_conditional","COJO_joint","COJO_stepwise"),
munged = TRUE)

Console output
PolyFun is not installed. Reinstall echofinemap with PolyFun? This will automatically restart R. (y/n):
Error in echofinemap::POLYFUN_install() : PolyFun is not installed.
Data
As set forth in the next comment, I tried to access Polyfun using your example data.  There I also responded 'y' to option to install Polyfun.
If it would help to see my data, I can certainly upload a small sample.  Note that there was no problem when I cut out all but "ABF" (not relevant since not binary), "SUSIE", and "FINEMAP".  I used a GWAS generated using GSEM (with 6.7 million snps, munged down using MungeSumstats to 3.7 million due to multiallelic snps).
(If possible, upload a small sample of your data so that we can reproduce the bug on our end. If that's not possible, please at least include a screenshot of your data and other relevant details.)
3. Session info
(Add output of the R function utils::sessionInfo() below. This helps us assess version/OS conflicts which could be causing bugs.)

> utils::sessionInfo()
R version 4.2.0 (2022-04-22)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.7

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats4    stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] snpStats_1.48.0     Matrix_1.5-3        survival_3.4-0      readr_2.1.3         GenomeInfoDb_1.34.3 IRanges_2.32.0      S4Vectors_0.36.0
[8] BiocGenerics_0.44.0 echolocatoR_2.0.3

loaded via a namespace (and not attached):
  [1] rappdirs_0.3.3                              rtracklayer_1.58.0                          GGally_2.1.2
  [4] R.methodsS3_1.8.2                           ragg_1.2.4                                  tidyr_1.2.1
  [7] echoLD_0.99.8                               ggplot2_3.4.0                               bit64_4.0.5
 [10] knitr_1.41                                  irlba_<IP_ADDRESS>                               DelayedArray_0.24.0
 [13] R.utils_2.12.2                              data.table_1.14.6                           rpart_4.1.19
 [16] KEGGREST_1.38.0                             RCurl_1.98-1.9                              AnnotationFilter_1.22.0
 [19] generics_0.1.3                              GenomicFeatures_1.50.2                      RSQLite_2.2.19
 [22] proxy_0.4-27                                bit_4.0.5                                   tzdb_0.3.0
 [25] xml2_1.3.3                                  SummarizedExperiment_1.28.0                 assertthat_0.2.1
 [28] viridis_0.6.2                               gargle_1.2.1                                xfun_0.35
 [31] hms_1.1.2                                   fansi_1.0.3                                 restfulr_0.0.15
 [34] progress_1.2.2                              dbplyr_2.2.1                                readxl_1.4.1
 [37] Rgraphviz_2.42.0                            igraph_1.3.5                                DBI_1.1.3
 [40] htmlwidgets_1.5.4                           reshape_0.8.9                               downloadR_0.99.5
 [43] purrr_0.3.5                                 ellipsis_0.3.2                              dplyr_1.0.10
 [46] ggnewscale_0.4.8                            backports_1.4.1                             biomaRt_2.54.0
 [49] deldir_1.0-6                                MatrixGenerics_1.10.0                       MungeSumstats_1.7.2
 [52] vctrs_0.5.1                                 Biobase_2.58.0                              ensembldb_2.22.0
 [55] cachem_1.0.6                                withr_2.5.0                                 BSgenome_1.66.1
 [58] checkmate_2.1.0                             vroom_1.6.0                                 GenomicAlignments_1.34.0
 [61] prettyunits_1.1.1                           cluster_2.1.4                               ape_5.6-2
 [64] dir.expiry_1.6.0                            lazyeval_0.2.2                              crayon_1.5.2
 [67] basilisk.utils_1.10.0                       crul_1.3                                    pkgconfig_2.0.3
 [70] labeling_0.4.2                              nlme_3.1-160                                ProtGenerics_1.30.0
 [73] XGR_1.1.8                                   nnet_7.3-18                                 pals_1.7
 [76] rlang_1.0.6                                 lifecycle_1.0.3                             filelock_1.0.2
 [79] httpcode_0.3.0                              BiocFileCache_2.6.0                         echotabix_0.99.8
 [82] dichromat_2.0-0.1                           cellranger_1.1.0                            coloc_<IP_ADDRESS>
 [85] matrixStats_0.63.0                          graph_1.76.0                                osfr_0.2.9
 [88] boot_1.3-28.1                               base64enc_0.1-3                             png_0.1-8
 [91] viridisLite_0.4.1                           rjson_0.2.21                                rootSolve_<IP_ADDRESS>
 [94] bitops_1.0-7                                R.oo_1.25.0                                 ggnetwork_0.5.10
 [97] Biostrings_2.66.0                           blob_1.2.3                                  mixsqp_0.3-48
[100] stringr_1.4.1                               echoplot_0.99.6                             dnet_1.1.7
[103] jpeg_0.1-9                                  echodata_0.99.16                            BSgenome.Hsapiens.1000genomes.hs37d5_0.99.1
[106] scales_1.2.1                                memoise_2.0.1                               magrittr_2.0.3
[109] plyr_1.8.8                                  hexbin_1.28.2                               zlibbioc_1.44.0
[112] compiler_4.2.0                              echoconda_0.99.8                            BiocIO_1.8.0
[115] RColorBrewer_1.1-3                          catalogueR_1.0.0                            EnsDb.Hsapiens.v75_2.99.0
[118] Rsamtools_2.14.0                            cli_3.4.1                                   XVector_0.38.0
[121] echoannot_0.99.10                           patchwork_1.1.2                             htmlTable_2.4.1
[124] Formula_1.2-4                               MASS_7.3-58.1                               tidyselect_1.2.0
[127] stringi_1.7.8                               textshaping_0.3.6                           yaml_2.3.6
[130] supraHex_1.36.0                             latticeExtra_0.6-30                         ggrepel_0.9.2
[133] grid_4.2.0                                  VariantAnnotation_1.44.0                    tools_4.2.0
[136] lmom_2.9                                    parallel_4.2.0                              rstudioapi_0.14
[139] foreign_0.8-83                              piggyback_0.1.4                             gridExtra_2.3
[142] gld_2.6.6                                   farver_2.1.1                                RcppZiggurat_0.1.6
[145] digest_0.6.30                               BiocManager_1.30.19                         Rcpp_1.0.9
[148] GenomicRanges_1.50.1                        OrganismDbi_1.40.0                          httr_1.4.4
[151] AnnotationDbi_1.60.0                        RCircos_1.2.2                               ggbio_1.46.0
[154] biovizBase_1.46.0                           colorspace_2.0-3                            XML_3.99-0.12
[157] fs_1.5.2                                    reticulate_1.26                             splines_4.2.0
[160] RBGL_1.74.0                                 expm_0.999-6                                echofinemap_0.99.4
[163] basilisk_1.10.2                             Exact_3.2                                   mapproj_1.2.9
[166] SNPlocs.Hsapiens.dbSNP155.GRCh37_0.99.22    systemfonts_1.0.4                           jsonlite_1.8.3
[169] Rfast_2.0.6                                 susieR_0.12.27                              R6_2.5.1
[172] Hmisc_4.7-2                                 pillar_1.8.1                                htmltools_0.5.3
[175] glue_1.6.2                                  fastmap_1.1.0                               DT_0.26
[178] BiocParallel_1.32.3                         class_7.3-20                                codetools_0.2-18
[181] maps_3.4.1                                  mvtnorm_1.1-3                               utf8_1.2.2
[184] lattice_0.20-45                             tibble_3.1.8                                curl_4.3.3
[187] DescTools_0.99.47                           zip_2.2.2                                   openxlsx_<IP_ADDRESS>
[190] interp_1.1-3                                googleAuthR_2.0.0                           munsell_0.5.0
[193] e1071_1.7-12                                GenomeInfoDbData_1.2.9                      reshape2_1.4.4
[196] gtable_0.3.1
>

Also unable to install Polyfun module with example data:
topSNPs <- echodata::import_topSNPs(

topSS = echodata::topSNPs_Nalls2019_raw,
colmap = colmap,
grouping_vars = "Locus Number")
Constructing locus names from CHR and index SNP.
Standardising column headers.
First line of summary statistics file:
SNP	CHR	BP	Nearest Gene	QTL Nominated Gene (nearest QTL)	Effect allele	Other allele	Effect allele frequency	Beta, all studies	SE, all studies	P, all studies	P, COJO, all studies	P, random effects, all studies	P, Conditional 23AndMe only	P, 23AndMe only	I2, all studies	Freq1, previous studies	Beta, previous studies	StdErr, previous studies	P, previous studies	I2, previous studies	Freq1, new studies	Beta, new studies	StdErr, new studies	P, new studies	I2, new studies	Passes pooled 23andMe QC	Known GWAS locus within 1MB	Failed final filtering and QC	Locus within 250KB	Locus Number	Locus	Gene
Returning unmapped column names without making them uppercase.
Mapping colnames from MungeSumstats ==> echolocatoR

fullSS_path <- echodata::example_fullSS(dataset = "Nalls2019")
Writing file to ==> /var/folders/rl/6vqvm_h5319fml5s4vw8fbfr0000gn/T//RtmpNSorp8/nalls2019.fullSS_subset.tsv
step 3
results <- echolocatoR::finemap_loci(

fullSS_path = fullSS_path,
topSNPs = topSNPs,
loci = c("BST1"),
LD_reference = "1KGphase3",
#dataset_name = "Nalls23andMe_2019",
fullSS_genome_build = "hg19",
bp_distance = 1000,
finemap_methods = c("ABF","SUSIE","FINEMAP","POLYFUN_FINEMAP","POLYFUN_SUSIE","PAINTOR","COJO_conditional","COJO_joint","COJO_stepwise"),
munged = TRUE)
PolyFun is not installed. Reinstall echofinemap with PolyFun? This will automatically restart R. (y/n): y
Installing PolyFun submodule.
Cloning into '/var/folders/rl/6vqvm_h5319fml5s4vw8fbfr0000gn/T//RtmpNSorp8/file9c3057a3dc73'...
fatal: unable to access 'https://github.com/RajLabMSSM/echofinemap/': Could not resolve host: github.com
Error in package_file():
! '/var/folders/rl/6vqvm_h5319fml5s4vw8fbfr0000gn/T//RtmpNSorp8/file9c3057a3dc73' is not a directory.
Run rlang::last_error() to see where the error occurred.

rlang::last_error()
<error/rlang_error>
Error in package_file():
! '/var/folders/rl/6vqvm_h5319fml5s4vw8fbfr0000gn/T//RtmpNSorp8/file9c3057a3dc73' is not a directory.

Backtrace:

echolocatoR::finemap_loci(...)
echofinemap::POLYFUN_install()
echofinemap:::install_submodule_git("https://github.com/RajLabMSSM/echofinemap")
devtools::install(install_dir, ...)
devtools::as.package(pkg)
devtools::package_file(path = x)
Run rlang::last_trace() to see the full context.

Also unable to access PAINTOR

results <- echolocatoR::finemap_loci(

fullSS_path = fullSS_path,
topSNPs = topSNPs,
loci = c("BST1"),
LD_reference = "1KGphase3",
#dataset_name = "Nalls23andMe_2019",
fullSS_genome_build = "hg19",
bp_distance = 1000,
finemap_methods = c("ABF","SUSIE","FINEMAP","PAINTOR","COJO_conditional","COJO_joint","COJO_stepwise"),
munged = TRUE)
Error in PAINTOR_find_executable(paintor_path = paintor_path) :
PAINTOR executable cannot be found.

utils::sessionInfo()
R version 4.2.0 (2022-04-22)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.7
Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats4    stats     graphics  grDevices utils     datasets  methods   base
other attached packages:
[1] forestploter_0.2.3  snpStats_1.48.0     Matrix_1.5-3        survival_3.4-0      readr_2.1.3         GenomeInfoDb_1.34.3 IRanges_2.32.0
[8] S4Vectors_0.36.0    BiocGenerics_0.44.0 echolocatoR_2.0.3
loaded via a namespace (and not attached):
[1] rappdirs_0.3.3                              rtracklayer_1.58.0                          GGally_2.1.2
[4] R.methodsS3_1.8.2                           ragg_1.2.4                                  tidyr_1.2.1
[7] echoLD_0.99.8                               ggplot2_3.4.0                               bit64_4.0.5
[10] knitr_1.41                                  irlba_<IP_ADDRESS>                               DelayedArray_0.24.0
[13] R.utils_2.12.2                              data.table_1.14.6                           rpart_4.1.19
[16] KEGGREST_1.38.0                             RCurl_1.98-1.9                              AnnotationFilter_1.22.0
[19] generics_0.1.3                              GenomicFeatures_1.50.2                      callr_3.7.3
[22] usethis_2.1.6                               RSQLite_2.2.19                              proxy_0.4-27
[25] bit_4.0.5                                   tzdb_0.3.0                                  httpuv_1.6.6
[28] xml2_1.3.3                                  SummarizedExperiment_1.28.0                 assertthat_0.2.1
[31] viridis_0.6.2                               gargle_1.2.1                                xfun_0.35
[34] hms_1.1.2                                   promises_<IP_ADDRESS>                            fansi_1.0.3
[37] restfulr_0.0.15                             progress_1.2.2                              dbplyr_2.2.1
[40] readxl_1.4.1                                Rgraphviz_2.42.0                            igraph_1.3.5
[43] DBI_1.1.3                                   htmlwidgets_1.5.4                           reshape_0.8.9
[46] downloadR_0.99.5                            purrr_0.3.5                                 ellipsis_0.3.2
[49] dplyr_1.0.10                                ggnewscale_0.4.8                            backports_1.4.1
[52] biomaRt_2.54.0                              deldir_1.0-6                                MatrixGenerics_1.10.0
[55] MungeSumstats_1.7.2                         vctrs_0.5.1                                 Biobase_2.58.0
[58] remotes_2.4.2                               ensembldb_2.22.0                            cachem_1.0.6
[61] withr_2.5.0                                 BSgenome_1.66.1                             checkmate_2.1.0
[64] vroom_1.6.0                                 GenomicAlignments_1.34.0                    prettyunits_1.1.1
[67] cluster_2.1.4                               ape_5.6-2                                   dir.expiry_1.6.0
[70] lazyeval_0.2.2                              crayon_1.5.2                                basilisk.utils_1.10.0
[73] crul_1.3                                    pkgconfig_2.0.3                             labeling_0.4.2
[76] pkgload_1.3.2                               nlme_3.1-160                                ProtGenerics_1.30.0
[79] XGR_1.1.8                                   devtools_2.4.5                              nnet_7.3-18
[82] pals_1.7                                    rlang_1.0.6                                 miniUI_<IP_ADDRESS>
[85] lifecycle_1.0.3                             filelock_1.0.2                              httpcode_0.3.0
[88] BiocFileCache_2.6.0                         echotabix_0.99.8                            dichromat_2.0-0.1
[91] cellranger_1.1.0                            coloc_<IP_ADDRESS>                               matrixStats_0.63.0
[94] graph_1.76.0                                osfr_0.2.9                                  boot_1.3-28.1
[97] base64enc_0.1-3                             processx_3.8.0                              png_0.1-8
[100] viridisLite_0.4.1                           rjson_0.2.21                                rootSolve_<IP_ADDRESS>
[103] bitops_1.0-7                                R.oo_1.25.0                                 ggnetwork_0.5.10
[106] Biostrings_2.66.0                           blob_1.2.3                                  mixsqp_0.3-48
[109] stringr_1.4.1                               echoplot_0.99.6                             dnet_1.1.7
[112] jpeg_0.1-9                                  echodata_0.99.16                            BSgenome.Hsapiens.1000genomes.hs37d5_0.99.1
[115] scales_1.2.1                                memoise_2.0.1                               magrittr_2.0.3
[118] plyr_1.8.8                                  hexbin_1.28.2                               zlibbioc_1.44.0
[121] compiler_4.2.0                              echoconda_0.99.8                            BiocIO_1.8.0
[124] RColorBrewer_1.1-3                          catalogueR_1.0.0                            EnsDb.Hsapiens.v75_2.99.0
[127] Rsamtools_2.14.0                            cli_3.4.1                                   urlchecker_1.0.1
[130] XVector_0.38.0                              echoannot_0.99.10                           ps_1.7.2
[133] patchwork_1.1.2                             htmlTable_2.4.1                             Formula_1.2-4
[136] MASS_7.3-58.1                               tidyselect_1.2.0                            stringi_1.7.8
[139] textshaping_0.3.6                           yaml_2.3.6                                  supraHex_1.36.0
[142] latticeExtra_0.6-30                         ggrepel_0.9.2                               grid_4.2.0
[145] VariantAnnotation_1.44.0                    tools_4.2.0                                 lmom_2.9
[148] parallel_4.2.0                              rstudioapi_0.14                             foreign_0.8-83
[151] piggyback_0.1.4                             gridExtra_2.3                               gld_2.6.6
[154] farver_2.1.1                                RcppZiggurat_0.1.6                          digest_0.6.30
[157] BiocManager_1.30.19                         shiny_1.7.3                                 Rcpp_1.0.9
[160] GenomicRanges_1.50.1                        later_1.3.0                                 OrganismDbi_1.40.0
[163] httr_1.4.4                                  AnnotationDbi_1.60.0                        RCircos_1.2.2
[166] ggbio_1.46.0                                biovizBase_1.46.0                           colorspace_2.0-3
[169] XML_3.99-0.12                               fs_1.5.2                                    reticulate_1.26
[172] splines_4.2.0                               RBGL_1.74.0                                 expm_0.999-6
[175] echofinemap_0.99.4                          basilisk_1.10.2                             Exact_3.2
[178] mapproj_1.2.9                               SNPlocs.Hsapiens.dbSNP155.GRCh37_0.99.22    sessioninfo_1.2.2
[181] systemfonts_1.0.4                           xtable_1.8-4                                jsonlite_1.8.3
[184] Rfast_2.0.6                                 susieR_0.12.27                              R6_2.5.1
[187] profvis_0.3.7                               Hmisc_4.7-2                                 mime_0.12
[190] pillar_1.8.1                                htmltools_0.5.3                             glue_1.6.2
[193] fastmap_1.1.0                               DT_0.26                                     BiocParallel_1.32.3
[196] class_7.3-20                                codetools_0.2-18                            maps_3.4.1
[199] pkgbuild_1.4.0                              mvtnorm_1.1-3                               utf8_1.2.2
[202] lattice_0.20-45                             tibble_3.1.8                                curl_4.3.3
[205] DescTools_0.99.47                           zip_2.2.2                                   openxlsx_<IP_ADDRESS>
[208] interp_1.1-3                                googleAuthR_2.0.0                           munsell_0.5.0
[211] e1071_1.7-12                                GenomeInfoDbData_1.2.9                      reshape2_1.4.4
[214] gtable_0.3.1
2022-12-06 12:40:35.793 R[39984:29884093] -deltaZ is deprecated for NSEventTypeMagnify.  Please use -magnification.

Same here! Do you perhaps have a solution now?


Traceability agent configuration

Hello,
Traceability agent should have configuration parameter for :

traceability enabled: true
metrics enabled: false

Currently, those are hardcoded in the apigee_traceability_agent.yml file and so hardcoded in the docker image.
Thanks,
Sovanna

@snon-axway maybe there is confusion on these settings.
The traceability.enabled setting referred to must be true for the agent to run, if false is desired then the agent should not be started.
The metrics.enabled setting referred to, I believe, is on line 112 of the yaml. If that is the case than this setting is for beat metrics being added to the log file, the same hardcoding is in all other agents too. I believe you may want the the central metrics on line 22 which doe shave an environment variable.


url compat not used for django 1.10

Coverage remained the same at 93.033% when pulling 708f3788effd24f17b2be8bf9c3aed6231c155e2 on ckarrie:ckarrie-no-compat into bde9ecc79e96f628f1e550cf370cea1d9909d898 on arteria:master.

Oh my gosh, sorry for this PR. Compat was updated for Django 1.10 recently and works now with.


npm run --production doesn't work in Angular apps

Which @angular/* package(s) are the source of the bug?
compiler
Is this a regression?
Yes
Description
I tried on 2 projects to do below described things and got the same error in the both cases.

I deleted node_modules folder from the Angular app.
Then made:
npm install --production
with intention for faster and more optimized deploy without DevDependencies for the prod.
Then on
npm run start
or
npm run build
I got a such error:

There is the same on build - npm run build - command

The same output is for npm run build --prod

and for npm run build --production

Please provide a link to a minimal reproduction of the bug
https://github.com/TatyanaMolchanova/AngularBlog
Please provide the exception or error you saw
PS E:\myProjects\AngularBlog> npm run start

><EMAIL_ADDRESS>start E:\myProjects\AngularBlog
> ng serve

'ng' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>start: `ng serve`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      C:\npm-cache\_logs\2022-01-20T09_53_15_270Z-debug.log
PS E:\myProjects\AngularBlog>

Please provide the environment you discovered this bug in (run ng version)
_                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
Ivy Workspace: Yes

Package                             Version
-------------------------------------------------------------
@angular-devkit/architect           0.1001.4
@angular-devkit/build-angular       0.1002.0
@angular-devkit/core                10.1.4
@angular-devkit/schematics          10.1.4
@angular/animations                 10.1.4
@angular/cli                        10.1.4
@angular/common                     10.1.4
@angular/compiler                   10.1.4
@angular/compiler-cli               10.1.4
@angular/forms                      10.1.4
@angular/platform-browser           10.1.4
@angular/platform-browser-dynamic   10.1.4
@angular/pwa                        0.1002.0
@angular/router                     10.1.4
@schematics/angular                 10.1.4
@schematics/update                  0.1001.4
rxjs                                6.6.3
typescript                          4.0.3

Anything else?
'ng' is not recognized as an internal or external command
It's because the life meaning packages of Angular are in the DevDependincies.
So, npm install --production doesn't work for all Angular apps. I count that it's very bad.
It will be nice if this command work for Angular and then the deploy of Angular apps will be faster and lighter.

Hi @TatyanaMolchanova,
This is expected.
Most of the devDependencies are needed to build/test your Angular application. Typically npm install --production is used on production server to install only dependencies that are required to run and already built the application on such use case is for SSR apps.
@angular/cli itself have numerous transitive dependencies which are not intended to be installed on production environments.
In many case the installation time when using npm install vs npm install --production is negligible.

I have the project with SSR - https://github.com/TatyanaMolchanova/tanechka and I run usual build for this app without problem:
npm run build:ssr

But when I deleted node_modules and made:

npm install --production
npm run build:ssr
Build failed with the error - please, see screenshots.

So, this command npm install --production is not working for ALL Angular apps and I count that it's not good at all that the regular npm command is not working in any Angualr apps - client-side or server-side.

I have the project with SSR - https://github.com/TatyanaMolchanova/tanechka and I run usual build for this app without problem:
npm run build:ssr

But when I deleted node_modules and made:

npm install --production
npm run build:ssr
Build failed with the error - please, see screenshots.

So, this command npm install --production is not working for ALL Angular apps and I count that it's not good at all that the regular npm command is not working in any Angualr apps - client-side or server-side.

This is expected since ng or the Angular CLI is not expected to be present on production servers.
Typically you want to run npm install --production postbuild and not prebuild, as this command should install dependencies that are required for the runtime of the application.


Feature 168 - prepare docker

#168

tutorial: https://github.com/amosproj/amos2023ws01-ticket-chat-ai/wiki/Build---Deploy-Documentation#production

after following the instructions i get the following error when running the project


Create compatibility between LungCTSegmenter and CIP

I implemented the code in LungCTSegmenter  mentioned here
https://discourse.slicer.org/t/exporting-csv-with-parenchyma-analysis-module/10697/17?u=rbumm
but this

was produced leaving the labelmap input to "None".
If I do a LungCTSegmenter run with the latest code and do this

I get this Lung segmentation-label.

the CIP-color tabe seems to have been generated:

Feeding this to CIP and "Parenchyma Analysis"

still results in

I am sorry, this got out of my focus for a while ...
Yes, I have chosen the color table for exporting the segmentation to the labelmap.
It seems to correctly translate the labels into WholeLung, RightLung and LeftLung with correct colors
However, the LeftLung histogram stays flat although the left lung mask is ok

Have you chosen the generated color table for exporting the segmentation to labelmap (the color table specifies the label values for each segment)?
see above

Do the label values for left lung, right lung, ... in the labelmap volume exported from segmentation match the label values for the same structures created by Parenchyma analysis?
label values = markup text  ("WholeLung","RightLung","LeftLung")? Yes the do


memory card is removed prompt and then restart when downloading

When in the middle of download sometimes there is prompt(i think it's vita prompt, not sure) that says the memory cards is removed and then after i press ok the system restart. So far i only encountered this problem when installing valkyrie drive bhikkuni, after restart i can resume the progress normally. I tried other games and the only one that show this problem is this game. it happen 1-3 times in one download, sometimes it doesn't happen at all.
Another problem with same game, it always says integrity check failed after download, wether the previous issue happen or not. i tried 6times with same result. The "memory card is removed" issue show up in 4 of 6 attemp.

Do you use sd2vita? That sounds like an issue with sdcard or adapter... Not sure.

That prompt is the result of your sdcard popping out.   This is hardware.  Check that the contacts Are cleaned and reply here it’s always possible that there is a problem with PKGi

If it only happens while you’re downloading or reading data it could be that you have a defective ST card

It's work fine when reading or writing on other app/games, i copied 6gB data from uma0 to ux0 using vitashell with no problem.
I have 2 sd2vita adapter, i tried the same game(Valkyrie drive) today once with my backup, and twice with one i usually use, results is no removed sd card issue occurred, but the package integrity check failed issue occurred on all attempt.
I'll do some test later today with other games and more attempt, i'll report my finding tomorrow.

Forget to mention that i use the pastebin url in config.txt to retrieve game list.

So here's the test results, i tried 5 games with 3 attempts each.

Valkyrie drive:
2 "memory cards removed" issues in 2nd attempt, no issue in other.
Package integrity check fail happened in all attempts.
Toukiden kiwami
No "memory cards removed" issues.
Install normally in all attempts.
God eater 2
No "memory cards removed" issues.
Install normally in all attempts.
Senran kagura: bon appetit
No "memory cards removed" issues.
Install normally in all attempts.
Sine mora
No "memory cards removed" issues.
Install normally in all attempts.

I think the memory issue is hardware like you said because it occurred when i played senran kagura, it just accidentally always happens when i install Valkyrie drive i guess. After i removed vita mmc issue no longer happens in games so i tried to download Valkyrie drive again with no memory issue, but the integrity check still failed.


cmd: very basic REPL implementation

Basic REPL that only supports query executions.

Current coverage is 61.31% (diff: 100%)

Merging #97 into master will not change coverage

@@             master        #97   diff @@
==========================================
  Files            40         40
  Lines          1657       1657
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits           1016       1016
  Misses          582        582
  Partials         59         59

Powered by Codecov. Last update 48b4a0c...8ae4448


Where are the datasets?

I downloaded the repository but at the line
load dataset
dataset_path = f"data/{env_name}-{dataset}-v2.pkl"
with open(dataset_path, "rb") as f:
trajectories = pickle.load(f)
it quits with an error, since that pickle dataset is not found.
In the repository there is no dataset.
How did you get it?
Thanks

Ok,
sorry I found them.
I just read the wrong readme