Proposal replacement for opts magics

Over the years we've had many proposals for how to specify options with the options system, many we have discussed and never implemented and many that we have. Now I am adding one more proposal that I think gets us 99% of where we want to be. :-)
We starting with the line and cell magics with multiple internal formats to represent the nesting, then we added __call__,  then we renamed __call__ to opts, then added .options (flat namespace).
In addition we have the hv.opts utility which operates as a pure python replacement to the magics. It is safe to say that this is all quite confusing and we want one good way we can recommend and document (and eventually deprecate the other ways)
This all comes down to a fundamental problem with specifying nested structures to style nested, compositional objects. Even though we now encourage the use the .options method, we don't have a solution that satisfies all these goals:

Pure Python syntax. Obviously magics fail at this test.
Separation of presentation from content. Magics are good at this, with the options always found at the top of the cell. Currently, .options is often not as you need to refactor your code to apply .options at the right level.
Tab completion. Magics are good at this, .options is not.
Ideally something that lets us easily map only magics to the new approach (related to goal 2).

The closest thing to a recommendation right now is to declare a set of dictionaries at the top of the cell then applying .options appropriately. This satisfies goals 1 but fails at goal 3. Goal 4 fails as goal 2 is only partially satisfied as you need to factor out your code appropriately.
The current proposal is to extend hv.opts so it can be more a direct substitution for the magics. The aim is to improve our current recommendation (dictionaries + .option methods) with tab completion and compositionality so that you can just apply .options to a deeply nested object without having to refactor your code. In short, the proposal is based on these two ideas:

You can use hv.opts to get an object that enhances the dictionary approach (i.e for use in .options)
This object is queryable and compositional (could be the return value from the opts parser) and can be used by the .options method.

In its simplest form, instead of:
curveopts = dict(color='green')
imageopts = dict(cmap='fire')
Image(...).options(**imageopts) * Curve(...).options(**curveopts)

you could use:
curveopts = hv.opts(color='green')
imageopts = hv.opts(cmap='hsv')
Image(...).options(**imageopts) * Curve(...).options(**curveopts)

(Note that this is only technically possible as the use of keywords is a distinct signature from what hv.opts currently supports.)
Why do this?

A dictionary could be used for anything, declaring hv.opts signals intent.
Tab-completion of all keywords across all elements.

This style still suffers from a few problems 1) a large flat namespace for tab-completion 2) you still need to refactor your code into pieces to apply the option sets.
What if you want better tab-completion and also have a complicated nested object you want to apply options to i.e with specificity for element, group and label? What is the equivalent to?
%%opts Image.ORMap (cmap='hsv') Curve.Trajectory.Ball (color='green')
Image(...) * Curve(...)

In this proposal you could do something like:
curveopts = hv.opts.Curve('Trajectory', 'Ball', color='green')
imageopts = hv.opts.Image('ORMap', 'cmap='hsv')
(Image(...) * Curve(...)).options(curveopts | imageopts)

This style satisfies the first three goals, including tab-completion and avoiding having to apply .options piecewise. Note the use of | (inspired by the set union operator).
Although this style looks good to me for writing new code, there is the issue of naming your handles (i.ecurveopts and imageopts above). Note this is a problem we already face with the currently recommended dictionary + .options style of doing things.
The reason these handles are a pain is twofold:

You may not want to have temporary handles that you don't have semantically meaningful names for (or you aren't bothered to think of ones).
If we want to automatically convert the cell magics to this new style, an automated procedure won't be able to find good handle names that don't clash.

For this reason, I'm considering the idea that we could also support a method chaining approach that is equivalent to the | operator. This would reduce the need of n potential handles down to just one (called options below):
options = hv.opts.Image(cmap='hsv').Curve(color='green')
obj.options(options)

Here only the Image portion could tab complete correctly (but this wouldn't matter for an automated conversion from the magic syntax).
It is important to emphasise that the only reason to propose more ways of doing things is to slowly deprecate all the other ways (i.e document what we think is best). I really want new users see fewer ways of doing things.
As far as I can tell, this proposal allows for backwards compatibility, tab-completion and fewer constraints on the code structure for applying options. My main doubts are about naming the handles and whether the method chaining approach is worth supporting for this reason.

I'll also mention that this all works because we've standardized on the flat namespace for .options (ignoring the namespaces for plot, style, norm). This proposal could be extended to keep these namespaces e.g:
options = hv.opts.Image.style(cmap='hsv').hv.opts.Image.plot(invert_yaxis=True)

I do not propose we do this anytime soon though as this extra level of nesting is currently not needed as long as .options works (and you would need to switch to using .opts anyway).

Jean-Luc and I worked this proposal out on the whiteboard, and I think we're both happy that it satisfies all the goals we had.  It seems to me that it offers a way that we could (semi) automatically transform our existing docs into pure Python (to avoid confusing new users) while giving even pure-Python users the ability to have tab completion.  Hopefully @philippjfr agrees and we can finally address these issues!

One last thing is that I would personally like to move to a future where we don't need to keep qualifying with hv. In other words, I would like this style:
from holoviews import opts
curveopts = opts.Curve('Trajectory', 'Ball', color='green')
imageopts = opts.Image('ORMap', 'cmap='hsv')
(Image(...) * Curve(...)).options(curveopts | imageopts)

This is not something that would be possible converting old notebooks (opts is a common variable name right now) so I am happy qualifying the namespace for the time being.

I usually prefer to leave "hv." in my calls so that it's clear even from a tiny snippet where things like "opts" come from, but I think other people have are optimizing for different goals and so have a different opinion there.

(Image(...) * Curve(...)).options(curveopts | imageopts)

Presumably this call is the same as what I would think is clearer:
(Image(...) * Curve(...)).options(curveopts).options(imageopts)?
Personally, here I'd rather just pass them all in to .options() in such a case:
(Image(...) * Curve(...)).options(curveopts,imageopts)
Seems more self-evident than | does.  | seems helpful mainly at the top, though I'd argue for + so that one could do:
import holoviews as hv
opts  = hv.opts.Curve('Trajectory', 'Ball', color='green')
opts += hv.opts.Image('ORMap', 'cmap='hsv')
(Image(...) * Curve(...)).options(opts)

(Image(...) * Curve(...)).options(curveopts).options(imageopts)

I think this should work anyway, but I strongly dislike this style.

(Image(...) * Curve(...)).options(curveopts,imageopts)

I'm not hugely fond of this style but I see some advantages (e.g makes it easier to partially apply styles when you get round to calling .options). The main issue is you still that you have to name various handles.

opts  = hv.opts.Curve('Trajectory', 'Ball', color='green')
opts += hv.opts.Image('ORMap', 'cmap='hsv')

Now this suggestion I like as it only involves one handle. That said |= also exists even if it less familiar to people! :-)

The core of this proposal sounds reasonable to me, but personally I strongly prefer this spelling:
(Image(...) * Curve(...)).options(curveopts, imageopts)

I've become a lot more skeptical about operator overloading and think it should be used very sparingly. If I had to vote between + and | I'd also vote for + but at the same time I think it invites confusion with the layout composition operator.

(Image(...) * Curve(...)).options(curveopts, imageopts)

I would be ok with this if you didn't have to come up with temporary handle names for all the components.

Just brainstorming. How about:
opts  = [hv.opts.Curve('Trajectory', 'Ball', color='green'),
              hv.opts.Image('ORMap', 'cmap='hsv')]
(Image(...) * Curve(...)).options(opts)

The idea is options can take opts which is a single one of these option set objects or a collection of them.

If .options(curveopts, imageopts) is supported, that approach would work already if you spell it as .options(*opts).  I'm not sure it's worth adding support for providing lists of option objects, given all the other formats supported...

I think we should avoid the use of * and ** and we don't have any list formats to confuse it with.
More importantly, if the signature is based on *args then the base assumption is you are passing in N positional arguments (i.e handles as we want the declaration at the top). I think this isn't a bad approach where we can support any collection of these objects (except dictionaries which would take more handling to disambiguate).

.. although I feel like I would generally opt for giving them each a handle and passing them in as args.

These aren't exclusive options, I think we can still allow that style. The advantage of the list is for a more automated conversion of our old material where automatically generating handles is problematics. This list approach helps avoid that problem and I still don't think we should be using *opts much in our docs.

Fine by me; the list approach is succinct and doesn't require line continuation characters or intermediate handles, and if it can be opts instead of *opts without being ambiguous, then great!

This has now been implemented in https://github.com/ioam/holoviews/pull/3173.


[Bug] Starting with .27.x to .28 my phone seems to be very sporadic showing away/home

The problem
Since I upgraded the past 1-2 weeks to the version .27.x or .28, my main device my Samsung S22 phone, is very sporadic showing away and home.  Even though on my router network map, the devices show up.  I have an Asus RT-AX88U Pro.  I'm on the current Merlin version.  3004.388.5.  My Samsung, I'm using the phones MAC ID, not using the random MAC ID.  Was using this feature to determine when me and my wife are "Home" to enable certain automations.  Might have to look for other presence detection if I can't get this working.  It had been working for some time and just stopped working.   Thanks for your efforts on this HACS!
Your device model
RT-AX88U Pro
Firmware type
Merlin
Firmware version
3004.388.5
Integration version with the issue
.28 and .27x
Method of the integration installation
HACS
What version and type of Home Assistant installation do you use
2024.1.2
Is there anything useful in the logs?
Don't see anything in the logs.

Diagnostics information
No response
Additional information
No response

Some additional observations.  For connected devices, I took/have all the defaults.  I noticed that when I'm connected to my network, the integration seems pretty chatty.   Going from away to home and back and forth.  Seemed like in less than 10 minute intervals.   I changed my automations, that if my device is away for greater than 10 minutes to then set my Away toggle.    This seems to be working based on the chatter the integration is observing.

Hello. Sorry for the late reply.
Do you experience similar issues with any other network device?
Do you have this option turned on in the integration configs?  It's located in Configuration - Connected devices

Do you use Smart Connect in your router settings? If so, does your phone just connects / reconnects or does it also switch between the 2.4 and 5 GHz networks? You can check in the attributes of the device_tracker entity in HA

I have this happen for mine and my wife's Samsung Galaxy s22 phones.  I don't use any other devices for this, just our phones for home presence detection.  I had the Force clients update checked.  I unchecked it, but still do see the Home, then away going on and off, even though I'm still connected.   My router is not using Smart Connect.  I've got it working to some extent.  I'm accounting for this to be chatty.  So, I have a helper that toggles on, only if I'm away for more than 5 minutes.  That seems to work,, as it's chatty home/away for about 5 minutes(which means I'm still home and connected).  If I'm away for more than 5 minutes, then I'm really disconnected.  I don't think it's working as intended, but it's somewhat workable, although not as accurate as I would hope it to be.   My helper toggle home right away.  It's just the away I have to work to how this is currently working.  Any other suggestions is appreciated.


how to create more account

There is only 4 accounts of 3 types.

super user
citizen
police
Now if I want to promote someone to police from a citizen
Or create a new citizen ?

I though creating a new issue would be more nice

I'm new on blockchain, now I watched few videos and they seemed easy to me.
To understand it better, I'm playing with some blockchain repo, and the I found this :

It started with 3 accounts, how can I add more?
I was going through this repo : https://github.com/manki11/DIR_HashHacks/
And after running this, I got this.

Refer to Ganache configuration to add more accounts on startup.
Add new options with values "4", "5", ... here:

https://github.com/upperwal/OpenComplaintNetwork/blob/1fd7317b3948fa710fdbd6f2936b82ae761ceb4a/src/Components/Pages/View/view.js#L365-L368
https://github.com/upperwal/OpenComplaintNetwork/blob/1fd7317b3948fa710fdbd6f2936b82ae761ceb4a/src/Components/Pages/Register/register.js#L145-L148
Better if you can create a component around this UI.
If you follow these two steps the code will automatically detect the account using the following code.
https://github.com/upperwal/OpenComplaintNetwork/blob/1fd7317b3948fa710fdbd6f2936b82ae761ceb4a/src/Components/Pages/View/view.js#L173-L179

When I start truffle develop, and compile and migrate then I get these 10 accounts :
Accounts:
(0) 0xc96b6feba12d961dead3776e630b94c8fe705427
(1) 0x6b261680bf72efb69c902c24c3b63daeca4a6ba0
(2) 0x0c4016b523b2876785853803b76927b7adf30d21
(3) 0x362abb37aff6ff5714ed3b1366948d29bb8f467a
(4) 0xe62e83ca3cfa28cb26b5483a4dd8d91de624babb
(5) 0x623d9f864763eabba92d4c6f57a01a9ddcacdea9
(6) 0x237744b5cbd93fd043a126c8fea14f481a18df1e
(7) 0x5f272612a8019c7adfcf52d9851049a75f8932aa
(8) 0x35270c921bba10b2bb23849542304d3f26038534
(9) 0x0919fd2c289d8d563e7c4946086c3d7dd1e8123f

Can I somehow add more accounts ? More than 10 ?
Cause I tried adding in register.js :
<option value="0">Super User</option>
<option value="1">Police</option>
<option value="2">Citizen 1</option>
<option value="3">Citizen 2</option>
<option value="4">Citizen 3</option>
<option value="5">Citizen 4</option>
<option value="6">Citizen 5</option>
<option value="7">Citizen 6</option>
<option value="8">Citizen 7</option>
<option value="9">Citizen 8</option>
<option value="10">Citizen 9</option>
<option value="11">Citizen 10</option>
<option value="12">Citizen 11</option>

More options, but it seems it just picks the n-th account from those 10 accounts I mentioned here.
Works till Citizen 8.

There are only 10 account with index from 0 to 9. So it won't work beyond Citizen 8 which is assigned index 9.
You can follow this guide to increase the default account numbers: https://ethereum.stackexchange.com/questions/63600/get-more-than-10-accounts-in-the-truffle-develop-blockchain


Only lock application when sent to background

Hi,
I am currently using this library with these settings:
       LockManager<CustomPinActivity> lockManager = LockManager.getInstance();
       lockManager.enableAppLock(this, CustomPinActivity.class);
       lockManager.getAppLock().setLogoId(R.drawable.logo);
       lockManager.getAppLock().setFingerprintAuthEnabled(true);
       lockManager.getAppLock().setTimeout(5000);

With the timeout set to 5 seconds, the it prompts for the pin-code quite frequently. For example:
User is at Activity A for maybe 10 seconds, but when a button is clicked and app routes user to Activity B, the pin-code is prompted. Then he stays at Activity B for another 10 seconds, and then gets routed to Activity C and gets prompted again.
Is there a way to only lock the application for the following scenarios instead of prompting it at every activity if the timeout period is short?

When the user sent the application to background or terminates it
When the phone sleeps/dims due to inactivity

Hey @rachelfong
The goal of the timeout is actually to trigger the AppLockActivity if it timed out.
You can increase this duration I guess, and/or use the addIgnoredActivity to ignore activities you don't want to check for.
Cheers

I want same behaviour. And if I ignore activities B and C, when I spent 10 seconds on activity C and then return to A, pin code promted. If I increase timeout, pin code didn't promt after backgrounding app.


Close client when heartbeat executor closed

What changes are proposed in this pull request?
Please outline the changes and how this PR fixes the issue.
Why are the changes needed?
Please clarify why the changes are needed. For instance,

If you propose a new API, clarify the use case for a new API.
If you fix a bug, describe the bug.

Does this PR introduce any user facing changes?
Please list the user-facing changes introduced by your change, including

change in user-facing APIs
addition or removal of property keys
webui

@maobaolong Thanks for the contribution.
@yuzhu Would you mind taking a look?

alluxio-bot, merge this please


Nothing appears when drawing vertexes on the ImmediateGeometry node

Ubuntu 17.04 - Godot version: Godot 3 - Build: 0962871
Issue description:
The ImmediateGeometry node doesn't seem to be drawing any vertexes that have been set.

Probably Related to #9596

Closing as a duplicate of https://github.com/godotengine/godot/issues/9596


authentication via popup

Hi Aleksey,
how I should do to perform the authentication operation via a popup. For example, "facebook connect" via foursquare.com.
Thank you.
Nacer.

Hi Nacer!
You can use parameter display.
For pop-up you need webpopup value.
var client = new FoursquareClient(clientId, clientSecret);
client.Parameters = { {"display", "webpopup" } };
client.ReturnUrl = "";
client.Scope = scope;

Thank You! I fixed it in the FoursquareLogin form. (without creating a binary assemblies)

Hmm... webpopup does not always work correctly. Tests have shown that it is better to use the touch value.
FoursquareLogin updated

For web:
OAuthManager.RegisterClient
(
  "foursquare",
  "LHYZN1KUXN50L141QCQFNNVOYBGUE3G3FCWFZ3EEZTOZHY5Q",
  "HWXYFLLSS2IUQ0H4XNCDAZEFZKIU3MZRP5G55TNBDHRPNOQT",
  parameters: new NameValueCollection { {"display", "touch" } }
);

It seems that webpopup does not work due to the fact that Foursquare encodes the return url.
Mode touch and wap looks like as webpopup. You can use it.
If you need webpopup mode, it is possible to perform decoding html:
OAuthWeb.VerifyAuthorization(HttpUtility.HtmlDecode(Request.Url.ToString()));

I need more time to understand the causes of this problem and find a solution.

Many thank's Aleksey you for your answers,
I indicated  "foursquare.com" as an example of authentication with facebook, (No relation with Nemiro.OAuth).
On foursquare.com when the visitor clicks on the link "facebook connect" (copy1), a popup opens for authentication (copy2).
With Nemiro.OAuth, if I put a link on page for authentication with Facebook, and the visitor clicks on the link "FaceBook Connect" we can not have a popup for Facebook authentication, there is a redirect to the site facebook and we remain necessarily on the same page.
I think the visitor will better apreciate the first scenario. Do you have an idea to allow this.
I have to manage multiple templates for social authentication and your dll is timely and gives me a great great service.
The code I use :
<asp:LinkButton ID="btn_fb" runat="server" data-provider="facebook" Text="Facebook connexion" OnClick="social_Click" EnableViewState="False"></asp:LinkButton>
    protected void social_Click(object sender, EventArgs e)
    {
        _log.InfoFormat("*** Session/Client ID : {0} / {1}", Session["session_id"], Session["client_id"]);

        //_registred = OAuthManager.RegisteredClients;
        //OAuthManager.RegisteredClients.Clear();

        string str_provider = ((LinkButton)sender).Attributes["data-provider"]
            , str_client_id = get_client_id(str_provider)
            , str_client_secret = get_client_secret(str_provider)
            , str_return_url = get_return_url();

        Dictionary<string, OAuthBase> _registred = new Dictionary<string, OAuthBase>();
        _registred = OAuthManager.RegisteredClients;

        if (!_registred.ContainsKey(str_provider))
        {
            switch (str_provider.ToLower())
            {
                case "facebook":
                    FacebookClient _facebookcli = new FacebookClient(str_client_id, str_client_secret);
                    _facebookcli.Parameters.Add("display", "popup");
                    OAuthManager.RegisterClient(_facebookcli);
                    break;
                /*
                case "google":
                    GoogleClient _googlecli = new GoogleClient(str_client_id, str_client_secret);
                    ...
                    break;
                default:
                    break;
                 */
            }
        }

        OAuthWeb.RedirectToAuthorization(str_provider, str_return_url);
    }

Many thank's Aleksey.
Nacer.

code button
[<asp:LinkButton ID="btn_fb" runat="server" data-provider="facebook" Text="Connexion FaceBook" OnClick="social_Click" EnableViewState="False"></asp:LinkButton>]

<asp:LinkButton ID="btn_fb" runat="server" data-provider="facebook" Text="Connexion FaceBook" OnClick="social_Click" EnableViewState="False"></asp:LinkButton>

code linkButton
<asp:LinkButton ID="btn_fb" runat="server" data-provider="facebook" Text="Connexion FaceBook" OnClick="social_Click" EnableViewState="False"></asp:LinkButton>

FacebookClient _facebookcli = new FacebookClient(str_client_id, str_client_secret);
_facebookcli.Parameters.Add("display", "popup");
OAuthManager.RegisterClient(_facebookcli);

Register OAuth clients better once when the application starts (Application_Start handler in the Global.asax).
public class Global : System.Web.HttpApplication
{

  protected void Application_Start(object sender, EventArgs e)
  {
    OAuthManager.RegisterClient
    (
      "facebook",
      "1435890426686808",
      "c6057dfae399beee9e8dc46a4182e8fd",
      parameters: new NameValueCollection { { "display", "popup" } }
    );

    OAuthManager.RegisterClient
    (
      "foursquare",
      "LHYZN1KUXN50L141QCQFNNVOYBGUE3G3FCWFZ3EEZTOZHY5Q",
      "HWXYFLLSS2IUQ0H4XNCDAZEFZKIU3MZRP5G55TNBDHRPNOQT",
      parameters: new NameValueCollection { { "display", "touch" } }
    );
  }

}

This is the best solution.

we can not have a popup for Facebook authentication, there is a redirect to the site facebook and we remain necessarily on the same page

This can be done with JavaScript. The easiest way to use the HyperLink.
<asp:HyperLink
  NavigateUrl="~/RedirectToAuth.aspx?provider=facebook"
  onclick="return Popup(this.href);"
  ID="btnFacebook"
  runat="server"
  Text="[Connexion FaceBook]"
  EnableViewState="False"
/>

<script type="text/javascript">
	function Popup(url, width, height) {
		if(width == undefined || !width) { width = 550; }
		if(height == undefined || !height) { height = 450; }
		var x = (screen.width - width) / 2;
		var y = (screen.height - height) / 2;
		window.open
		(
			url, '_blank',
			'toolbar=no,status=no,resizable=yes,' +
			'scrollbars=yes,width=' + width + ',height=' + height +
			',left=' + x + ',top=' + y
		);
		return false;
	}
</script>

On the page RedirectToAuth.aspx specify the code redirecting to provider.
protected void Page_Load(object sender, EventArgs e)
{
  if (String.IsNullOrEmpty(Request.QueryString["provider"]))
  {
    throw new ArgumentNullException("provider");
  }

  // build callback url
  string returnUrl = new Uri(Request.Url, "ExternalLoginResult.aspx").AbsoluteUri;
  // pop-up indicator for JavaScript code
  if (returnUrl.IndexOf("?") != -1)
  {
    returnUrl += "&";
  }
  else
  {
    returnUrl += "?";
  }
  returnUrl += "popup=true";

  // redirect to authorization page of the specified provider
  OAuthWeb.RedirectToAuthorization(Request.QueryString["provider"], returnUrl);
}

On the ExternalLoginResult.aspx you can check pop-up indicator and close pop-up window.
<script type="text/javascript">
	if (window.location.search.indexOf('popup=true') != -1) {
		window.close();
	}
</script>

Or reaload in main window:
<script type="text/javascript">
	if (window.location.search.indexOf('popup=true') != -1) {
		// reload main window
		window.opener.location = window.location;
		// close pop-up
		window.close();
	}
</script>

I added a sample project: AspWebFormsPopup.

Thank you Aleksey , it's more that I need :)
I have a question:
I have to make a single interface to manage different customers, each customer has a facebook account, a google account ... (each customer has a wifi zone in its local offering visitors a wifi access by hotspot captive portal, visitors must authenticate by facebook or google ... to access the Internet ...).
I'm in a situation where I need handle multiple facebook accounts, google accounts ... (multiple ApplicationId and ApplicationSecret).
if "Register OAuth clients better once when the application starts (Application_Start handler in the Global.asax)". is there a way to modify "ApplicationId" and  "ApplicationSecret" dynamically.
Is it okay to proceed as follow (in RedirectToAuth.aspx.cs)
...
string provider = Request.QueryString["provider"]
, client_id = get_client_id(provider, Session["client_id"])
, client_secret = get_client_secret(provider, Session["client_id"])
, return_url = get_return_url(Session["client_id"]);
	OAuthManager.RegisteredClients.Clear();

	switch (provider)
            {
                   case "facebook":
			OAuthManager.RegisterClient
			(
			  "facebook",
			  client_id,
			  client_secret,
			  parameters: new NameValueCollection { { "display", "popup" } }
			);

		case "google":
		...
	}

	OAuthWeb.RedirectToAuthorization(provider, return_url);

Many thank's Aleksey.
Nacer.

It's harder :-)
The RegisterClient does not allow to do it. You can register only one client with the same name.
You will have to make their own manager.
I made a sample project: AspNetWebFormsMulticlients.
I added the ability to group clients.
Registration will still be carried out ONLY ONCE when the application starts (in Global.asax).
CustomOAuthManager.RegisterClient
(
  "default", // group name
  "facebook",
  "1435890426686808",
  "c6057dfae399beee9e8dc46a4182e8fd"
);

CustomOAuthManager.RegisterClient
(
  "popup", // other group name
  "facebook",
  "1435890426686808",
  "c6057dfae399beee9e8dc46a4182e8fd",
  parameters: new NameValueCollection { { "display", "popup" } }
);

You can specify a group in the link:
<asp:HyperLink
  NavigateUrl="~/RedirectToAuth.aspx?provider=facebook&group=default"
  ID="btnFacebook"
  runat="server"
  Text="Default"
  EnableViewState="False"
/>

<asp:HyperLink
  NavigateUrl="~/RedirectToAuth.aspx?provider=facebook&group=popup"
  ID="btnFacebook2"
  runat="server"
  Text="Pop-up"
  EnableViewState="False"
/>

And redirect the user to an authentication page:
CustomOAuthWeb.RedirectToAuthorization
(
  Request.QueryString["group"],
  Request.QueryString["provider"],
  returnUrl
);

I hope it will help you.
I will try to implement the grouping in the next version of the library. I need more time to find the optimal solution.
Thank you for the idea!

Thank you Aleksey for your response.
That's great great great, CustomOAuthManager.RegisterClient is enough in my case and solve my situation,
I can identify the customer by id passed in the url of the hotspot.
eg  Customers connects to captive portal page template like:
Customer_1	http://www.sitedemo.com/splash.html?id=Customer_1&....
Customer_2 	http://www.sitedemo.com/splash.html?id=Customer_2&...
...
Customer_n	http://www.sitedemo.com/splash.html?id=Customer_n&...

Customer_n		foursquare	Customer_n_frsq_id		Customer_n_frsq_secret

And in Global.asax/Application_Start
CustomOAuthManager.RegisterClient
(
  "Customer_1",
  "facebook",
  "Customer_1_fb_id",
  "Customer_1_fb_secret"
  ...
);

CustomOAuthManager.RegisterClient
(
  "Customer_2",
  "facebook",
  "Customer_2_fb_id",
  "Customer_2_fb_secret"
  ...
);

...

CustomOAuthManager.RegisterClient
(
  "Customer_n",
  "facebook",
  "Customer_n_fb_id",
  "Customer_n_fb_secret"
  ...
);

CustomOAuthManager.RegisterClient
(
  "Customer_1",
  "foursquare",
  "Customer_1_fb_id",
  "Customer_1_fb_secret"
);

CustomOAuthManager.RegisterClient
(
  "Customer_2",
  "foursquare",
  "Customer_2_fb_id",
  "Customer_2_fb_secret"
  ...
);

...

CustomOAuthManager.RegisterClient
(
  "Customer_n",
  "foursquare",
  "Customer_n_fb_id",
  "Customer_n_fb_secret"
  ...
);

In Global.asax/Session_Start, I identify may customer, and in template captive portal, I have only one facebook button, one foursquare button.
I think that for a better understanding, you can name "group name" by "client name" or "Relying Party (RP) name"; http://openid.net/specs/openid-connect-basic-1_0.html. We can have multiple "client" or "Relying Party (RP)" with the same "Open Provider OP".
I begin in the next two weeks the integration in a test environment, and will keep you informed.
It is I who thank you Aleksey.
Many thank's.

In the version 1.8 added the ability to specify the names of clients.
The release is made. You can download the update.
// standard
OAuthManager.RegisterClient
(
  "facebook",
  "Customer_1_fb_id",
  "Customer_1_fb_secret"
);

// with client name
OAuthManager.RegisterClient
(
  "Customer_2",
  new FacebookClient
  (
    "Customer_2_fb_id",
    "Customer_2_fb_secret"
  )
);

// or
var name = ClientName.Create("Customer_3", "Facebook");
OAuthManager.RegisterClient
(
  name,
  "Customer_3_fb_id",
  "Customer_3_fb_secret"
);

// or
OAuthManager.RegisterClient
(
  ClientName.Create("Customer_4", "Facebook"),
  "Customer_4_fb_id",
  "Customer_4_fb_secret"
);

// or a single line through the slash (I did not document this way)
OAuthManager.RegisterClient
(
  "Customer_5/facebook",
  "Customer_5_fb_id",
  "Customer_5_fb_secret"
);

For links, you can use ClientName as string:
<asp:HyperLink
  NavigateUrl="~/RedirectToAuth.aspx?provider=facebook"
  ID="linkFacebook"
  runat="server"
  Text="Facebook 1"
  EnableViewState="False"
/>

<asp:HyperLink
  NavigateUrl="~/RedirectToAuth.aspx?provider=Customer_2/facebook"
  ID="linkFacebook2"
  runat="server"
  Text="Facebook 2"
  EnableViewState="False"
/>

or programmatically:
ASPX
<asp:HyperLink
  ID="linkFacebook3"
  runat="server"
  Text="Facebook 3"
  EnableViewState="False"
/>

C#
var name = ClientName.Create("Customer_3", "Facebook");
linkFacebook3.NavigateUrl = String.Format
(
  "~/RedirectToAuth.aspx?provider={0}",
  name
);

// or hash
linkFacebook3.NavigateUrl = String.Format
(
  "~/RedirectToAuth.aspx?provider={0}",
  name.Hash
);

// or split
linkFacebook3.NavigateUrl = String.Format
(
  "~/RedirectToAuth.aspx?provider={0}&clientName={1}",
  name.ProviderName,
  name.Key
);

// or split without ClientName class
linkFacebook3.NavigateUrl = String.Format
(
  "~/RedirectToAuth.aspx?provider={0}&clientName={1}",
  "Facebook",
  "Customer_3"
);

// etc.

Display a list of all clients (aspx):
<%foreach (var name in Nemiro.OAuth.OAuthManager.RegisteredClients.Keys) {%>
<a href="<%=ResolveUrl(String.Format("~/RedirectToAuth.aspx?provider={0}", name.Hash))%>">
<%=name.ProviderName%> (<%=name.Key%>)
<%}%>


Allow staff to delete any comment

https://www.pivotaltracker.com/story/show/150863172

          1 Message

:book:
Nice, more deletions than insertions :red_circle:

  Generated by :no_entry_sign: Danger

The error is a linting error:
/home/travis/build/ello/webapp/src/selectors/comment.js
  73:1  error  Line 73 exceeds the maximum line length of 100  max-len

Might not hurt to add a test for this as well..


add filter for non-rag model

Remove redundant codes in qwen and chatglm wrapper.

@eaidova could you help to check, thanks


Extracting Frames

Frames need to be extracted such that they follow the following criteria

[x] Need to be clear or less blurry
[ ] If there are no clear frames for more than 150 frames (5 sec considering the video is 30fps), then we need to take the best frame out of the burry 150 frames.

This issue has become redundant, following the change from Videos to GoPro images for each transect. But the first part of this issue has been solved ie. the blurry detection of image frames from the GoPro data.


ISPN-10330 BasicComponentRegistryImpl.findFactory() concurrency issue

https://issues.jboss.org/browse/ISPN-10330
Backport of https://github.com/infinispan/infinispan/pull/7071

CI failure appears to be unrelated with thread leak.

Integrated into 9.4.x, thanks @danberindei !


Gun resizes with player

Hey so my gun(cube) is resizing when I crouch, but in your tutorials it doesnt. ANY WAY I COULD FIX THAT?

There is an easy fix i put the orientation and the player camera inside the Player Game Object Remove The Camera From The Player And Copy This Code Into A C# Script And Name The Script CameraController And Put The Script Onto The Camera
using UnityEngine;
public class CameraController : MonoBehaviour {
 public Transform Player;

 private void Update () {
 transform.position = Player.position;
 }

}

can you help me it doesn't work


fix lastname processing return; disable debug printing: add some common abbreviation for givennames.

Fix lastname processing return to fix truncation of data.
Disable debug printing, until we have argv support, to make performance great again.

stats:
records: input 1451073 -> output 163419 = 11%
family names: total 496063; known: 237771 = 48%
firstnames: total 591416; known: 289955 = 49%
records: input 1451073 -> output 304299 = 21%
family names: total 496063; known: 237771 = 48%
firstnames: total 799970; known: 548084 = 69%

It might be good to keep the abbreviations in a separate file, with their potential expansions. For example, when eventually implementing search over this data, some mapping of abbreviations to expanded string would be super useful. Let me give it a try in a follow-up change.

Thanks! I added them there since givennames.csv is already polluted - but I
too thought this is odd. (Another observation: dupes).
Splitting them out will also make it more straightforward to resolve clear
1:1 match abbrvs).
Sascha Brawer - notifications at github.com <
@.***> schrieb am
Mo., 15. Mai 2023, 14:40:

It might be good to keep the abbreviations in a separate file, with their
potential expansions. For example, when eventually implementing search over
this data, some mapping of abbreviations to expanded string would be super
useful. Let me give it a try in a follow-up change.
—
Reply to this email directly, view it on GitHub
https://github.com/brawer/bern-addresses/pull/10#issuecomment-1547787456,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A7ZVME5LNGUEAKMRWFD2Q4TXGIP2HANCNFSM6AAAAAAYBLFAQY
.
You are receiving this because you authored the thread.Message ID:
@.***>


Link visit to lab request

Scenario
AS
A user who can create a lab requeset
I WANT
The ability to a visit to the request
SO THAT
I can understand more about why the request is happening
Acceptance Criteria
GIVEN
A lab request is being made
WHEN
I'm on the lab request screen
THEN
I would to select an visit from the a dropdown
Related Issues
Technical Notes

After a patient is selected then the visit dropdown should be populated with visists for that patient
Visists should be sorted by date, with the most recent visit at the top of the list.
The patient field and visit field should appear in the same row in the form

To whom it may concern,
I would like to work on this issue. Please assign me to it.
Best regards,
Yoseph

@yosephAHMED I've assigned this to you.

To whom it may concern,
I opened a pull request for this issue. Thank you for the opportunity.
Best,
Yoseph Ahmed

@jackcmeyer I'd be happy to take this on!

Should the visit option be required? Linking a visit is required for Imaging Requests, for example.

@fox1t can you answer?


tfm: Fix board selection for Musca B1 board

Fix board selection for Musca B1 board.
The platform path in TF-M was changed in the TF-M 1.7.0 update.

@d3zd3z @microbuilder Just a heads up that build for the ARM ns boards does not automatically enable TF-M.
So west build -b v2m_musca_b1_ns samples/hello_world compiles the application for "non-secure", but if you flash it you will run it as secure. There is a second image required, and up to the user to figure this out.
For the nRF non-secure boards we auto-enable TF-M when supported.


Add GitHub Actions to deploy release to prod, PRs to preview environments, and destroy preview environments

what

Add GitHub Actions to deploy releases to prod, PRs to preview environments, and destroy the preview environments
The actions authenticate to AWS to deploy to the S3 buckets using the provisioned GitHub OIDC providers in the corresponding AWS accounts
In the GitHub action, check for PR label website-no-deploy and don't deploy to the preview environment if the label is present (allows pushing many commits to the PR w/o triggering unnecessary deployments)

why

Deploy to production site https://atmos.tools when a GitHub release is published
Deploy a PR to the dev site preview environment (with the URL like https://pr-1.atmos-docs.ue2.dev.plat.cloudposse.org)
Destroy the preview environment (the PR folder in the S3 origin bucket) when the PR is closed or merged

deployment

https://pr-152.atmos-docs.ue2.dev.plat.cloudposse.org/

@aknysh should this be a no-release since it's not a change to atmos itself ?


Update for ex_doc 0.29.1

There was a compatibility break on an API zigler relies on.
Currently, zigler allows any ex_doc above > 0.23, which includes versions with 2 different APIs.
This PR supports only versions above 0.29.1, where the API is consistent.

NB: this system will be changed in 0.10


Not able to get score

Hi,
I am trying to get score->currentMap / mapScores data, but without any success. I am using
sb.on('score', function(data) {
    console.log('currentCtScore:', data.mapScores.currentCtScore);
});

Any ideas? thanks in advance.

Could you print out your data object? HLTV may have changed up their responses, in which case I'll update the README with the appropriate responses.

I can print other elements like roundEnd, kill, roundStart, but no idea about score.

If you just print the data object, though, what shows up?

I tried
`sb.on('score', function(data) {
console.log('data:', data);
});`
but nothing. when is the score triggered?

It should be triggered after every round end. I'll see if HLTV changed anything.

Thanks, would be very helpful.

It seems that the score event is not used anymore, and now scoreboard is emitted solely. I will probably remove the score event as I want this to be a wrapper for HLTV, so I would suggest using the scoreboard event. I will also add a getScore() method so that the score can be easily retrieved.

Any update on this?

@colealanroberts I actually just finished testing it out today - will push the code.


docs: update setup-vagrant.md documentation

Updated setup-vagrant.md documentation to include VirtualBox installation error in macOS (sierra and mojave) and it's solution before setting and running vagrant.

@aero31aero thanks for review. I'll make the necessary commit subject line changes.

@aero31aero i have re-based the branch from master.
Is anything else required from my side ?
thanks again.

No its all good. Now you just have to wait for a final review from Tim and he can then merge the PR if no more changes are needed. You can proceed to work on other issues in the meantime. :slightly_smiling_face:

Closing as we now recommend Docker rather than VirtualBox on macOS.


Azure MySql get-rows always gives a 400

Describe the Bug with repro steps
The Get rows action for the Azure MySql connector always returns a bad request error: the formatted path is /datasets/default,mydatabase/tables/mytable/items , yet the response is always Invalid Table Name format:mytable. Tested on a Logic App, against a MySql flexible instance in a private network (connection was created with Service Connector).
What type of Logic App Is this happening in?
Standard (Portal)
Are you using new designer or old designer
New Designer
Did you refer to the TSG before filing this issue? https://aka.ms/lauxtsg
Yes
Workflow JSON
{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "Call_a_local_function_in_this_logic_app": {
                "inputs": {
                    "functionName": "GooddataDashboardQueries",
                    "parameters": {
                        "dryRun": false
                    }
                },
                "runAfter": {},
                "type": "InvokeFunction"
            },
            "Get_rows": {
                "inputs": {
                    "host": {
                        "connection": {
                            "referenceName": "azuremysql"
                        }
                    },
                    "method": "get",
                    "path": "/datasets/@{encodeURIComponent(encodeURIComponent('default'))},@{encodeURIComponent(encodeURIComponent('mydatabase'))}/tables/@{encodeURIComponent(encodeURIComponent('mytable'))}/items"
                },
                "runAfter": {
                    "Call_a_local_function_in_this_logic_app": [
                        "SUCCEEDED"
                    ]
                },
                "type": "ApiConnection"
            },
            "Response": {
                "inputs": {
                    "body": "@body('Call_a_local_function_in_this_logic_app')",
                    "statusCode": 200
                },
                "kind": "http",
                "runAfter": {
                    "Get_rows": [
                        "SUCCEEDED"
                    ]
                },
                "type": "Response"
            }
        },
        "contentVersion": "<IP_ADDRESS>",
        "outputs": {},
        "triggers": {
            "When_a_HTTP_request_is_received": {
                "kind": "Http",
                "type": "Request"
            }
        }
    },
    "kind": "Stateful"
}

Screenshots or Videos
No response
Browser
Chrome
Additional context
Additionally, the editor does not show an outputs field, so even if I were able to collect the rows from the query, I would not know how to forward them to a blob etc.
AB#25269357

@rvvincelli - Which connector are you selecting from operations list, do you mind posting a screenshot?


How to play sound from network?

Hi everyone,
I would like to know how to play a sound from a given url
I'm trying to run the following method which runs a local file and it also doesn't work
var whoosh = new Sound('advertising.mp3', Sound.MAIN_BUNDLE, (error) => {
  if (error) {
    console.log('failed to load the sound', error);
    return;
  }
  // loaded successfully
  console.log('duration in seconds: ' + whoosh.getDuration() + 'number of channels: ' + whoosh.getNumberOfChannels());
});

function onPlaySound() {
  console.log('Sound started playing!');
  whoosh.play((success) => {
    if (success) {
      console.log('successfully finished playing');
    } else {
      console.log('playback failed due to audio decoding errors');
    }
  });
}

Would be grateful if someone could provide me with an example of how to run an mp3 from a url

Android acquiescence can, ios seems to be being error

You must wait until the sound is loaded. The best way I found was to start playing in the oncomplete handler:
    const sound = new Sound('https://s3.amazonaws.com/hanselminutes/hanselminutes_0001.mp3',
      undefined,
      error => {
        if (error) {
          console.log(error)
        } else {
          console.log("Playing sound");
          sound.play(() => {
            // Release when it's done so we're not using up resources
            sound.release();
          });
        }
      });
  }

Try this, inside your component
  _loadAudio = () => {
    const sound = new Sound(
      'https://s3.amazonaws.com/hanselminutes/hanselminutes_0001.mp3',
      undefined,
      (error) => {
        if (error) {
          console.log(error);
        } else {
          console.log('Playing sound');
          sound.play(() => {
            sound.release();
          });
        }
      }
    );
  };

  _componentDidMount = () => {
    this._loadAudio();
  };

Is it possible to load sound from a network with headers for authentication to access that site?


Activate HeartbeatMonitor even before Marathon is connected to Mesos (#6347)

Summary:
Fixes a rare bug where Mesos scheduler driver is hanging while connecting to Mesos. This change
will make sure that the HeartbeatMonitor is active and has a chance to kill Marathon.
Additionally, some unused code was removed from the HeartbeatMonitor specifically the Reactor.Decorator.
JIRA: MARATHON-8304, COPS-3413
(cherry picked from commit 3fb760f9c17267b67b50718e95400e0123a808eb)

yar


Files window limited to 20 scrolls?

Is there a limit to files window?
I'm missing some files in this list
https://app.wandb.ai/yaroslavvb/Transformer-XL source code/runs/g6u4zz20/files

Uhm ... the files are still missing :P

Apologies! This automerged when I merged a fixing PR in our private repo. We'll get a deploy out shortly, and then your missing files will be back.


Remove deprecated doc on Topology-aware traffic routing with topology keys

Resolves #40600
Additional Context

Looks like the Service topologyKeys field has been deprecated and removed since Kubernetes v1.21. Refer the PRs below:

https://github.com/kubernetes/kubernetes/pull/96736
https://github.com/kubernetes/kubernetes/pull/102412

Based on the above info the related documentation has been removed as part of this PR.

The references to the delete doc has either been removed or changed the link to static text as part of this PR.

/assign @reylejano

/sig network

Not sure this feature is gone or if the feature has graduated from alpha.

Hi, @dipesh-rawat
Checking on the latest comment. Is the feature in the alpha stage or removed?

From what I could find in https://github.com/kubernetes/kubernetes/pull/96736 and https://github.com/kubernetes/kubernetes/pull/102412, it appears that the feature has been deprecated. The initial issue was raised in response to comment  k/wesbite-PR#40069.
@robscott could you please help us to confirm and verify whether the feature has indeed been deprecated and removed, allowing us to safely remove the accompanying documentation.

@dipesh-rawat rather than picking one maintainer and nudging them, there's another approach that works well:
ask on Slack (https://kubernetes.slack.com/messages/sig-network). That way, you can get a response on behalf of the SIG, not just from one individual.
If you're not already signed up, visit Join Kubernetes on Slack.

Thanks @dipesh-rawat! LGTM for sig-network.
/lgtm


[Cordova] Implement app_version cmd for Cordova build

Impacted tests(approved): new 0, update 1, delete 0
Unit test platform: Crosswalk Project for android 19.48.483.0
Unit test result summary: pass 1, fail 0, block 0
https://crosswalk-project.org/jira/browse/XWALK-6220

@ibelem Pls review it

@Honry Pls review it

LGTM


[Slack] Search message - Scope error

Extension
https://www.raycast.com/mommertf/slack
Raycast Version
1.87.4
macOS Version
15.1.1 (24B91)
Description
I try to follow this description but get a error on "Search Message":
The error is
Missing Scopes
Please make sure your Slack app has all of the
required scopes.
"Open channel" and others is working fine.
In general it seems like the README.md is not up to date with Slack's website.

Steps To Reproduce

Follow readme file
Go to "Search message"

Current Behaviour
Error mention look at the scope setting for the Slack App.
Expected Behaviour
Being able to search for Slack messages.

@boje-velux-ext If you have recently started using the Slack extension for Raycast, would you mind authenticating through OAuth instead of access token? With OAuth, we manage the scopes in the code, so that the users won't need to maintain scopes.

@jfkisafk the fix was to reinstall the Slack extension. Then I got prompted to OAuth and now the "search message" works


Main window and fonts suggestion

Here comes my first suggestion
When I started your app for the first time, I was surprised that my firewall asked me to allow access to some external sites. When I checked the logs, I could see that this is because you are loading Google fonts from external sites. Because of GDPR or similar compliance initiatives, you should provide GDPR-compliant fonts. For example, Bunny Fonts are good drop in replacement fonts which are GDPR-compliant
https://fonts.bunny.net/about
Maybe it would be a good idea to either include those fonts into the package or use some other font. Your app won't be able to work correctly without internet connection and sometimes during the recording, that is exactly what is needed, in order to minimize annoyances 😀
Also, it would be great if you could provide a parameter to disable background animation in the main app window
To summarize:

remove the requirement to load google fonts and replace them with GDPR-compliant fonts
disable or provide a way to disable background animation

Thank you in advance!
Regards,
Igor

These are very useful feedback @mihha.
I'll address them in the upcoming release and the main window will dock on the Windows 10 tray so it doesn't take the whole screen with the option to pop it back up if you want.
Also, I'm considering adding a couple of features to floatcam. Can you please help fill this out? And share what features you'd like to see added
Thanks.

Done as requested
Thank you for useful app


Fix dangerous card detection

In game are 3 cards with number 1. Dangerous detection was looking only for one in discard pile.

Thanks for the fix and sorry for the late merge! 🙏
BTW I finally fixed the deployment and released the Slovak translations :)


How to handle limits and order in mysql?

Maybe someone has working example?
THanks

We are working on offset/limit. What are you still missing in order handling?

Its good. But now I am not working on graphql project. Maybe come back later.


Upload components to the service

This PR is an example of how components may be uploaded to the Espressif Components Service,
Only 2 components are uploaded with this PR:

json_generator
json_parser

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@shahpiyushv I set versions to 0.1.0, also I didn't set the correct token yet, to avoid accidental upload.
An example workflow with upload to staging is here:
https://github.com/kumekay/esp-rainmaker/runs/2612669121?check_suite_focus=true
https://components.dev.espressif.tools/search/json


Starman speed correct?

HI djtimca,
First of all, BIG thank you for this! Its so awesome :) I installed and configured it. Thank you!
I was just wondering. The starman speed shows 4094 km/h. Have i done something wrong?
Thanks.
-asemev

That's the same value I have so I'm not sure.

ok thanks. Which API are the data coming from?

looking at this API, the speed is over 109,278 kmh...
https://api.spacexdata.com/v2/info/roadster

This also:  https://api.spacexdata.com/v3/roadster

@asemev This uses the version 4 API: https://api.spacexdata.com/v4/roadster. The data from version 3 hasn't been updated since November 2020. What is shown in Home Assistant matches the v4 data.


⚠ Site ANTS has degraded performance

In 09cb78b, Site ANTS (https://ants.gouv.fr) experienced degraded performance:

HTTP code: 200
Response time: 10895 ms

Resolved: Site ANTS performance has improved in 7d504c3.


playonlinux can't find libgobject

Issue description
added playonlinux  to systempackages. running playonlinux form the terminal gives this output
Looking for python... 2.7.11 - wxversion(s): 2.8-gtk2-unicode
Traceback (most recent call last):
  File "/nix/store/1n29m7iq3szxhxwydvrvqmjbhg2apvji-playonlinux-4.2.9/share/playonlinux/python/check_python.py", line 7, in <module>
    import wx
  File "/nix/store/830m9na34q830g085bz7970n8fpisvvb-wxPython-<IP_ADDRESS>/lib/python2.7/site-packages/wx-2.8-gtk2-unicode/wx/__init__.py", line 45, in <module>
    from wx._core import *
  File "/nix/store/830m9na34q830g085bz7970n8fpisvvb-wxPython-<IP_ADDRESS>/lib/python2.7/site-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 4, in <module>
    import _core_
ImportError: libgobject-2.0.so.0: cannot open shared object file: No such file or directory
failed tests
Looking for python2.7... 2.7.11 - wxversion(s): 2.8-gtk2-unicode
Traceback (most recent call last):
  File "/nix/store/1n29m7iq3szxhxwydvrvqmjbhg2apvji-playonlinux-4.2.9/share/playonlinux/python/check_python.py", line 7, in <module>
    import wx
  File "/nix/store/830m9na34q830g085bz7970n8fpisvvb-wxPython-<IP_ADDRESS>/lib/python2.7/site-packages/wx-2.8-gtk2-unicode/wx/__init__.py", line 45, in <module>
    from wx._core import *
  File "/nix/store/830m9na34q830g085bz7970n8fpisvvb-wxPython-<IP_ADDRESS>/lib/python2.7/site-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 4, in <module>
    import _core_
ImportError: libgobject-2.0.so.0: cannot open shared object file: No such file or directory
failed tests
Looking for python2.6... which: no python2.6 in (/nix/store/fyhkq4h356cfpnaxgglphxhgrlawva7s-cabextract-1.6/bin:/nix/store/ccmyi36pqr600f2bq7nivbahnczkfqf3-python-2.7.11/bin:/nix/store/s6z1y55yaic8vyfkpa92q7ybyzrkwkdl-gettext-0.19.7/bin:/nix/store/vzz1j63w5vs4iqydbyq606jxwdgq3cpc-glxinfo-8.1.0/bin:/nix/store/1pv8z79v2cii2yqgg2jhr7m1bs7bb89j-gnupg1compat-0/bin:/nix/store/wr3vp60m2iajm1dqmfwdq6nkkajay857-icoutils-0.31.0/bin:/nix/store/9jsmiibvlxkrl7mwvp993dj2w6zsc9cw-imagemagick-6.9.2-0/bin:/nix/store/dm6x6i27p88cqdmr705gbr1cisy7j9l6-netcat-gnu-0.7.1/bin:/nix/store/8sh5vy2cav8ngdv7rdis2nl2j251l3jp-p7zip-9.38/bin:/nix/store/73n658r4lkdxn1460zgfyypxad7bnj12-unzip-6.0/bin:/nix/store/mfji387mbxrs9x6hwixfknr6qhnm768k-wget-1.17.1/bin:/nix/store/fa3h51605pqsw6yaij6k4c9g6vc7nw4d-wine-1.8.1/bin:/nix/store/9i4d67ngqsw50c68j8jymy9clz8r4r0h-xdg-user-dirs-0.15/bin:/nix/store/gmki25inmk8dn0lrf34x2pcc7inymc60-xterm-320/bin:/nix/store/pxmb3i6anrh86rwsr1f58h52imd4p2rg-which-2.21/bin:/nix/store/yd4bk6biwjiinzi96kwx4wiaxjnrz8sl-curl-7.47.1/bin:/root/bin:/var/setuid-wrappers:/root/.nix-profile/bin:/root/.nix-profile/sbin:/root/.nix-profile/lib/kde4/libexec:/nix/var/nix/profiles/default/bin:/nix/var/nix/profiles/default/sbin:/nix/var/nix/profiles/default/lib/kde4/libexec:/run/current-system/sw/bin:/run/current-system/sw/sbin:/run/current-system/sw/lib/kde4/libexec)

Looking for python2... 2.7.11 - wxversion(s): 2.8-gtk2-unicode
Traceback (most recent call last):
  File "/nix/store/1n29m7iq3szxhxwydvrvqmjbhg2apvji-playonlinux-4.2.9/share/playonlinux/python/check_python.py", line 7, in <module>
    import wx
  File "/nix/store/830m9na34q830g085bz7970n8fpisvvb-wxPython-<IP_ADDRESS>/lib/python2.7/site-packages/wx-2.8-gtk2-unicode/wx/__init__.py", line 45, in <module>
    from wx._core import *
  File "/nix/store/830m9na34q830g085bz7970n8fpisvvb-wxPython-<IP_ADDRESS>/lib/python2.7/site-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 4, in <module>
    import _core_
ImportError: libgobject-2.0.so.0: cannot open shared object file: No such file or directory
failed tests
Please install python before trying to run this program

Steps to reproduce
install playonlinux and try to run from terminal
Technical details

System: 16.03.503.3f96280 (Emu)
Nix version: nix-env (Nix) 1.11.2
Nixpkgs version: 16.03.503.3f96280

Error also occurs on very recent master.

This is an error with wxPython in general, not just with playonlinux.  All wxPython packages are (presumably) currently broken at runtime.

why would wxpython not be able to find gobject?

@Twey based on this  #13956

That bug was closed a month ago, but I was still having the issue with HEAD a week and a half ago, so I don't think it's the same bug.

a simpler repro is
[anders@gurney:~]$ nix-build -E 'with import <nixpkgs> { }; python.buildEnv.override { extraLibs = [ pythonPackages.wxPython28 ]; }'
/nix/store/mksl7hn3kzgjsdid9340ll8cvdwk9hd3-python-2.7.11-env

[anders@gurney:~]$ echo import wx | ./result/bin/python
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/nix/store/mksl7hn3kzgjsdid9340ll8cvdwk9hd3-python-2.7.11-env/lib/python2.7/site-packages/wx-2.8-gtk2-unicode/wx/__init__.py", line 45, in <module>
    from wx._core import *
  File "/nix/store/mksl7hn3kzgjsdid9340ll8cvdwk9hd3-python-2.7.11-env/lib/python2.7/site-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 4, in <module>
    import _core_
ImportError: libgobject-2.0.so.0: cannot open shared object file: No such file or directory

another note: setting LD_LIBRARY_PATH=${pkgs.glib.out}/lib fixes this issue, however I'm not quite sure what the best way is to incorporate that into the wxPython derivation. Adding glib.out to buildInputs or propagatedBuildInputs doesn't fix it.

_core is indeed not having a path to the library, just having the name of it.
We should likely just patch the source and replace any reference to this library with the full path. This is done more often in python-packages.nix, though mostly when cffi is used.
See https://github.com/NixOS/nixpkgs/issues/7307

patchelf maybe?

I think we should be able to patch _core.so or else wrap the playonlinux binary with a wrapper where we set  LD_LIBRARY_PATH.

A workaround would be building playonlinux against wxPython30. This produces a working package. However wxPython28 remains broken.

If POL works with wxPython30 then that's a good solution. There aren't many packages left using wxPython28 so hopefully soon we can get rid of it then.


chore: upgrade to ws 7.46

Description
resolves https://www.npmjs.com/advisories/1748
Checklist:

[x] All new and existing tests are passing.

Codecov Report

Merging #9368 (5f081cc) into dev (b9bfb9d) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##              dev    #9368   +/-   ##
=======================================
  Coverage   65.14%   65.14%
=======================================
  Files          94       94
  Lines        4106     4106
  Branches     1124     1124
=======================================
  Hits         2675     2675
  Misses       1153     1153
  Partials      278      278

Flag
Coverage Δ

unittests
65.14% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out 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 b9bfb9d...5f081cc. Read the comment docs.

~> #9299

#9299


twirlIvyDeps don't align with twirl dependencies on scala 3

The default twirlIvyDeps refer to scala-parser-combinators:1.1.2 but in the latest twirl 1.6 milestone/RC releases, they've updated to use scala-parser-combinators:2.1.0 when on scala 3.
This causes a resolution error that can't be fixed just by adding the correct scala-parser-combinators version to ivyDeps. I was able to resolve this by overriding twirlIvyDeps in my build.sc

Looks like we need the same switch based on the twirl version as in the twirl repository you linked. Feel free to send a pull request.

@lefou out of curiosity, why is having scala-parser-combinators in twirlIvyDeps necessary? I would have guessed that it would be pulled in transitively from depending on twirl itself

@lefou out of curiosity, why is having scala-parser-combinators in twirlIvyDeps necessary? I would have guessed that it would be pulled in transitively from depending on twirl itself

Yeah, that was also my first though. I don't know. You could dig in the git history, if there is some clue, or just try to remove it. Maybe, it is/was an optional dependency or it was too old for some twirl version.

Huh yeah it is optional for some reason, and tests in mill fail without it there 🤷♂


Frontend/add service

Steps to test:

Log in as an admin (ex<EMAIL_ADDRESS>Using the Menu Drawer, navigate to the Service Definition Editor (do not use the url directly)
Click any Group from the list
Click the "+ Add Service" Icon at the top right
Enter in any information you wish, but you must make sure the "Definition" is a valid Service Definition JSON.  I will paste an example below for you to use

Valid Defintion JSON:
{
    "service_code": "202",
    "attributes": [
        {
            "variable": true,
            "code": "BUS_STOP",
            "datatype": "multivaluelist",
            "required": true,
            "datatype_description": "Please select one or more items.",
            "order": 1,
            "description": "Please select one or more items that best describe the issue. If Other, please elaborate in the Description field below.",
            "values": [
                {
                    "key": "UNSAFE",
                    "name": "Unsafe location"
                },
                {
                    "key": "NO_SDWLK",
                    "name": "No sidewalk"
                },
                {
                    "key": "MISSING_SIGN",
                    "name": "Sign missing"
                },
                {
                    "key": "NO_SHELTER",
                    "name": "No Shelter"
                },
                {
                    "key": "OTHER",
                    "name": "Other"
                }
            ]
        }
    ]
}

I think the group id shouldn't be something that the user enters. I think when they select a service, it will be within a group so we will no the group in that moment.

So we really "have" to get the groups before we do the services -_-

I think the group id shouldn't be something that the user enters. I think when they select a service, it will be within a group so we will no the group in that moment.

So we really "have" to get the groups before we do the services -_-

Yeah I suppose so, fortunately the endpoint to load groups exists on the backend so we just need to create the Libre311 interface method to load it.


[move cli] finish move doctor by detecting event breaking changes + a…

…dding docs
Previously, move doctor checked that resources deserialize correctly, but not events. This PR adds the event check + updates the README with documentation for breaking changes detection via move publish and move doctor. Finally, added a doctor command to the diem smoke test as a stress-test for doctor.

/land

/land

/land

:broken_heart: Test Failed - Build images and run cluster test

/retry

:exclamation: Invalid command

Bors help and documentation

Bors is a Github App used to manage merging of PRs in order to ensure that CI is always green. It does so by maintaining a Merge Queue. Once a PR reaches the head of the Merge Queue it is rebased on top of the latest version of the PR's base-branch (generally master) and then triggers CI. If CI comes back green the PR is then merged into the base-branch. Regardless of the outcome, the next PR is the queue is then processed.
General

This project's Merge Queue can be found here.
This project requires PRs to be Reviewed and Approved before they can be queued for merging.
Before PR's can be merged they must be configured with "Allow edits from maintainers" enabled. This is needed for Bors to be able to update PR's in-place so that Github can properly recognize and mark them as "merged" once they've been merged into the upstream branch.

Commands
Bors actions can be triggered by posting a comment which includes a line of the form /<action>.

Command
Action
Description

Land
land, merge
attempt to land or merge a PR

Canary
canary, try
canary a PR by performing all checks without merging

Cancel
cancel, stop
stop an in-progress land

Cherry Pick
cherry-pick <target>
cherry-pick a PR into <target> branch

Priority
priority
set the priority level for a PR (high, normal, low)

Help
help, h
show this help message

Options
Options for Pull Requests are configured through the application of labels.

          Option
Description

Indicates that the PR is high-priority. When queued the PR will be placed at the head of the merge queue.

Indicates that the PR is low-priority. When queued the PR will be placed at the back of the merge queue.

Before merging the PR will be squashed down to a single commit, only retaining the commit message of the first commit in the PR.


[Flutter for windows] Flutter application start crash

Steps to Reproduces
My application for windows, and in some users start app will crash, and the collected dump analysis stack is as follows：

There are currently no more detailed from users.
Flutter version: 2.10.3
pdb and dump: https://drive.google.com/file/d/1hiaphJEfkm2DmBPANOfah7wuSuUg0AfV/view?usp=sharing

@chifandeyu
From what I can read from the details you shared, the exception The Thread tried to read from or write to a virtual address for which it does not have the appropriate access. indicates that the app tried to read from/write to a part memory that it was not allowed to do.
Are there any reproducible steps or pattern that leads to this log ? Also, please provide the related log in properly formatted text as part of the comments instead of in screenshots.

There have been some other spurious examples of this in the past on other platforms, e.g. https://github.com/flutter/flutter/issues/42749
This code has been around for a while, but @GaryQian might be interested in taking a look.

stack:
flutter_windows.dll!txt::FontCollection::CreateMinikinFontFamily flutter_windows.dll!txt::FontCollection::CreateMinikinFontFamily(const sk_sp<SkFontMgr> & manager, const std::string & family_name) line 285 flutter_windows.dll!txt::FontCollection::FindFontFamilyInManagers(const std::string & family_name) line 234 flutter_windows.dll!txt::FontCollection::GetMinikinFontCollectionForFamilies(const std::vector<std::string,std::allocator<std::string>> & font_families, const std::string & locale) line 179 flutter_windows.dll!txt::ParagraphTxt::GetMinikinFontCollectionForStyle(const txt::TextStyle & style) line 1395 flutter_windows.dll!txt::ParagraphTxt::ComputeLineBreaks() line 313 flutter_windows.dll!txt::ParagraphTxt::Layout(double width) line 686 [内联框架] flutter_windows.dll!tonic::DartDispatcher<tonic::IndicesHolder<0>,void (flutter::Canvas::*)(double)>::Dispatch(void(flutter::Canvas::*)(double) func) line 151 flutter_windows.dll!tonic::DartCall<void (flutter::Canvas::*)(double)>(void(flutter::Canvas::*)(double) func, _Dart_NativeArguments * args) line 204 flutter_windows.dll!flutter::Paragraph_layout(_Dart_NativeArguments * args) line 40 flutter_windows.dll!dart::NativeEntry::AutoScopeNativeCallWrapperNoStackCheck(_Dart_NativeArguments * args, void(*)(_Dart_NativeArguments *) func) line 218 [外部代码] [内联框架] flutter_windows.dll!dart::UntaggedSubtypeTestCache::set_cache(dart::ArrayPtr value) line 2384 [内联框架] flutter_windows.dll!dart::SubtypeTestCache::set_cache(const dart::Array & value) line 18092 flutter_windows.dll!dart::SubtypeTestCache::AddCheck(const dart::Object & instance_class_id_or_signature, const dart::AbstractType & destination_type, const dart::TypeArguments & instance_type_arguments, const dart::TypeArguments & instantiator_type_arguments, const dart::TypeArguments & function_type_arguments, const dart::TypeArguments & instance_parent_function_type_arguments, const dart::TypeArguments & instance_delayed_type_arguments, const dart::Bool & test_result) line 18118 [内联框架] flutter_windows.dll!dart::SafepointMutexLocker::~SafepointMutexLocker() line 234 flutter_windows.dll!dart::UpdateTypeTestCache(dart::Zone * zone, dart::Thread * thread, const dart::Instance & instance, const dart::AbstractType & destination_type, const dart::TypeArguments & instantiator_type_arguments, const dart::TypeArguments & function_type_arguments, const dart::Bool & result, const dart::SubtypeTestCache & new_cache) line 895 [内联框架] flutter_windows.dll!dart::RuntimeCallDeoptScope::~RuntimeCallDeoptScope() line 1302 flutter_windows.dll!dart::DRT_Instanceof(dart::NativeArguments arguments) line 906

Are there any reproducible steps or pattern that leads to this log ?

@chifandeyu

and this stack:
flutter_windows.dll!txt::FontCollection::CreateMinikinFontFamily
flutter_windows.dll!txt::FontCollection::CreateMinikinFontFamily(const sk_sp & manager, const std::string & family_name) 行 285
flutter_windows.dll!txt::FontCollection::FindFontFamilyInManagers(const std::string & family_name) 行 234
flutter_windows.dll!txt::FontCollection::GetMinikinFontCollectionForFamilies(const std::vector<std::string,std::allocatorstd::string> & font_families, const std::string & locale) 行 179
flutter_windows.dll!txt::ParagraphTxt::GetMinikinFontCollectionForStyle(const txt::TextStyle & style) 行 1395
flutter_windows.dll!txt::ParagraphTxt::ComputeLineBreaks() 行 313
flutter_windows.dll!txt::ParagraphTxt::Layout(double width) 行 686
[内联框架] flutter_windows.dll!tonic::DartDispatcher<tonic::IndicesHolder<0>,void (flutter::Canvas::)(double)>::Dispatch(void(flutter::Canvas::)(double) func) 行 151
flutter_windows.dll!tonic::DartCall<void (flutter::Canvas::)(double)>(void(flutter::Canvas::)(double) func, _Dart_NativeArguments * args) 行 204
flutter_windows.dll!flutter::Paragraph_layout(_Dart_NativeArguments * args) 行 40
flutter_windows.dll!dart::NativeEntry::AutoScopeNativeCallWrapperNoStackCheck(_Dart_NativeArguments * args, void(*)(_Dart_NativeArguments *) func) 行 218
flutter_windows.dll!dart::NativeEntry::LinkNativeCall(_Dart_NativeArguments * args) 行 327
[外部代码]

Thanks for the update. Keeping this issue open and labeling for further insights from the team.
/cc @stuartmorgan

No - SkParagraph is now the default and it does not use the ParagraphTxt/Minikin code

OK, I'm going to close this, since it has most likely been "fixed" by not using the code in question anymore.


Support HTML-first workflow

Google Polymer takes an "HTML-first" approach to defining custom elements. Rather than calling a JavaScript method to register an element, you instead use a custom <polymer-element> tag to declare elements. The Polymer team had difficulty using this approach in Atom for a couple of reasons.
Issues running inline scripts due to our content-security policy
This is the biggest hurdle. There's currently no way to white-list script tags in an imported HTML document. A content security policy can be associated with a nonce value that can be inserted into scripts to indicate they are runnable, and it would be nice if we could cascade this nonce through an HTML import to script tags in the imported content.
Needing to manually insert HTML-imports into the <head>
This is easily solvable via a service that presents a function like loadHTMLDocument(fullPath). I'd rather do it with require, but Node-style requires are expected to be synchronous and waiting for the imported content to load is async. This would therefore still require a tiny bit of boilerplate in activate to interact with the service and load the package's main document.

What you/they mean with "HTML-first"? I googled it and the only thing i find is this issue :D

Yea what kind of 'workflow' are we talking about here? What do the Polymer guys do that currently isn't supporting well?

I updated the body of the issue with more explanation.

Makes sense.
I suppose this is the kind of thing that is best served by a package though, given how you'd circumvent standard policies for a special use case?

@batjko This wouldn't be possible to solve as a package. This requires changes in Atom core (and maybe Atom Shell?).

Yeah, we would need to add a require handler. I'm thinking we can use the nonce feature with the content security policy to selectively enable inline scripts, but it needs exploration.

+1

I really like this approach!
It's nearly identical to some experiments we've done in Polymer with integrating HTML imports and JS module definition - requiring a .html document returns the document object from the import. In this way an .html file can be used as a "HTML module".
An extension to this is to allow the .html file to customize its exports, either via id attributes, a new export attribute, or by explicitly exporting in a JS module:
This uses AMD-style, which we used in our registry, but you could substitute CommonJS, or have the loader adapt.
<template id="foo">...</template>
<script>
define(['document'], function(doc) {
  return {
    activate: function() { ... },
    foo: document.querySelector('#foo'),
  };
});
</script>

One thing we discussed which I still think would be incredibly nice was to allow extensions to just /be/ custom elements, with the Atom lifecycle methods mapping to custom element lifecycle methods: activate() (with no args) would map to createdCallback() or attachedCallback(), deactivate() would map to detachedCallback(). Serialization would have to be a separate API.
What's interesting there is that extensions end up with essentially the same API as UI elements. It's all the same "stuff". Custom element extensions could be added to a <atom-extensions> element in <head>. Simply adding the element would activate the extension.
Going further, serializing index.html page would then save the set of activated extensions. Each user could have their own index.html, and edit it for customization. If the UI is also set up in HTML, then a user could very easily add or replace parts of the UI by editing their personal index.html.

How do you handle loading the document asynchronously though? We've taken a similar approach in the Slack app (though ours always starts with JS => HTML + CSS Import), and one thing that has complicated the issue is that the HTML Imports API is asynchronous, so we have to create a Promise (actually an Observable) representing when the content is ready.

You only have to wait for the import if it's dynamically inserted by require(). I've usually had the import already present in my static files. This would be the case if index.html served as the configuration. If the import is added dynamically, then yes, you have to wait for it. With AMD, this is easy. With CommonJS, perhaps you do as you say and require('foo.html') returns a Promise<Document>.

@paulcbetts your link 404'ed for me

@justinfagnani hwhoops, copy paste fail, try again

How do you handle loading the document asynchronously though?

Is Atom performing any async loading under the covers to make CommonJS work in the browser context? (and generally, how is require being managed?)
If so, there's also the option of making the loader aware of imports, which turns out not to be all that bad (except for when you're targeting the ever-changing loader spec :P)

A related concern I have here:
We're going to want to be able to depend on Polymer across multiple atom packages. We can use APD to express that dependency in order to get an atom-polymer installed.
But, in order to force the polymer package to load before us, we'd need to also be able to kick off an apd.install() to force the sync load of it, I think? (and then, once we know the package has loaded, stick the <link rel="import"> in there?)

I don't think APD is the right answer, because de-duping custom element dependencies is a pretty hard requirement given the global element registration, so shared packages should really be built in.

@justinfagnani We'll probably start just with require for now, though you could of course define custom elements to interoperate with our existing API however you want.
It is concerning that the import API is asynchronous because that was my plan for implementing the require semantics. Require definitely needs to be synchronous, so this may sink my plan. I wish Chromium had an API for creating and populating a new document context that I could just interact with rather than needing to insert an import. Any ideas on that?

document.implementation.createHTMLDocument gets you part of the way (which we use in the imports polyfill) - but that just gives you an inert document. Resource loading has to either be done manually, or by stuffing the document in an iframe.
Might be possible to synchronously load some resources given a document (scan for <link>, <style>, <script> elements), but I suspect re-implementing imports like that is going to be very, very thorny.

Asynchronous loading might be an issue if you want to directly require an .html file, but if an extension defines a .html file as it's main, then I don't immediately see that async is a problem. The extension will have all of its dependencies loaded and run by the time its script(s) runs, and any requires it performs can be synchronous.
The system that injects the import would still have to wait for the load, but it shouldn't require any changes to require.

@nevir @justinfagnani What am I to make of the "Imports Block Rendering" section of this article on HTML 5 Rocks? Is that only for imports that are present at the time of page parsing?

Yeah, dynamically inserted <link rel="import">s are purely asynchronous and do not block the parser (the file being imported, however, will continue to follow the parser blocking logic)

(that's glossing over it a bit; Eric's explanation in that article is correct)

I would like to insert an HTML import (<link rel="import">) tag into the head, but the content security policy is getting applied to the imported document and ruling out inline script tags. Even when I assign a nonce to the security policy directive and supply the nonce on the import, the nonce isn't propagated to the script tags the imported document, which I suppose makes sense. It would be great if I could do an import where the nonce automatically cascaded to inline scripts that were present at the time of import.
@zcbenz do you think we could implement a feature like this? One thought is to do a custom protocol handler that dynamically inserts a nonce into script tags in the imported document, but that seems pretty Rube-Goldberg-esque.

@justinfagnani Do you have any contacts on the Chrome team that would be interested in a better interaction between content security policies and HTML imports? I'd like to be able to cascade CSP nonces from an attribute on the link tag through to script tags present in the imported document at the time of import. Maybe someone could at least provide some guidance on how this behavior could be patched in until something more permanent is worked out? I'd love to get Atom working for you guys but we can't just throw away this security measure entirely.

@nathansobo you might want to chime in on https://code.google.com/p/chromium/issues/detail?id=393307 too

I think that bug is the best best right now. I'll ask around.

Hi all. Joel from Chrome Security here. @justinfagnani brought this thread to my attention. The short answer is, yes, we are very interested in making CSP work better with HTML Imports. The long answer is, "it's hard" :-) I've started a thread on the W3C WebAppSec mailing list, which is where we generally discuss CSP (https://lists.w3.org/Archives/Public/public-webappsec/2015Mar/0179.html), to talk about this issue. We'd love to get your thoughts on the ideas floating around there, since you're at the center of this issue. Additionally, if you just have questions for me, feel free to message me.

:clap: @metromoxie

Thanks @metromoxie! Here's a copy to the email I sent to that list for reference:

Nathan Sobo from the Atom core team here.
For us, the most intuitive solution would be to allow a nonce attribute to be specified on an import, similar to how a nonce can be applied to an inline script. When applied to an import, the nonce would apply transitively to all script tags in all imported documents. It would only apply for inline scripts present at the time of import. Script tags added to imported documents after the fact would not have a nonce automatically applied.
We use a CSP in Atom to prevent package authors from accidentally inserting script tags into the document, for example, when previewing a markdown document. However, if they're explicitly asking to do an HTML import, then their intent is clear, and we'd like them to be able to run imported scripts if they have access to the current CSP nonce.
Can anyone articulate to me anything I might be missing here? Would this be a workable solution from a security perspective?

@justinfagnani Would a --disable-csp flag make any difference for you in developing your package before this issue gets figured out at the platform level? It could serve as a stopgap and enable internal usage, but we'd have to get this resolved in order to ship to a general population.

I guess, but my stopgap was to edit index.html and just remove the CSP :)

I guess, but my stopgap was to edit index.html and just remove the CSP :)

And presumably a flag would be no better then? If finding away around the obstacle is the difference maker for you implementing on Atom, then I want to do what it takes to solve it.
How seriously are you considering Atom? Was it just an experiment, or have you moved further forward? If and when you're a few weeks out from shipping to a general population I can do some crazy antics with custom protocols if it hasn't been fixed in the platform yet.

I'm quite seriously considering it, planning on it even, but haven't put a lot of work into it recently. I don't think CSP is a technical blocker for development - a flag or editing the index.html are roughly equivalent for now. Once I want people to try something the flag will be more palatable.
Rather than any antics it'd be better to get the right fix. Another related issue that could be worked on independently of CSP is shared packages. With one global custom element namespace we need to make sure that elements aren't registered twice. This is also fine during development for now, but once there's more than one package using the same widget set it'll be an issue.

:+1:  to this. I'm really not a huge fan of space pen. I really wish I could just create my lib in polymer. Bonus points if the atom API worked with databinding.

cc #8697


Second commit

Tips

Thank you very much for contributing to Apache Hudi.
Please review https://hudi.apache.org/contributing.html before opening a pull request.

What is the purpose of the pull request
(For example: This pull request adds quick-start document.)
Brief change log
(for example:)

Modify AnnotationLocation checkstyle rule in checkstyle.xml

Verify this pull request
(Please pick either of the following options)
This pull request is a trivial rework / code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end.
Added HoodieClientWriteTest to verify the change.
Manually verified the change by running a job locally.

Committer checklist

[ ] Has a corresponding JIRA in PR title & commit

[ ] Commit message is descriptive of the change

[ ] CI is green

[ ] Necessary doc changes done or have another open PR

[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

CodeScene PR Check

Recommended Review Level
Inspect the code that degrades in code health.

Warnings
Degrades in Code Healthhudi/hudi-spark/src/main/java/org/apache/hudi/DataSourceUtils.java degrades from a Code Health of 9.5 -> 3.9

Improvements
TestCleaner.java improves its Code Health from 5.43 -> 9.46

Code Health Delta Descriptions
DataSourceUtils.java Degradations: Overall Code Complexity - new issueBumpy Road Ahead (drawBreakSelection has 4 logical blocks with deeply nested code. Threshold is 1 (one) single block per function) - new issueComplex Method: iterateLine cyclomatic complexity = 27, tileTapped cyclomatic complexity = 22, removeSelection cyclomatic complexity = 16, update cyclomatic complexity = 15, unitControl cyclomatic complexity = 14 and 9 more functions. - new issueDeep, Nested Complexity (pickedBuildPayload has a nested complexity depth of 4, iterateLine has a nested complexity depth of 4) - new issue


expose out object inside define* functions

I would like to be able to access out.global in my component definition, but out is not available in that scope.
Can access it here:
exports = module.exports = function (data, out) {
    data.name = out.global.config.name
    template.render(data, out);
};

But not here:
module.exports = require('marko-widgets').defineComponent({
    template: require('./template.marko'),
    getTemplateData: function(state, input) {
        return {
            name: out.global.config.name // out is undefined
        };
    }
});

Hi @yomed, sorry for not fully documenting it, but out will be the third argument to getTemplateData(state, input, out). Here is the relevant code for reference: https://github.com/raptorjs/marko-widgets/blob/77f289dd4b12f803e96e54537dc32b2b11585e96/lib/defineRenderer.js#L168
I'm going to update the docs now. Please let me know if you run into any other issues. Thanks.


Browse/Now Playing/Queue Navigation bar covered by Android navigation bar

The on-screen Android navigation bar covers the Lyrion navigation bar.
Appears app not compensating for height of on-screen three button navigation bar (edit: the app navigation doesn't appear at all when system navigation is set to gesture mode).

moto g(10) Android 11

Hmmm... This does work for me on a S22 with Android14. Looking at your screenshot it appears as if the issue is because the page is not rendered under the notification area - which it should be. The view should take the whole screen. Instead the WebView on your device is starting at the bottom of the notification area - as you can see by the empty space above "Living room"
Perhaps this is an Android version issue. I'll have to create a Android11 virtual device and see if I can recreate this.

Should be fixed in 0.6.1

Absolute legend. It goes a bit funny at smaller scale/zoom level, but I've just put it up a notch and it's perfect.


Allow querying of customAttributes on the allPublishedContentQuery.

This is being utilized by the new custom redirect handler on RR here: https://github.com/parameter1/randall-reilly-websites/pull/315

 Add custom redirect handler for /?p=##


Ingestion API and properties including collections (Question)

Describe the issue
This is just a question - I would like to know if is it really necessary to include properties of Ingestion API return values (objects) as collections.
E.g. in Get-AppSourceProduct, the property Property. It's obviously just a single item that will be returned but you still define it as an array and I am not sure why. Maybe there is a point and I don't see it.
Additional details
I just want to tell this complicates parsing during .NET interop processing as we can just search properties like product.Property.appVersion but we had to go through array on Property property :)
https://github.com/microsoft/navcontainerhelper/blob/d909f750c48747898c0bd174d5ccf493d5f9f062/AppSource/Get-AppSourceProduct.ps1#L180

I guess the question here is whether
Invoke-IngestionApiGetCollection -authContext $authContext -path "/products/$($product.Id)/properties/getByInstanceID(instanceID=$($branchesProperty[0].currentDraftInstanceID)
Can return an array - or it is always an object?
To be honest, I don't know and the documentation, but the reason for the code is that the swagger describes that the return value is an array:
https://ingestionapi-swagger.azureedge.net/#/Property/get_products__productID__properties_getByInstanceID_instanceID__instanceID__
(Which might not be used in BC terms though).

Ok, I have resolved the problem somehow internally so I will close the case.


markdown extra lang feature implementation

This is a proposition of enhancement
in .md file,
# TITLE 1 # {lang=ja}

would give

TITLE 1

I don't really want to start adding arbitrary enhancements to the markdown support in the core.  If you wish to create a plugin to do this, you can do so.  You can look at markdown-notices plugin to give you an idea of how to accomplish this.


Wrong translation on menu in Spanish language

Issue Type: Bug
1º Right click on the search menu in any file resulting from the search.
Appear the option to delete as "Despedir", but the correct text would be "Eliminar" as it appears in the file browser.

We host translation in Transifex and accept contribution from community. General guidance is here: https://aka.ms/vscodeloc.
It will be great if you can fix in Transifex and get enough vote from native speaker contributors so your fix get used in product.
Must be this string.

This string: https://www.transifex.com/microsoft-oss/vscode-workbench/translate/#es/$/122408151?q=translation_text%3ADespedir

Thank you so much for your solution, I have put the suggestion of translation.
I am going to close the Issue.
Regards.


Abstract away the need to call each action creator with the form argument

I've created a brief pull request to outline what I mean.  This is not a full pull request but merely for illustration purposes.
I think it is an unneeded burden of having to remember to add the form argument to every single action in src/actions.js, e.g.
export const destroy = (form) =>
  ({ type: DESTROY, meta: { form } })

This not only relies on the developer remembering to add the form field to every action but also tightly couples the implementation of how forms are identified to the way actions are called.
I think it would be nice if redux-form took care of creating names for forms  or at least it could create a form name if none existed.  For example, I have to supply a form name every time I create a redux-form.  What got me thinking was this scenario:
    if(this.state.isEditing) {
      const formName = `editForm${id}`;

      return (
        <ResultForm
            {...this.props}
            form={formName}
            initialValues={initialValues}
        />
      );
    }

I had come up with my own scheme to uniquely identify the form.
I blogged about a way to do this at the framework level here.
The first step of this would be to remove the need to add the form argument to every single action creator.
In this PR, I've only done this for formActions in src/reduxForm.js.
I'm looking for feedback if you think this is a good idea.
If you think it is something worth exploring then I will create a proper pull request, if not, it was a fun thing for me to look at :).

Thank you. This is very clear. As is often the case, code > prose.
The problem with this approach is that it doesn't allow sharing of the action creators to any module that wants to import them and dispatch a "initialize the login form" action. As a library, it is better to export action creators that require a form parameter. Internally, redux-form pre-binds the form parameter so that subsequent calls to it need not worry about the form name, but the library itself needs to export the whole function, I think.
I do think that your approach might be useful in an app itself, but I don't think it's appropriate for a library.

ok, thanks for the feedback. i've had a look at the issues and i'm not sure which ones are actual issues and not questions.  do you know of any definite issues i could look at?

do you know of any definite issues i could look at?

I'm not sure what you're referring to. What are you looking for in the issues?


doc: update RELEASES.md

Updates RELEASES.md for #2904 and #2858.

Looks like this was already subsumed by #2995, thanks Scott! :)