Manual ip addr

Fixes issue #35

I've created a PR to your branch on your fork. Please check it.

I've created a PR to your branch on your fork. Please check it.

We have competing solutions here. I don't think yours works.
If all you want to do is discover a single device by IP then yes maybe add a single field and button.  But I don't see where you are saving the IP into the devices[] array which is needed for the plugin startup.  If you have multiple devices then you need to do each individually... and every time you decide to do a discover, you have to enter the IP address for each again.
I do see some code cleanup that I will take, but I can't merge your PR as, in my opinion, it doesn't solve the problem.

I've created a PR to your branch on your fork. Please check it.

We have competing solutions here. I don't think yours works.
If all you want to do is discover a single device by IP then yes maybe add a single field and button. But I don't see where you are saving the IP into the devices[] array which is needed for the plugin startup. If you have multiple devices then you need to do each individually... and every time you decide to do a discover, you have to enter the IP address for each again.
I do see some code cleanup that I will take, but I can't merge your PR as, in my opinion, it doesn't solve the problem.

We need to save IP address in the config.json, so schema is updated, so UI is going to have a field for IP address for each device.  That is a given.  And we have to handle whether and IP address is provided for each device in the plugin initialization, so all that code is needed.
The user interface should not add complexity by introducing another IP field and button for the sole purpose of discovering a single device.  We need handle multiple devices and be consistent with how it has to be saved in the config.json. So I'm strongly against adding separate "by IP" discovery button to the GUI.

Yeah, I missed that one thing.
I think it's contra intuitive that a user have to add an entry to the config before the discovery if they want to discover by IP. That's why a seperate field and button is needed in the GUI.

Yeah, I missed that one thing (I mean saving the IP).
I think it's contra intuitive that a user have to add an entry to the config before the discovery if they want to discover by IP. That's why a seperate field and button is needed in the GUI.

We disagree.  You have over simplified it.  Several of our users have multiple devices and your proposal does not accommodate that.
Maybe we could change the message displayed if no devices are discovered advising the user to manually add IP address(es) for their devices and then re-trying the discovery.

I don't understand your reasoning. If a user have multiple devices, then they enter the IP for all of their devices and do the discovery. Same thing is needed with your solution: the user must create an entry for each of their devices before discovery.

Also the constraints of the scheme wouldn't allow a user to save the config schema without setting the ID, token and key fields of the device. So the users must add the entry by editing the raw config file which is not good.

I don't understand your reasoning. If a user have multiple devices, then they enter the IP of their devices, do the discovery, add the device, then rinse and repeat. Same thing is needed with your solution: the user must create an entry for each of their devices before discovery.

You are not handling multiple IPs, only one.  And yes, if user has multiple devices then need to add each.  This is likely a fringe case (VLAN subnet not connected to the server) so exposing so visibly a IP address field and a discover by IP button is adding confusion for the vast majority of users who will never have to think about this.
Look, we're far apart here.  If you want to continue down your path then fine.

Also the constraints of the scheme wouldn't allow a user to save the config without setting the ID, token and key fields of the device. So the users must add the entry by editing the raw config file which is not good.

Little red asterisks appear in the GUI, yes.  But it is not being enforced.  I am able to save just a IP address and nothing more. Have you tested any of this?

Well you are right. I think the custom UI doesn't enforce these constraints by default, it should be handled manually. I see this as a bug, we need to handle that those fields cannot be empty.

Mutliple IPs can be handled by discovering a device by IP, adding it then change the IP field to an other IP. The same amount of effort needed to do this as adding entries to the config file before discovery.

Well you are right. I think the custom UI doesn't enforce these constraints by default, it should be handled manually. I see this as a bug, we need to handle that those fields cannot be empty.

They can be empty... before discovery has found them.  We should handle that case.

You want to redefine the workflow of the plugin just because of an edge case: those fields must have values, that's why they are required fields in the config schema.

Mutliple IPs can be handled by discovering a device by IP, adding it then change the IP field to an other IP. The same amount of effort needed to do this as adding entries to the config file before discovery.

No, the effort is much greater.  It takes time to perform discovery, even if it responds quickly there are multiple steps to be repeated.  Imagine you have a dozen of these things?  Note that as I have it written you don't even need to "save" the config before doing the discovery.

You want to redefine the workflow of the plugin just because of an edge case: those fields must have values, that's why they are required fields in the config schema.

Yes, they must have values to connect to the device.  But the plugin should always gracefully handle the case where a required field is missing.  It's just good practice.

If you have a dozen of devices then you have to add every single one to the config before discovery as well.
For avoiding not expected errors and bugs, it shouldn't be allowed to save the config if those fields are empty.

If you have a dozen of devices then you have to add every single one to the config before discovery as well.
For avoiding not expected errors and bugs, it shouldn't be allowed to save the config if those fields are empty. It's better than getting errors because the user left in devices by accident.

As I said.  We're far apart on this one.  Ignore this PR.  It was written assuming a completely different approach than you are advocating.  Trying to band-aid changes to make it work the way you want is a square peg in round hole problem, something unexpected is going to come up and break.
I suggest you start your own PR, but I repeat again that I strongly dislike adding another "discover by IP" button.

A bit different topic: I've read about broadcasting to subnets today and I've found a post where they wrote that if the message is multicasted, not broadcasted then the subnets also get the message. Do you know something about this? Also read something about "mDNS Reflector" which should be an option in the router, and if it's turned on then the devices on subnets wil also get the multicast message. My router can't do VLANs so I cannot test these things out.

A bit different topic: I've read about broadcasting to subnets today and I've found a post where they wrote that if the message is multicasted, not broadcasted then the subnets also get the message. Do you know something about this? Also read something about "mDNS Reflector" which should be an option in the router, and if it's turned on then the devices on subnets wil also get the multicast message. My router can't do VLANs so I cannot test these things out.

Broadcast sends to all devices on a local subnet and "it just works".   Multicast sends to multiple (but not all) devices on a network but there is a protocol involved where clients have to register with the router that they are listening for specific multicast traffic.  There is a reserved set of IP addresses that are used for multicast.   In the IPv6 world they decided to get rid of broadcast and instead only use multicast, and there is a "broadcast" equivalent implemented on top of the multicast.
mDNS is something different.  It is a protocol to discover device IP addresses from a given name.  It operates on specific ports and clients have to support it.  Best known in the Apple world as Bonjour for device discovery.  It is how your iPhone find things like your Apple TV or your  printer or network server.  Bonjour is the apple name,  mDNS is the more generic term.  The protocol works over a single LAN subnet, but you can install a repeater on a server/router that will pass mDNS traffic from one LAN subnet to another (both subnets must be connected to this server).  The most common one is Avahi, it is available on all Linux distributions.  I do run it to "reflect" the mDNS traffic across some of my networks.  There is an iPhone app that you can run and it will show all the devices it finds.

I suggest you start your own PR, but I repeat again that I strongly dislike adding another "discover by IP" button.

I suppose you could use the same "discover" button and then decide which code path to take based on whether your IP address field is empty or not.  And you could allow for multiple (space-separated) IP addresses in that field.

Thanks for the detailed description! So in the end: is it possible to somehow (with router settings) broadcast messages to a subnet devices or it is totally impossible?

Thanks for the detailed description! So in the end: is it possible to somehow (with router settings) broadcast messages to a subnet devices or it is totally impossible?

No, broadcasts are confined to their own subnet.  It may be possible to write some sort of daemon that could listen on a specific port on subnet A and then issue a broadcast on subnet B, watch for replies and relay the replies back to the originating subnet.  But I think it is fraught with problems (think a microphone and speaker getting too close to each other and the resulting feedback loop) and so there is no feature of any operating system that does this.  At least not that I have found.
mDMS is the "standard" way to do device discovery.  It is what Thead uses.  You might be surprised at the number of devices on your own network that respond, check out the app I linked to.

Ah okay, got it. If you have time and motivation, could you please make a short guide in the Wiki on how to create network interfaces on Linux for VLANs? Or is it redundant? If I would have VLANs, I'm pretty sure I will use this solution instead of discovering the devices with their reserved IP.

I suggest you start your own PR, but I repeat again that I strongly dislike adding another "discover by IP" button.

I suppose you could use the same "discover" button and then decide which code path to take based on whether your IP address field is empty or not. And you could allow for multiple (space-separated) IP addresses in that field.

It's always good to sleep on a problem and next morning have a clear mind.  I've come around to agreeing that we should add the IP Address field to the discover.  We can easily make it a space-separated list.  And we only need the one button.  I'll take in some of your code that will enable that.

You are right, one button is enough. I would prefer a comma seperated list to be able to filter out whitespace errors.

I have added the code.  Allows for either space or comma separated list of IP addresses.

I wouldn't allow space seperated lists because of the issue of accidental whitespaces. I think it's more robust if there is only one way to provide the IPs.

I wouldn't allow space seperated lists because of the issue of accidental whitespaces. I think it's more robust if there is only one way to provide the IPs and it's much more easier to avoid errors, when comma (or semicolon) is used as the seperate character.

Multiple whitespace between IP addresses are handled, as are spaces after commas.  Are you concerned about whitespace in the middle of an IP address?  That would result in an invalid IP address error.  The only way to handle that would be to strip all whitespace from the string (and require comma/semicolon separator).  But mistyping an IP address with a space in the middle is an error that should be flagged.

Well yeah, it depends on how we define the requirement. Let's do your solution now, and if users have problem with this in the future, we can change it.

Should we handle the v2 device problem within this PR?

Ah okay, got it. If you have time and motivation, could you please make a short guide in the Wiki on how to create network interfaces on Linux for VLANs? Or is it redundant? If I would have VLANs, I'm pretty sure I will use this solution instead of discovering the devices with their reserved IP.

How you create VLANs is very operating system specific and differs depending on whether your system uses Network Manager, Netplan or something different.  I would rather leave this for the user to google for instructions specific to their setup.

Should we handle the v2 device problem within this PR?

Up to you.  If simple enough to add then we can do it here.  Though I would like to squash together all the commits for manual IP address before merging.

Then I think it's simpler to do it in a seperate PR. If you don't have any more to add to this one, I'll merge it.

Then I think it's simpler to do it in a seperate PR. If you don't have any more to add to this one, I'll merge it.

yes lets "Squash and merge".  Then we can turn attention to the V2 problem.


perf(attributesDesignators): reduce necessary allocs and #access to maps

This PR reduces allocations and required map operations when building a "designatorAttributes" struct.

contributes kubescape/kubescape#1051

Signed-off-by: Frédéric BIDON<EMAIL_ADDRESS>

cc: @matthyx @dwertent


pydeck: Add Black formatter to pydeck

For #4103

Background

Change List

Coverage decreased (-2.6%) to 80.192% when pulling c7f4b024e8557dda023b73aa5a851fc977028485 on ajd/add-pyproject-toml into b47d6d5de0f83a3ccb9c550d50c909d6c8de38a4 on master.


170 broken parsing of 0d systems in crystal

I fixed the lattice parameter assignment causing the bug in issue #170.
It now uses the dimensionality to assign cart_pos, rather than the system type.
I also cleaned up to_system, which assigned the Cartesian positions.
I slightly extended the tests, but I can see to also include an actual sample of the original bug report.
All examples from the bug report now pass, see figure.

@ladinesa Let me know if you prefer that Lauri reviews, since he originally wrote the Crystal parser.

Note, the conversion in to_system seems somewhat superfluous, even after simplification.
Essentially, all coordinates are written as scaled wrt to the cell dimensions. In lower dimensionalities, the excluded axes are written in Cartesian coordinates. It's the scaled positions that are converted to Cartesian coordinates.
However, the first print-out of the geometric structure is fully Cartesian. You can find it under the line
AT.IRR.  AT  AT.N.          X                   Y                   Z
I could just extract the starting structure as such, without the need for converting. From what I can tell, we still need the current approach for updates after ionic steps.

On the same thought, should we consider changing our communication of the PBC conditions? Technically, the code converts any non-periodic axis to one with 500 Angstrom. It is pretty verbose about this, printing it out in the lattice parameters. However, when a 0D system is run, it no longer prints out the lattice...

Looks good. thanks for the fix

Note, the conversion in to_system seems somewhat superfluous, even after simplification.
Essentially, all coordinates are written as scaled wrt to the cell dimensions. In lower dimensionalities, the excluded axes are written in Cartesian coordinates. It's the scaled positions that are converted to Cartesian coordinates.
However, the first print-out of the geometric structure is fully Cartesian. You can find it under the line
AT.IRR.  AT  AT.N.          X                   Y                   Z
I could just extract the starting structure as such, without the need for converting. From what I can tell, we still need the current approach for updates after ionic steps.

So, the problem lies with line 629:
        # If any geometry edits (supercells, substitutions, dispplacements,
        # deformations, nanotube construction, etc.) are done on top of the
        # original system, they override the original system.
        if system_edited is not None:
            if system_edited["labels_positions_nanotube"] is not None:  # pylint: disable=E1136
                labels_positions = system_edited["labels_positions_nanotube"]  # pylint: disable=E1136
            else:
                labels_positions = system_edited["labels_positions"]  # pylint: disable=E1136
            # TODO adjust re pattern for other formats e.g. with R(ANGS)
            if labels_positions is not None:
                atomic_numbers = labels_positions[:, 2]  # pylint: disable=E1136
                atom_labels = labels_positions[:, 3]  # pylint: disable=E1136
                atom_pos = labels_positions[:, 4:7]  # pylint: disable=E1136
            if system_edited["lattice_parameters"] is not None:  # pylint: disable=E1136
                lattice = system_edited["lattice_parameters"]  # pylint: disable=E1136

Here, the format may be changed to include a mixture of scaled and Cartesian coordinates.

Looks good. thanks for the fix

What do I do with labels_positions_raw?

Looks good. thanks for the fix

What do I do with labels_positions_raw?

Not sure what this is for, it is the starting structure? if I understand the issue right, probably you can set the argument to to_system for dimensionality to 0 for labels_positions_raw.

Looks good. thanks for the fix

What do I do with labels_positions_raw?

Not sure what this is for, it is the starting structure? if I understand the issue right, probably you can set the argument to to_system for dimensionality to 0 for labels_positions_raw.

Indeed, labels_positions and labels_positions_raw both extract the starting structure.
labels_positions_raw already has the right coordinates (all Cartesian) and can be stored without the need for to_system.
lattice_positions (and the subtypes) extract updates to the initial geometry (e.g. optimization, frequency, etc.).
Just as labels_positions, they all follow a mixed coordinate system (scaled for axes with PBC, and Cartesian for the rest).
These do require to_system.
So you see that we have 2 options on how to deal with this.

Looks good. thanks for the fix

What do I do with labels_positions_raw?

Not sure what this is for, it is the starting structure? if I understand the issue right, probably you can set the argument to to_system for dimensionality to 0 for labels_positions_raw.

Indeed, labels_positions and labels_positions_raw both extract the starting structure. labels_positions_raw already has the right coordinates (all Cartesian) and can be stored without the need for to_system.
lattice_positions (and the subtypes) extract updates to the initial geometry (e.g. optimization, frequency, etc.). Just as labels_positions, they all follow a mixed coordinate system (scaled for axes with PBC, and Cartesian for the rest). These do require to_system.
So you see that we have 2 options on how to deal with this.

Just maybe use labels_positions. Leave the defintion for labels_positions_raw for now.


blueapi controller run <plan> hangs after the conclusion of a plan

with config (copied from docs...)
env:
  sources:
    - kind: dodal
      module: mx_bluesky.ui_working.devices
    - kind: planFunctions
      module: mx_bluesky.ui_working.plans

stomp:
    host: localhost
    port: 61613
    auth:
        username: guest
        # This is for local development only, production systems should use good passwords
        password: guest

and the mx-bluesky branch i23_and_ui_testing which has some extremely simple plans of the like
@bpp.run_decorator()
def virtual_relative_move_um(x_um: float, y_um: float) -> MsgGenerator:
    """
    Used for click-to-move on an OAV. Moves the gonio a relative distance of x and y to
    bring the clicked location to the beam centre. Takes account of the goniometer omega
    position in order to do the relative move in the lab frame.
    """
    gonio = devices.vgonio()

    LOGGER.info(
        f"Current position: {yield from bps.rd(gonio.x)}, {yield from bps.rd(gonio.yh)}"
    )
    yield from bps.rel_set(gonio.x, x_um, wait=True)
    yield from bps.rel_set(gonio.yh, y_um, wait=True)
    LOGGER.info(
        f"New position: {yield from bps.rd(gonio.x)}, {yield from bps.rd(gonio.yh)}"
    )

where gonio is prepared using the old-style device_instantiation because I could set the mock arg to True there...
running
╰─>$ blueapi --config stomp.yml  controller run virtual_relative_move_um '{"x_um": 4, "y_um": 23}'
2024-11-29 12:21:44,255 - Connecting...
2024-11-29 12:21:44,256 - established connection to host localhost, port 61613
2024-11-29 12:21:44,258 - Subscribing to name='public.worker.event'

hangs forever. the plan runs successfully and the worker returns to idle state but the controller (presumably) waits for this event forever.

Hmm, not sure why it's missing the event, regardless we should probably add a timeout


new documentation

Codecov Report

Merging #61 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #61      +/-   ##
==========================================
- Coverage   94.55%   94.55%   -0.01%
==========================================
  Files           5        5
  Lines         680      679       -1
==========================================
- Hits          643      642       -1
  Misses         37       37

Impacted Files
Coverage Δ

adlib27/__init__.py
100% <0%> (ø)
:arrow_up:

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 e9a67f4...9c8908f. Read the comment docs.


Removing parameterless method-call candidate

The parameterless candidate didn't take multi-dispatch resolution into account properly. However, we might get that for free from the other candidate if we allow the empty Capture as the default third argument.

I wanted to take a closer look but frankly, since I see evidence that similar changes are still required, I will just roll with it. It's probably the right thing to do.


Make ACP a requirement for certain changes

I would like some feedback from libs/libs-api on the wording/details.
Zulip: https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/.60needs-acp.60.2C.20why.3F
r? libs-api

I'm not a fan of the "strictly required" verbiage personally. I'd be in favor of making the language stronger ("strongly recommended" or "do not skip the ACP without a specific reason"), but I'm unsure about introducing strict requirements like this.

Also, I don't understand the difference between "change to any user-obvious API" and "any change to API."

Also, I don't understand the difference between "change to any user-obvious API" and "any change to API."

(that was my imprecise wording from Zulip attempting to distinguish interfaces/types that show up in signatures from behavior changes that are more implementation-related)

It might have been a bad idea to open the PR before finishing the discussion over on Zulip. There's some more context over there.
The practical question here is when non-libs members should block progress on adding an ACP. AFAICT the answer so far has been "when they feel like it's a good idea", which somewhat contradicts the language in the dev guide.

@oskgo Can you give a concrete example of where this wording helps? I'm honestly still having a lot of trouble following you. I've skimmed the Zulip thread.

The intention is to answer "Why do I need to write an ACP?" for contributors and "Which PRs should I block on making an ACP?" for reviewers.
The right wording is going to depend on what the right answers are, and it seems like there isn't agreement on this.

"Why do I need to write an ACP?"

I guess I felt like the wording already specifically addresses this. It's a risk mitigation strategy to avoid wasting time. It isn't a perfect system. I'd be open to try and make the wording better here.

"Which PRs should I block on making an ACP?"

I would say, "If unsure, block on ACP."
Also, my understanding is that we are supposed to have one libs-api member sign off on landing a new unstable API. Perhaps that has eroded with the existence of the ACP process. Which makes some amount of sense.
To explain more, and I'm not 100% solid on the history here, but my recollection is that "we use an FCP for API stabilization" and "one libs-api member signs off on new unstable APIs." With the advent of the ACP process, the approval of the ACP has itself become an approval of a new unstable API. And presumably, after that point, I'd guess that a new unstable API corresponding to that ACP could land without necessarily requiring the explicit approval of a libs-api member. I don't actually know if that's what's happening, but it would make sense if it was. That is, given an ACP approval, I wouldn't necessarily expect a libs-api member to need to sign off on a PR introducing the unstable API approved in the ACP.
So I think I now understand more of the reviewer problem of answering whether a PR should block on an ACP. My mental model (not necessarily speaking for the libs-api team) is that there should be at least one libs-api member that signs off on a new unstable API. The actual mechanism for that might be an ACP approval or it might be a PR approval directly that doesn't have an ACP. For a non-libs-api reviewer, I'd guess the answer is always, "since this PR is introducing a new unstable API, it needs to be approved by a libs-api member, and the process for doing that is by filing an ACP."
Apologies if this confuses things more... but it seemed like I might have connected the dots here and wanted to try to spell it out. And to be clear, the above is my recollection of the libs-api historical modus operandi, and not necessarily an immutable law that was always followed.

So the stance is something like "it's never wrong to block on ACP for something that changes the API". I suppose the utility in not always requiring an ACP would be if the PR passes review before someone can get to ask for ACP, which would skip some paperwork.
I've changed the PR to just mentioning the possibility that any reviewer might ask for an ACP for an API change.

I like @scottmcm's wording. Is there anything I should do to get this PR moving along?

So the stance is something like "it's never wrong to block on ACP for something that changes the API". I suppose the utility in not always requiring an ACP would be if the PR passes review before someone can get to ask for ACP, which would skip some paperwork.

Yeah, my understanding of the intention w/r/t the "please file an ACP, but also you don't always need it" is that if something is super obvious and easy to approve, with no apparent edge-cases, conflict, or additional things sneaking in alongside it... basically, if libs-api has already said "yeah we want this" and the PR is just fulfilling that in the most obvious way... it should just land.


Quadrature routines for pre-sampled data

Hello,
thanks for a great package!
I don't know if this is the right place to ask this question, but:
Are there plans for SciML to offer quadrature routines for pre-sampled data (where one either does not have the luxury of choosing the grid points at all, or at least not dynamically/adaptively? Right now this functionality is scattered throughout the Julia ecosystem (see eg NumericalIntegration.jl, Romberg.jl, Trapz.jl), even though I think this is a fairly common use case.  For reference, there is an excellent python package QuadPy, that inspiration might be drawn from, even though it does not offer functionality for arbitrary grids. SciPy of course does offer that.
I am asking this, because right now, I am typically rolling my own (eg irregular Simpson's) rules, and I thought that if many people do the same, it might be a waste of effort.

I think it would be great to add these kinds of methods, even non-adaptive, to here. They are widely used methods to approximate integrals, so there is no reason to leave them out.

Okay, I might try to do that (for some simple rules like trapezoidal/Simpson's). No promises when though. I may also need some guidance adhering to the code structure and API that this package, together with SciML, dictates.
Would you like me to close this issue in the meantime?

Let's leave this open until they are implemented.


UI pauses when loading results in search

Microsoft PowerToys version
0.33.1
Running as admin

[X] Yes

Area(s) with issue?
PowerToys Run
Steps to reproduce
open powertoys run then search for a document or an app and for like a split second while its searching for it, the UI will pause and you wont be able to type in the search input while its paused.
✔ Expected Behavior
UI keeps animating and be able to type in the input even while searching.
❌ Actual Behavior
Whole UI pauses/freezes for that split second when it searches for the thing, which blocks user from continuing to type in the search input.
This might be because the UI thread gets blocked by the searching thread or maybe they have the same thread?
Other Software
No response

I have updated to the latest version (0.49.1) and the issue still presists.

Could you attach a full bug report file?
Right-click on the tray icon and click Report Bug. Then drag-and-drop the generated file into the GitHub comment to upload it. Thanks!

PowerToysReport_2021-10-30-13-56-01.zip
Here is the file

So did you come up with a fix ?

@karimk123 I did not find anything wired in the logs?
cc: @jaimecbernardo FYI.

Well my issue may not be a bug, so it might not show something in the logs. The issue is just that the UI freezes for a second while searching in the PowerToys Run.

we do log the time for each actions in the report so we can ￼analyze what's going on and the performance issues.
I'll revisit the report to see if I do missed something :)

Nothing suspicious here.
It's usual for the UI freezing for a bit while searching but the input would still be accepted. I think there's another issue already to try and fix this. But blocking the user from typing is new.
You do say that "Whole UI pauses/freezes for that split second when it searches for the thing, which blocks user from continuing to type in the search input."
How is it blocking you? Are the keystrokes being ignored? What do you have to do start typing again?

Well yes because the UI is paused so i can't type until it's done freezing.

And it would be ideal if it didn't pause while searching and instead maybe there was a loading animation or something

And are the keys you press while frozen ignored or do they appear after unfreezing?

This might be a duplicate of https://github.com/microsoft/PowerToys/issues/14024, do you agree?

No they appear after freezing but if i type while it's frozen, it makes the freezing time a bit longer which just forces me to wait until it's done to start typing.

Yes i think it's the same issue

Duplicate of #12968

this is same.


Dropdown component

Description
adds a declarative SQL dropdown component
Checklist

[x] I have added a changeset

@csjh @ItsMeBrianD If I'm understanding the discussion: I like the component issuing the queries itself, rather than requiring a separate code fence to supply the values. We've tested that with folks a few times, and people find it fairly intuitive. It's also a lot more terse than needing to write the query as a standalone just to reference it in the component.

Keeping track of all the pages queries is necessary so we know which prerendered queries to fetch in the load function
I couldn't think of a way to make it work within SK's prerendering because the expectation from SK is that everything you want to prerender is known within the load function (a reasonable expectation), which isn't true for us -- the client can have any arbitrary amount of Dropdowns or any other usql component within the page
To "fix" that it's writing directly into .svelte-kit where it would have written the prerendered responses

@csjh -- coming back to this, I think the syntax is just a little off and possibly too permissive.
Let me know what you think of this:

label -> should be the label on the actual dropdown (e.g. the form label)
value_label -> optional label to be shown in the dropdown
value -> column to be used for the actual returned value when referenced. If there is no value label, this is displayed.
value and value_label should be fragments of a select which is run against the from + where arguments. I think having the ability to inline the additional where clause in value label is pretty tricky.
order -> optional column into the order by of the generated query and resulting option list
Deduplication: depending on the source table, we could have duplicate entries here. I think we should dedupe across the pair of value and value_label. This still leaves the possibility of duplicate value_labels (e.g. two customers with different ids, and the same first name, but the user has the ability to fix that up on their own)

Current
<Dropdown
 from=reviews
 label="select first_name || ' ' || last_name from orders where id = order_id"
 value=order_id
 name=selected_order_id
 where="nps_score > 7" />

Proposed
<Dropdown
 from=reviews
 label="Customer" -- the actual label on the
 value=order_id -- the column that is being selected
 value_label = first_name || ' ' || last_name
 name=selected_order_id
 where="nps_score > 7"
 order= "nps_score desc"
 />

Resulting internal query
select
first_name || ' ' || last_name as value_label,
order_id as value,
from reviews
where nps_score > 7
order by nps_score desc
group by all -- dedupe


WEB3-229: fix: run history corruption tests only when the feature is enabled

Otherwise the integration tests will fail to compile if the unstable-history feature is not enabled.

Thank you!


[UI] EVEREST-1688 Blur text input on scroll

EVEREST-1688

@fabio-silva @solovevayaroslavna I decided to blur all inputs for the onWheel event, since I see no benefit of editing the input while scrolling. If you think this is only necessary for number inputs, I will modify this, so lmk


Added Dice Game

Description
It is a fun game that helps to decide a player to win. For proper functionality, the user has to refresh the page.
Fixes #313

Explain the Testing instructions
Test Configuration:

Operating system: Windows 11
Text-editors used: Vs Code

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented on my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules

ATTACH SCREEN-SHOTS / DEPLOYMENT LINK

yes @VidhiBhatt01 we can accept it


Update nodes-method-xml-data-type.md

CROSS APPLY applies nodes() to each row in the ProductModel table and returns only the rows that produce a result set.

Learn Build status updates of commit 2495eaf:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/t-sql/xml/nodes-method-xml-data-type.md
:white_check_mark:Succeeded

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

@mikeraymsft
Can you review the proposed changes? IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off
With thanks to @ratra1


Editing axaml file has no intellisense (code-completion) in Visual Studio 2022

Describe the bug
Editing axaml file has no intellisense (code-completion) in Visual Studio 2022
To Reproduce
Steps to reproduce the behavior:

Install Visual Studio 2022.

Install Avalonia VS Extension (https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaVS)

Create a new Avalonia C# Project.

Edit "MainView.axaml" file, type "<" to add controls (e.g., ) and trigger intellisense

Error: Intellisense (code-completion) is not showing any relevant suggestions

Expected behavior
Editing axaml file should have intellisense. here is an example for a WPF application editing a xaml file.

Before start editing, you must build .

As @workgroupengineering said, an initial build is needed to make the editor work. This is by design.

As @workgroupengineering said, an initial build is needed to make the editor work. This is by design.

Thanks, that helps!
However, looks like the "initial build" solution does not work if the target platform is "Web" only.

I'd highly recommend to also target desktop always. Much easier to debug imo, then take care of web after the main things work as expceted.

After I built it, I still have this problem

After I built it, I still have this problem

The latest extension seems broken
Try this one https://marketplace.visualstudio.com/_apis/public/gallery/publishers/AvaloniaTeam/vsextensions/AvaloniaVS/11.5/vspackage. And disable auto updates for extensions.
Worked for me.

After I built it, I still have this problem

The latest extension seems broken Try this one https://marketplace.visualstudio.com/_apis/public/gallery/publishers/AvaloniaTeam/vsextensions/AvaloniaVS/11.5/vspackage. And disable auto updates for extensions. Worked for me.

This work for me too
Thanks!

Suffering this issue from start of developing at Avalonia in Visual Studio. 11.5 didn't resolved my problem.
Arch: x64,
Native: Off,
Build: successful

But, sometimes it is starting work until next rebuild/solution clear/solution reopen


Add rtl support

Issue #824

Thanks for PR @boussadjra
Too fully support RTL we will need also update styles like

paddingLeft to paddingStart
marginLeft to marginStart
paddingRight to paddingEnd
borderLeft to borderStart
left to insetStart
right to insetEnd
and so on...

Do you mind trying to add those also? Or, if it's not very urgent I could finish this in few days.

also I think it's better to use
html[dir="rtl"] {
  direction: rtl;
}

instead of
html[dir="rtl"] * {
  text-align: right !important;
}

@bdrtsky thanks, we need to update the other dependencies like nuxt-themes/typography and nuxt-themes/elements

Could having a @rtl media query in @nuxt-themes/tokens help in implementing that feature?

Back to this issue. I think having ToggleDirection component doesn't have practical usage, maybe put this into app.config instead?

If I add it to nuxt.config how can I switch from English to Arabic content?

If I add it to nuxt.config how can I switch from English to Arabic content?

Switching between 2 separate docs languages? Text direction should change when you switch language. Or you need to change direction even when there's only English?

You're right, I added this just to mention the ability to change direction and to checkout the right layout

Before merge it needs those:
https://github.com/nuxt-themes/elements/pull/185
https://github.com/nuxt-themes/typography/pull/40

There's still few issue to fix: how to handle directional icons (like, arrows), and CodeBlock tabs effect is broken. But in general, I would say RTL support should be pretty good.
@boussadjra do you mind checking it when Elements & Typography will be released?


Hardcoded exception message

https://github.com/laravel/framework/blob/4c0f7abdcc3ddbc4eac8694e793dc91cba548c85/src/Illuminate/Validation/ValidationException.php#L56
We are at the same time unable to set proper exception message, translate it or what ever and by default it is not changable.
A good option is to make that message translatable or some how setable.

You are able to set validation exception messages via the public static function withMessages. An example of this can be found @ https://stackoverflow.com/a/47223679

It is not about the error messages >
If you have created custom Request lets say for Contact form, on failed validation this exception message is added to the response "The given data was invalid.".

{"message":"The given data was invalid.", "errors":{}}

It's been discussed a few  times here, and so far, a few workarounds have been suggested, such as this one. There's also been a few pull requests to change the behavior, but none merged.

Someone get Scooby Doo on this case. Makes zero sense why something like this would be hard-coded (and as a constructor parameter at that) when extreme care and flexibility in other aspects of the framework exist.

Hi there,
Welcome to Laravel and we are glad to have you as part of the community.
Unfortunately this GitHub area is not for ideas, suggestions etc. This is only for issues/bugs with the framework code itself.
I will be closing your ticket here. You are able to open a ticket at https://github.com/laravel/ideas
Alternatively you are able to open a PR using the Contributions guidelines: https://laravel.com/docs/5.7/contributions#which-branch
If you feel I've closed this issue in error, please provide more information about how this is a framework issue, and I'll reopen the ticket.
Thanks in advance.

This is not an idea..
In case you have a non english API sending this automatic hardcoded message by default is an issue !

Its not a bug, it's a design decision. You are more than welcome to submit a PR to allow that exception to be translated like the others 😄

It's not a design decision, it's what appears to be a temporary quick fix to a problem that came up while working on it. Using a hard-coded language string in a constructor is probably the worst thing I've seen in this framework, and it appears to be due to the limitations of another package.
Here are some PR's that have been outright closed:
https://github.com/laravel/framework/pull/22112
https://github.com/laravel/framework/pull/22045
Taylor said:

We can't use a foundation helper from a component.

Which confirms everything I've stated.


feat: support scaling for fragments with no shuffle dispatcher

I hereby agree to the terms of the Singularity Data, Inc. Contributor License Agreement.
What's changed and what's your intention?
This PR provides scaling ablities for Fragments upstream and downstream of NoShuffle dispatcher
The current implementation iterates through the table fragments when building the reschedule context, which detects the type of the dispatcher and creates an index of the no shuffle fragment.
For fragments downstream of NoShuffle, when scaling

no rebalance vnode operation is performed on them, all vnode assignments are copied directly from the root of the NoShuffle cascade relationship, and only the root of the NoShuffle is rebalanced.
skip the creation of HangingChannel, because the upstream and downstream of NoShuffle expand and shrink at the same time, there is no HangingChannel, unlike Hash, which needs to draw HangingChannel from the rest of the upstreams
Skip upstream_fragment_dispatcher_ids and upstream_dispatcher_mapping in the reschedule, because there is no upstream to update.

For the fragment upstream of NoShuffle

the downstream_fragment_id in the reschedule should always be None, because there is no downstream MergeNode to update
we need to modify the downstream actor id in the dispatcher, where the length should always be 1.

This PR test uses the following SQL, which creates a diamond dependency
create table t1 (v1 int);
create materialized view m1 as select * from t1 where v1 > 10;
create materialized view m2 as select * from t1 where v1 > 20;
create materialized view m3 as select * from m2 where v1 < 70;
create materialized view m4 as select m1.v1 as m1v, m3.v1 as m3v from m1 join m3 on m1.v1 = m3.v1;
create materialized view m5 as select * from m3;

Then, after inserting 1 to 100 into t1 and continuously reschedule, the data in m5 should always be 21 to 69 with 49 numbers.
The specific DAG looks like this

This PR also detects a bug, the upstream_actor_id of the chain actor are not set.
Checklist

[x] I have written necessary rustdoc comments
~- [ ] I have added necessary unit tests and integration tests~
[x] All checks passed in ./risedev check (or alias, ./risedev c)

Documentation
If your pull request contains user-facing changes, please specify the types of the changes, and create a release note. Otherwise, please feel free to remove this section.
Types of user-facing changes
Please keep the types that apply to your changes, and remove those that do not apply.

Installation and deployment
Connector (sources & sinks)
SQL commands, functions, and operators
RisingWave cluster configuration changes
Other (please specify in the release note below)

Release note
Please create a release note for your changes. In the release note, focus on the impact on users, and mention the environment or conditions where the impact may occur.
Refer to a related PR or issue link (optional)
https://github.com/risingwavelabs/risingwave/issues/5740

Cool! 🚀🚀🚀 How about adding the test to src/tests/simulation_scale/tests/mv_on_mv.rs so that we can test it automatically with madsim? We may take nexmark_q4_materialize_agg_cache_invalidation as an example.

Cool! 🚀🚀🚀 How about adding the test to src/tests/simulation_scale/tests/mv_on_mv.rs so that we can test it automatically with madsim? We may take nexmark_q4_materialize_agg_cache_invalidation as an example.

ok, i'll add that

Added a simple simulation test on noshuffle relation


Tree UI tweaks and fixes

This PR aims to fix some Tree issues I noticed, making the UI a bit more transparent, adding a setting to make selecting nodes less finnicky and fixing a bug that became noticeable when said setting is used.
Tested on Windows, everything seems to work.
I'm new here and just testing the waters for now - feedback is appreciated 😉

omg the double click fix


split term: (bud) Bonnevie-Ullrich syndrome

Term to split:
Bonnevie-Ullrich syndrome is currently a synonym of 'Turner syndrome' (per DO) but NCIT treats this as a separate class.
There is an editor note on Turner syndrome:
Editor note: consider splitting BU syndrome
Name for new terms:
Bonnevie-Ullrich syndrome
see: NCIT

related to https://github.com/monarch-initiative/mondo/issues/3811

duplicate #5089


Upload package error

https://github.com/conan-io/conan-package-tools/blob/4b9e3acf9b4a569600aa305a490b2118ab1f311b/cpt/runner.py#L71
test_package dependencies come before created package itself in r['installed']
This results in trying to upload non existent package.

Do you mean the uploaded package should be the "last installed", right?

Released 0.19.3!


Upgrade react version

publish rc

publish rc

Ooh nice! Have any compatibility changes with React v18 already been made or were no changes necessary?

Apparently no changes here, lots of changes in terraware-web

publish rc

publish rc

publish rc

publish rc

publish rc

publish rc

publish rc

publish rc

publish rc

publish rc


Replace hardcoded defaults with standard environment variables

Hi 👋 ,
thanks for the nice extension library for hatch. I'm getting started using it for an academic project, but noticed that the default include and library paths point to some homebrew directories that dont necessarily exist. I -think- (?) I can override these using my own conda paths, but it would be nice to have the default pull from envvars (e.g., LDPATH, etc).

Hi 👋 ,
thanks for the nice extension library for hatch. I'm getting started using it for an academic project, but noticed that the default include and library paths point to some homebrew directories that dont necessarily exist. I -think- (?) I can override these using my own conda paths, but it would be nice to have the default pull from envvars (e.g., LDPATH, etc).

Hey! Thanks for the feedback 🙂 The default include paths (and all include paths directly controlled by this lib) are actually checked for existence. In addition, all standard env vars are actually pulled and merged or overridden from env vars, as well as supported in configuration.
Let me know if this doesn't fit the use case you're describing, otherwise I think I'm alr doing what you're asking so I'll go ahead and close 😋


Release 4.0.0

Hi, are there any plans to merge this? I'd like to contribute some changes, but I'm not sure whether I should base them on the 4.0.0 branch or the currently released one.

Hi, are there any plans to merge this? I'd like to contribute some changes, but I'm not sure whether I should base them on the 4.0.0 branch or the currently released one.

yep its very close - if you are going to do any PRs would advise doing them against this branch. What sort of things did you have in mind?

I was going to add analytics support, however looking at the PR now, it seems it's already a part of this PR, so that's great. Is there anything I could do to get the PR merged sooner then?

I was going to add analytics support, however looking at the PR now, it seems it's already a part of this PR, so that's great. Is there anything I could do to get the PR merged sooner then?

We're about to deploy our Edge API into production at which point we will be releasing all our v2 SDKs - this is being worked on hard and very close!
We have added semantic versioning in our flag engine (https://github.com/Flagsmith/flagsmith-engine/search?q=semver in python) - this would be a great addition!


Release: v2.8.0

Changes:

Use handshake mechanism for safe app/sdk (https://github.com/gnosis/safe-react/pull/1138)

Environment:

Desktop ci fixes (https://github.com/gnosis/safe-react/pull/1159, https://github.com/gnosis/safe-react/pull/1150)

Travis automatic deployment:
https://pr1165--safereact.review.gnosisdev.com/app


Move the react state changes back inside the use effect to prevent the query from not being triggered

Moving the preventQuery and clearError outside of the useEffect or any useMemo and useCallback's prevents the state from being updated correctly, leaving the Korrel8r API to never get called.
Here we are moving the state back into the useEffect since it't not a large enough code migration to break out the useMemo and useCallbacks

/lgtm


反复针对相同/不同的图片持续执行PaddleOCRAll.Run()10分钟后stdout显示'dnnl:error' could not execute a primitive并退出进程

https://github.com/PaddlePaddle/Paddle/issues/34492
https://github.com/PaddlePaddle/PaddleClas/issues/2024
https://aistudio.baidu.com/paddle/forum/topic/show/1917027
隔壁PaddleOCRSharp .NET封装库的文档也提到了 https://github.com/raoyutian/PaddleOCRSharp/blob/8f3f71ece472583f035975835f4f40bfb0cf4612/doc/README_question_en.md?plain=1#L6-L8

Q： WebAPI部署遇到错误：could not execute a primitive
CPU加速则会遇到，目前官方bug。初始化一次调用多次就会这样，每次都重新初始化就不会这样。pdserving部署后也不会这样

每次重新初始化再推理就不会出现报错，但这样每次都要重新初始化，比较耗时

那就得部署pdserving或者hub部署 我现在用的pdserving，但是会内存溢出，不一定什么时间就会内存100%，然后程序被kill掉

https://github.com/oneapi-src/oneDNN/issues/914#issuecomment-740056122 中曾指出本错误有可能跟oom系统内存不足有关
而在#46 中进一步发现设置PaddleConfig.MkldnnCacheCapacity为0时持续提供不同的图片执行PaddleOCRAll.Run()最终几乎必定会触发本错误


[Bug]:Backend logic for sending emails

Description
Bug Description
Describe the bug:
I noticed that the contact form has a netlify property, but I couldn't find any backend logic for sending emails upon form submission. Could you please confirm if there is already backend logic in place for sending emails upon form submission? If the logic is present but not visible, kindly close this issue.
Expected behavior:
Upon submitting the contact form, the system should send an email using backend logic. If the backend logic is not yet implemented, I am willing to fix this issue using Nodemailer and Google App Passwords.
Detailed Explanation:
I am interested in contributing to fix this issue. If the backend logic for sending emails is not implemented, I propose to use Nodemailer and Google App Passwords for this functionality. Please provide guidance or access to the backend code.
Screenshots
No response
Checklist

[X] I have checked the existing issues.
[X] I follow Contributing Guidelines of this project.
[ ] I am a IWOC'24 contributor.
[ ] I am a JWOC'24 contributor.
[X] I am a SWOC'24 contributor.

Code of Conduct

[X] I agree to follow this project's "Code of Conduct".

This project is hosted on netlify and so form submission is managed by that platform directly to my email. Pls work on other issues @Niharika0104


The video size is 720p, though the picture appears only on a part of it + AutoPlay is enabled although I've disabled it.

Possibly related to #1844 ?

Looks about the same error.
But this has been solved for me by installing the Dev build.
This has now returned with the latest Dev build update.

I can confirm the problem.
It existed in version 2.1.7
I then moved to Dev builds and it was fixed.
Now it has returned.
YouTube is testing out a new player design and they have changed something over the past week. I think that's what causing the problem.

@djsavta Can you tell me if it still occurs? If Yes, please post in existing issues, to avoid duplicates.
Resizing bug: #1844
Auto-play not working: #1869

@ireun
It works fine with the new player


Modal popup not displayed on home page. Unable to proceed further and blocked.

Are you requesting a feature or reporting a bug?
Bug
What is the current behavior?
When I go to http://aperture.synacor.net or https://aperture.synacor.net , the modal popup is not displayed. I'm unable to continue with my tests. (see bug screenshot below)

What is the expected behavior?
The modal popup should be displayed. (see expected screenshot below)

How would you reproduce the current behavior (if this is a bug)?
Run test in Chrome, Safari, Firebox.  (Remember to clear cache to see the modal again if user already clicked modal once)
Provide the test code and the tested page URL (if applicable)
Tested page URL: http://aperture.synacor.net ,  https://aperture.synacor.net , https://start.toshiba.com/ ,
Test code
import { Selector } from 'testcafe';

fixture `Test fixture`
.page(`https://aperture.synacor.net`);

test('Click close button to dismiss modal', async t => {
    await t.click(Selector('.modal__email-campaign').find('.close'));
});

Specify your

operating system: Mac 10.13.6 (High Sierra)
testcafe version: 0.21.0 (Latest version)
node.js version: 8.9.4

Hi @sijosyn
Thank you for the detailed description. I've reproduced the problem.

Hi @sijosyn,
This issue is related to https://github.com/DevExpress/testcafe-hammerhead/issues/1380.
The tested site sends two requests:
http://aperture.synacor.net/_/?_uri=component%3A%2F%2FSynacor%2FGen4%2FConfiguration%2FComponents%2FWeather%2F%3Fparse_active%3D0&_action=locate
and
http://aperture.synacor.net/_/?_uri=component%3A%2F%2FSynacor%2FGen4%2FConfiguration%2FComponents%2FModal%2FEmailCampaign%2F&_action=display
These requests are received with a wrong body if headers are lowercased.

Thanks @LavrovArtem, @miherlosev for investigating & fixing this issue quickly. Nice job. Let me know here the TestCafe version that will be available with this fix.

Fixed in https://github.com/DevExpress/testcafe/pull/2743


Merge pull request #1 from MaJerle/master

update

What is the purpose of this update, please?

 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.


🚀 : Selective cache purges in Cloudflare after deploying with github actions

Is your feature request related to a problem? Please describe.
Managing cache purges in Cloudflare after deploying with GitHub Actions can be cumbersome, especially when only specific resources need to be purged. Currently, the process involves purging the entire cache, which can lead to unnecessary cache invalidation and potential performance issues.
Describe the solution you'd like
I would like the ability to perform selective cache purges in Cloudflare after deploying with GitHub Actions. This means being able to specify particular URLs or resources that need to be purged from the cache, rather than purging the entire cache.
Describe alternatives you've considered
One alternative is to continue purging the entire cache, but this is inefficient and can impact performance. Another alternative is to manually purge specific URLs through the Cloudflare dashboard, but this is time-consuming and prone to errors.
Additional context
Integrating selective cache purges into the GitHub Actions workflow would streamline the deployment process and improve overall efficiency. It would also reduce the risk of unintended cache invalidation and ensure that only necessary resources are purged from the cache.
Ref: https://github.com/langxapp/website/blob/main/.github/workflows/deploy.yml
Contributor: @DH-555
If you want speed up process of this issue, please send 🚀 as a reaction.

https://github.com/marketplace/actions/cloudflare-purge-cache @DH-555

https://gist.github.com/xuelink/66219e872153ac7db79d4c9387e7918d


Close an unfocused tab (using mouse) results in focus switched

This bug comes with #737. Very sorry for not having a full test.
Repo:
open tab a,b,c,d
activate c
mouse close a
expect c is shown and is the only highlight in tabview
alt-1
expect b is shown and is the only highlight in tabview

Manual test cases:
open tab a,b,c,d
activate a
ctrl-w
ctrl-w
expect c is shown and is the only highlight in tabview
open tab a,b,c,d
activate a
mouse close a
mouse close b
expect c is shown and is the only highlight in tabview
open tab a,b,c,d
activate c
mouse close a
expect c is shown and is the only highlight in tabview
alt-1
expect b is shown and is the only highlight in tabview
open tab a,b,c,d
activate c
mouse close a
expect c is shown and is the only highlight in tabview
mouse activate b
expect b is shown and is the only highlight in tabview
open tab a,b,c,d,e
activate c
ctrl-w
ctrl-w
ctrl-w
expect d is shown and is the only highlight in tabview
ctrl-w
expect e is shown and tabview is hided

And is there any place to put manual test cases? In case of unconsciously / accidentally breaking other features.

We actually don't have any UI tests set up quite yet, though I think someone is working on them, so you don't really need to worry about adding them yourself quite yet.

I wish I will not break other features.

I wish I will not break other features.

Any work worth doing always has a chance of bugs, the important thing is to record them when found, learn the cause, and work on getting them fixed 🙌

You're right

The described behavior should be gone in master. Closing.

linux vim ctrl-w
Switching the VIM window causes the terminal to close


e2e with Makefile for tests

According to the trello's task; Makefile might be the right solution.
Indeed, here is a PoC:
First create a Makefile file at the root of the repo then I suggest to put this in for your goal:
test: remove-deps
	make simple-install

simple-install:
	composer create-project jadjoubran/laravel5-angular-material-starter --prefer-dist
	cd laravel5-angular-material-starter
	npm install -g gulp bower
	npm install
	bower install
	config-install
	vendor/bin/phpunit
	# Add here JS tests n shits because I don't know how to launch them...

remove-deps:
	rm -rf laravel5-angular-material-starter
	rm -rf vendor
	rm -rf node_modules
	rm -rf bower_components

config-install:
	cp .env.example .env
	mysql -e 'create database laravel;'
	export DB_DATABASE=laravel
	export DB_USERNAME=travis
	export DB_PASSWORD=
	php artisan key:generate
	php artisan jwt:generate
	php artisan migrate

To finish, your .travis.yml should look like this:
language: php

php:
  - 5.5
  - 5.6
  - 7.0
  - hhvm

before_script:
  - travis_retry composer self-update

script: make test

But sure, you can add other Makefile or command to run in it!
Don't know if it's what  you want but we never know...
Cheers!

Thanks @ptondereau  😄
I've never used a Makefile with travis before so I will read up on this as soon as possible

btw @chihab, according to @ptondereau this will solve the previous reported issue

Thanks @ptondereau.
I did a lot of Makefiles before back when I was programming C, never came to my mind to use it on a PHP/JS project ! :)
Makefile and .travis config file are a lot similar as they both run commands (in a shell environment) in a particular order.
Before deciding the way to do it, what would be the best trigger for building and testing a stable release using composer create-project ? I would say on each stable release but how could travis know that ? (It probably depends on the way we link composer stable release to the stable tag/branch on our repo).

Hate to be the one that point this but Makefiles won't work in Windows if they're written in Standard Unix so we will need to be carefull about that, or especify that it's required to have Cygwin installed, so it can runs without troubles, that by the way it's included in Laragon as discused in https://github.com/jadjoubran/laravel5-angular-material-starter/issues/290#issuecomment-230073483

Thanks @flick36, we could use a Makefile here since we're doing doing CI using Travis CI, which can test on Linux and OS X only. However, the commands run in the Makefile should better be platform agnostic since they would normally be run by project users.
Once we'll have a stable branch, the one targeted by composer create-project, each PR/commit on that particular branch would run the "composer create-project" whilst the others branches would run only the the classical travis build steps.
We could do this using TRAVIS_BRANCH environment variable prepared by Travis-ci which gives us the name of the branch in which a PR or a commit has been done. We'd do something like:
install:
 - script: ./scripts/run-install.sh

before_script:
 - mysql -e 'create database laravel;'
 - export DB_DATABASE=laravel
 - export DB_USERNAME=travis
 - export DB_PASSWORD=

script:
- php artisan migrate --force && gulp && vendor/bin/phpunit

#!/bin/bash
set -ev
if [ "${TRAVIS_BRANCH}" = "stable" ]; then
    composer install && cd laravel5-angular-material-starter
else
    cp .env.example .env
    php artisan key:generate
    php artisan jwt:generate
fi
npm install -g gulp bower && npm install && bower install

For that, we'd need a stable branch, @jadjoubran. :)

@chihab would you recommend keeping master for stable and then having new releases in branches?

@jadjoubran yes ! as suggested by this very known post by Vincent Driessen: http://nvie.com/posts/a-successful-git-branching-model/

We consider origin/master to be the main branch where the source code of HEAD always reflects a production-ready state.

@chihab I actually use this for all my projects.. why not use it here as well 😄
Thanks for the recommendation
Btw master is stable right now, and I just pushed a develop branch where I'll be working from now on
Would anyone be interested in sending a PR? thanks a lot!

Okay thanks @jadjoubran. I'll send a PR asap.

Closing since this is going to be the last release (supposedly) for Angular 1


readiness gate conditionType too long

we're starting to rollout the readiness gates on our cluster and have just come across a limitation with the way, readiness gates are set:
kubernetes imposes a 63 character limit on the length of readiness gates. Since the required string consists of target-health.alb.ingress.k8s.aws/<name>_<name>_<port> this is a problem for services, which rely on the name limit of 63 chars for service and ingress names.
from our logs:
Deployment.apps "some-lengthy-service-name-that-is-not-too-long" is invalid: spec.template.spec.readinessGates[0].conditionType: Invalid value: "target-health.alb.ingress.k8s.aws/some-lengthy-service-name-that-is-not-too-long_some-lengthy-service-name-that-is-not-too-long_http": name part must be no more than 63 characters

I think we should simplify the label name. Because as per the documentation https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set it can only be upto 63 chars and "target-health.alb.ingress.k8s.aws" itself takes 33 characters.

@SaranBalaji90 not sure about the prefix, from our observation it's not taken into count somehow

@SaranBalaji90 not sure about the prefix, from our observation it's not taken into count somehow

@nirnanaaa Thanks. I updated my comment. Looks like name part in the key can only be upto 63 character.

How the name is currently being generated (@devkid why do we need the service name part? shouldn't ingress+backend port be enough? Ideally only the ingress name, since that's also capped to a certain number of characters AFAIK):
	return api.PodConditionType(fmt.Sprintf(
		"target-health.alb.ingress.k8s.aws/%s_%s_%s",
		ingress.Name,
		backend.ServiceName,
		backend.ServicePort.String(),
	))

Some ideas how it might look like:
	return api.PodConditionType(fmt.Sprintf(
		"target-health.alb.ingress.k8s.aws/%s_%s",
		ingress.Name,
		backend.ServicePort.String(),
	))

	return api.PodConditionType(fmt.Sprintf(
		"target-health.alb.ingress.k8s.aws/load-balancer-tg-ready",
	))

I've been wondering what the implications would be if we would just condense the syntax, or even make it a static string. If a pod is registered in multiple TGs it would require some internal logic to wait until the pod is healthy in all TGs before setting it to true (if we were using a static setting)
The folks over at the blue side are also using a simple static string: https://github.com/kubernetes/ingress-gce/blob/f2c8f40bf1968032b6a267632b5a0e767b9d0467/pkg/neg/types/shared/types.go#L20

Each tuple (ingress name, backend name, port) maps 1:1 to a target group – it was easy to implement this way (only ingress+backend port alone would be ambiguous – what if you have different backends with the same port in the same ingress?) and there is more logic necessary to aggregate the condition status from multiple target groups.
Rough idea for implementation for either static condition type or one that only includes the ingress name:

have a single global go routine that collects "pod has become healthy in target group" and "pod has been removed from target group" events through a chan
have reconcilePodCondition send the "pod has become healthy in target group" event through the chan instead of it directly adding/setting the condition status
have RemovePodConditions send the "pod has been removed from target group" events through the chan instead of directly removing the condition status
the global go routine can react on the events and only make the condition(s) true if the pod is ready in all target groups

@devkid
both reconcilePodCondition and RemovePodConditions have a filter by t.Backend.
That means the pods selected should only contains within the t.Backend.
pods, err := c.endpointResolver.ReverseResolve(t.Ingress, t.Backend, targets)
	if err != nil {
		return err
	}

The idea @nirnanaaa  suggested should be fine.
	return api.PodConditionType(fmt.Sprintf(
		"target-health.alb.ingress.k8s.aws/%s",
		ingress.Name,
	))

Do the following filtering in both podHasReadinessGate and podConditionForReadinessGate should have backward compatible.  Please correct me if I am wrong.
func podHasReadinessGate(pod *api.Pod, conditionType api.PodConditionType) bool {
	var lenPrefix = len(ConditionTypeTargetHealthPrefix)
	ingressName := ""
	strConditionType := string(conditionType)
	if strings.HasPrefix(strConditionType, ConditionTypeTargetHealthPrefix) {
		ingressName = strConditionType[lenPrefix:]
	}

	for _, rg := range pod.Spec.ReadinessGates {
		if rg.ConditionType == conditionType {
			return true
		}

		//In version 1.1.6, the conditionType is "ingress_service_port"
		//But it hits the 63 characters limitation in k8s, it could be ingress only
		conditionDotType := string(rg.ConditionType)
		if strings.HasPrefix(conditionDotType, ConditionTypeTargetHealthPrefix) {
			suffix := conditionDotType[lenPrefix:]
			if len(suffix) > 0 {
				var array = strings.Split(suffix, "_")
				if len(array) == 3 {
					if ingressName == array[0] {
						//Match ingress only
						return true
					}
				}
			}
		}
	}
	return false
}

Ingress name can be upto 253 characters long so the only option is static string option suggested by @nirnanaaa. Could we just use the static string and not worry about aggregating the condition status from multiple target groups?

@devkid @nirnanaaa  Static string makes thing easier.  One pod in multiple ingresses or target groups are rare cases. Even In this case, the pod becomes ready when it registered into one of the ingress or target group. People can already have a way to split the pod into two different pods when they think attach one pod on multiple target groups are risky.
Like the idea of static string.
	return api.PodConditionType(fmt.Sprintf(
		"target-health.alb.ingress.k8s.aws/load-balancer-tg-ready",
	))

@shaoxt I don't really mind a static string tbh. It reduces complexity, so all in for that


[Work in progress - do not merge] Replace builtin CentOS 5.x with 8.0 templates

Description
New default/bultin templates for major hypervisors:

CentOS 8.0 (VMware/KVM/XenServer)
Minimal install with "standard" / "core" groupinstall (a.k.a. additional network tools - ifconfig, route, etc.)
nano, iftop, iotop, htop, bash-completion, traceroute
ssh running, systemctl stop/disable firewalld, SELinux disabled
disabled "predictive" interface names (net.ifnames=0 added to kernel boot line)
stripped UUID/MAC from eth0 network config file
VMware: opensource variant "open-vm-tools" installed - recommended by VMware (instead of using the one from ESXi hosts); both vmw_pvscsi and vmxnet3 drivers present and details added to vm_template_table to spin VMs with those devices
XenServer: XenServer Tools 6.5sp1 installed (xs-tools confirmed as running, considering this is CentOS8 which the xs-tools installation script was not aware of)
KVM: no special configuration, VirtIO present by default

Types of changes

[ x] Enhancement (improves an existing feature and functionality)

Screenshots (if appropriate):
How Has This Been Tested?
Templates were deployed on ACS install with old versions of hypervisors: VMware 5.5, XenServer 6.5sp1 fully patched up to patch 1066 and CentOS 7.3 (3 clusters, mixed env) and verified to work on those versions of hypervisors.
Yet to be tested against VMware 6.0/6.5/6.7, XenServer 7.0, 7.1, 7.x and Ubuntu 16/18, CentOS 7.6 maybe - but if it works on older ones than any newer hypervisor should be no problem.
Comment:

The only concern is that XenServer 6.5 must have all the patches installed (confirmed that patch XS65ESP1066 is needed) - otherwise, CentOS 8 (actually, anything newer than CentOS 7.2) will not boot successfully.

@blueorangutan package

@andrijapanicsb a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

I need "help" confirming that I've done the proper job of removing an ancient template "" which was added in 2.2 and then marked as  removed in 4.5 - this is purely cleanup so we can more eassily observe those in vm_templates table (I've issues with garbage collection)

I've added the delete SQL statement for schema upgrade cleanup file from 4.13 to 4.14 - that is fine for sure
I've removed 2 lines from the setup/db/templates.sql - so that the template is NOT added in the dirst place for the new installations on master (to be 4.14) - this one is what I would like someone to confirm is OK.

Packaging result: ✖centos6 ✔centos7 ✔debian. JID-379

@blueorangutan package

@andrijapanicsb a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

(original templates.sql file might not be the right place to change things, will need to redo some changes later)

Packaging result: ✖centos6 ✔centos7 ✔debian. JID-380

Wrong places to edit the files, closing this one. Work continued in #3712


Update example-chrome.yml

 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.

@AnjuGiris
Your change to this workflow will stop it working. If you are just practicing for your own benefit, please make sure that your pull requests only target your repository fork and not the production repository master branch used by everybody.

@AnjuGiris
It looks like you copied the workflow from https://docs.cypress.io/app/continuous-integration/github-actions#Basic-Setup
It will not work here in this repository, because this repo is a "mono-repo" and examples are each separate Cypress projects in sub-directories like examples/basic.


Error with uncover using semi-transparent-cover

Starting from v0.5.4, the following code errors:
#import "@preview/touying:0.5.5": *
#import themes.metropolis: *

#show: metropolis-theme.with(
  config-methods(
    cover: utils.semi-transparent-cover.with(alpha: 80%)
  )
)

#slide(repeat: 2, self => [
  #let (uncover,) = utils.methods(self)

  #uncover("2-")[Uncovered content] // Error: Type dictionary has no method get
])

This worked fine in 0.5.3 (though I'm not sure if I used everything correctly).

Sorry, this is a regression bug and it will be fixed in the next version, but not soon so you can write it yourself:
/// Cover content with a transparent rectangle.
///
/// Example: `config-methods(cover: utils.semi-transparent-cover)`
#let semi-transparent-cover(self: none, alpha: 85%, body) = {
  cover-with-rect(
    fill: utils.update-alpha(
      self.page.at("fill", default: rgb("#ffffff")),
      alpha,
    ),
    body,
  )
}


Compile Error

I am getting the following error when attempting to compile our code
ERROR in<EMAIL_ADDRESS>349:27-42 Can't import the named export 'defineComponent' from non EcmaScript module (only default export is available)
I followed the readme instructions for npm install and then the standard import of the code.
import { createHead }                                     from '@vueuse/head'
"@vueuse/head": "^0.6.0"
"webpack": "^4.46.0"
running Node: v14.17.1
Thanks!

I found this suggestion in https://github.com/vueuse/vueuse/issues/718
which  when added to the my webpack configuration did resolve the issue.
module.exports = {
  configureWebpack: {
    module: {
      rules: [{
        test: /\.mjs$/,
        include: /node_modules/,
        type: "javascript/auto"
      }]
    }
  }
}


startup.py line 8 in : ImportError: cannot import name tasks

Getting this on develop branch (running on Fed Node) when I start:
rippler@ubuntu:/home/xcp/.cache/counterblock$ ps -ef | grep counterblock        root      1976     1  0 14:55 ?        00:00:00 runsvdir -P /etc/service log: nterblock.lib.processor import messages, caughtup, startup #to kick off processors   File "/home/xcp/federatednode_build/env.counterblock/local/lib/python2.7/site-packages/counterblock/lib/processor/startup.py", line 8, in <module>     from counterblock.lib.processor import StartUpProcessor, CORE_FIRST_PRIORITY, CORE_LAST_PRIORITY, api, tasks, start_task ImportError: cannot import name tasks

Could this be temporary due to the fact that I'm still catching up with the blockchain or is this a new issue?

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

please reopen if an issue


scary number of analyzer warnings on EF samples

FYI there are 90 individual projects in the EntityFramework.Docs\samples\core, but the Samples.sln only contains 85 projects. The missing projects are

EFGetStarted.Android
EFGetStarted (Xamarin)
EFGetStarted.iOS
GetStartedWinForms
GetStartedWPF
which should probably be included (for reader interest and to ensure CI testing).

VS analyzers (plus my favourite Roslynator.Analyzers giving RCS1234 messages) spit out an alarming number of Warning/Messages
which is not a happy UX for those of nervous disposition.
Inevitably some are new .NET 8.0 and C# v11 magic (like "Use primary constructor"), but there are many ".. can be simplified" that suggests the EF samples are lagging behind reasonable professional dev progress and expectation

num
qty
code
Description

1
138
CA1050
Declare types in namespaces (cf RCS1110 below)

2
7
CA1806
'Split_query_for_non_navigation_collections' calls 'ToList' but does not use the value the method returns.

3
5
CA1816
Change PublicPooledDbContextFactorySample.SomeDbContext.Dispose() to call GC.SuppressFinalize(object).

4
33
CA1822
Member 'LoadEntities' does not access instance data and can be marked as static

5
14
CA1826
Do not use Enumerable methods on indexable collections. Instead use the collection directly.

6
1
CA1829
Use the "Count" property instead of Enumerable.Count()

7
6
CA1845
Use span-based 'string.Concat' and 'AsSpan' instead of 'Substring'

8
2
CA1847
Use 'string.Contains(char)' instead of 'string.Contains(string)' when searching for a single character

9
2
CA1859
Change type of variable 'searchIds' from 'System.Collections.Generic.IReadOnlySet' to 'System.Collections.Generic.HashSet' for improved performance

10
3
CA1860
Prefer comparing 'Count' to 0 rather than using 'Any()', both for clarity and for performance

11
19
CA1861
Prefer 'static readonly' fields over constant array arguments if the called method is called repeatedly and is not mutating the passed array

12
1
CA1862
Prefer using 'string.Equals(string, StringComparison)' to perform a case-insensitive comparison

13
13
CA1866
Use 'string.StartsWith(char)' instead of 'string.StartsWith(string)' when you have a string with a single char

14
1
CA1869
Avoid creating a new 'JsonSerializerOptions' instance for every serialization operation. Cache and reuse instances instead.

15
1
CA2016
Forward the 'cancellationToken' parameter to the 'SaveChangesAsync' method or pass in 'CancellationToken.None' ..

16
1
CA2208
Call the ArgumentOutOfRangeException constructor that contains a message and/or paramName parameter

17
2
CA2211
Non-constant fields should not be visible

18
2
CA2254
The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, EventId, string?, params object?[])'

19
1
EF1002
Method 'FromSqlRaw' inserts interpolated strings directly into the SQL, without any protection against SQL injection. Consider using 'FromSql' instead

20
1
IDE0025
Use expression body for property

21
2
IDE0027
Use expression body for accessor

22
171
IDE0028
Collection initialization can be simplified

23
1
SIDE0037
Member name can be simplified

24
6
IDE0040
Accessibility modifiers required

25
2
IDE0044
Make field readonly

26
1
IDE0046
'if' statement can be simplified

27
10
IDE0051
Private member 'LaundryBasket._id' is unused

28
8
IDE0052
Private member 'MyController._context' can be removed as the value assigned to it is never read

29
58
IDE0053
Use expression body for lambda expression

30
15
IDE0057
Substring can be simplified

31
37
IDE0060
Remove unused parameter 'args' if it is not part of a shipped public API

32
1
IDE0061
Use expression body for local function

33
10
IDE0062
Local function can be made static

34
6
IDE0063
'using' statement can be simplified

35
1
IDE0066
Use 'switch' expression

36
17
IDE0071
Interpolation can be simplified

37
14
IDE0079
Remove unnecessary suppression

38
1
IDE0083
Use pattern matching

39
63
IDE0090
'new' expression can be simplified

40
196
IDE0290
Use primary constructor

41
55
IDE0300
Collection initialization can be simplified

42
8
IDE0305
Collection initialization can be simplified

42
8
IDE1006
Naming rule violation: Missing prefix: '_'

43
40
RCS1021
Use expression-bodied lambda

44
9
RCS1036
Remove unnecessary blank line

45
308
RCS1037
Remove trailing white-space

46
5
RCS1075
Avoid empty catch clause that catches System.Exception

47
9
RCS1077
Optimize LINQ method call

48
1
RCS1084
Use coalesce expression instead of conditional expression

49
3
RCS1085
Use auto-implemented property

50
207
RCS1102
Make class static

51
144
RCS1110
Declare 'Program' inside namespace (cf CA1050 above)

52
32
RCS1118
Mark local variable as const

53
7
RCS1123
Add parentheses when necessary

54
2
RCS1146
Use conditional access

55
1
RCS1155
Use StringComparison when comparing strings

56
1
RCS1159
Use EventHandler

57
42
RCS1163
Unused parameter 'args'

58
2
RCS1166
Value type object is never equal to null

59
2
RCS1169
Make field read-only

60
60
RCS1170
Use read-only auto-implemented property

61
37
RCS1192
Unnecessary usage of verbatim string literal

62
3
RCS1196
Call extension method as instance method

63
11
RCS1213
Remove unused field declaration

64
8
RCS1214
Unnecessary interpolated string

65
2
RCS1229
Use async/await when necessary

66
19
RCS1246
Use element access

67
23
RCS1251
Remove unnecessary braces

68
52
RCS1261
Resource can be disposed asynchronously

69
1
SYSLIB1045
Use 'GeneratedRegexAttribute' to generate the regular expression implementation at compile-time.

N.B. this is with the standard .editorconfig in the parent folder (so is not anything I have smuggled in with my VS option prefs) !
IMHO the docs should reflect the latest and greatest guidelines, and not be tied to backward compat to legacy C# / FW releases
I propose to work up a PR to eliminate/minimise these banshees, unless EF Team declare already on the case to deter me.

I think only CA fixes are relevant. And certainly not warnings from a third party anslyzer.

I think it is by design that these other platform specific projects are not included, so you can build all sample projects on Linux/Mac

If you're interesting in fixing these in PR, that would be welcome!

PR4630 submitted for collective red pens (hopefully something will remain after the lions munch any choice bits). Enjoy!


Added public API endpoint to security configuration

Added antMatchers("/*/api/public/**").permitAll() path in Gate config as convention.
Path could be used in all services, to avoid HEADER check by Gate


Enable Razor build server by default

@pranavkm @rynowak @javiercn From our discussions it sounds like there's no reason not to do this, so I'll merge now, but please let me know if you disagree and we can change it.


new: SYSDIG_DIR can be passed as cmake option

What type of PR is this?

/kind feature

What this PR does / why we need it:
It allows to specify a path where to find the sysdig source when building Falco.
In this way the two projects don't have to stay in the same top level directory.
cmake -DSYSDIG_DIR=/my/path/to/sysdig ..

Special notes for your reviewer:
Be kind
Does this PR introduce a user-facing change?:
build: ability to specify a custom path for the sysdig source code

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: fntlnz
If they are not already assigned, you can assign the PR to them by writing /assign @fntlnz in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@fntlnz: There is not a label identifying the kind of this PR.
Please specify it either using /kind <group> or manually from the side menu.
In case you do not know which kind this proposal is please mention the maintainers using @team/maintainers.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.


Scroll should depend on location of mouse, not on scroll position

Testing #174637
"notebook.experimental.outputScrolling": true
Have the following code in an notebook cell. Run the code
for i in range(1000):
    print(i)

Scroll the output. Notice as your scroll reaches the top you can continue scrolling and it will scroll the whole notebook file. This is unexpected and I think no other widget in VS Code behaves this way.
I suggest instead the following strategy when scrolling:

If a mouse is in the Cell then scrolling it will only scroll that cell. You can not scroll the large notebook while the mouse is in the cell.
Same way you can not scroll the Cell with the mouse unless the mouse is in the cell

IMHO this is what makes the current experience feel weird.

This is unexpected and I think no other widget in VS Code behaves this way.

We don't often have nested scrollable elements in VS Code workbench and also this is how browsers handle nested scrolling. Current behavior feels right to me.
I can see the value of scrolling only when the focus is inside/on the output, there is a catch with that though, users need to move cursor to outside of the cell output to scroll the notebook, and the hit area for that is very narrow most of the time.

Thanks for providing more info. But what other UI element scrolls like the notebook does right now - so that you can scroll the element until it hits the end, and then if you continue scrolling that the outer element starts scrolling?
This really felt unnatural to me, but I might have missed this pattern in other parts of the workbench.
Or what do other Notebooks products do in this case?

the peek view actually behaves this way. That's the only other nested scrollable element that I know of.

Thanks! If I am the only user that it complaining feel free to close this one as designed :)

I tried using notebook in VSCode again last week, and came to GitHub to open this exact issue. I feel this scroll is extremely unintuitive.
Here's an example. A cell is outputting more lines than notebook.output.textLineLimit, so we're currently viewing it's last line. I want to scroll to top. I speed scroll up, but this reaches the top and keeps scrolling the notebook, so now I'm all the way up. I have to scroll back down to my cell. If I go fast, I might miss it. If I go slowly, some other cell's output might catch my scroll and scroll that to bottom, before the notebook scrolls again. Same happens to my cell. I need to be frustratingly precise to scroll this output to the top. Here's a recording to illustrate (I hope you can see it, recorded on MacOS, encoded as AV1; can add YT link if not viewable here):
https://github.com/microsoft/vscode/assets/2991890/aa36abc7-a7a4-4952-a688-721296de33fe
It took me 15 seconds to manage to get that top. And I knew exactly what I wanted to achieve, for the sake of the video.
Now here's the same experience in native Jupyter Notebook (exact same notebook and cell).
https://github.com/microsoft/vscode/assets/2991890/db50b61d-9043-4a39-8908-0232ba6f6754
First, I can easily toggle the output scrolling. If untoggled, the output scrolls natively with the notebook, and since it expands downwards, without the notebook jumping, I can immediately see the top, which is right next to the cell.
Then I toggle the scrolling again, to illustrate the behaviour compared to VSCode. I initiate scrolling inside the output area, and so only that area is scrolled. No matter the speed, or direction, I can easily reach the top or bottom as many times as I need, without losing context of my notebook.
If I do want to scroll the notebook, I need to scroll outside the output area. This is easy because the cell does not take the whole width. This is in relation to what @rebornix said above:

users need to move cursor to outside of the cell output to scroll the notebook, and the hit area for that is very narrow most of the time.

Yes, but the cell does not need to take the complete visible width. In native notebook, cell's width is limited, and there's still plenty of space for code.
But even if the cell does take the entire width, the user can initiate the scrolling outside the output area, i.e. over a cell. In this case, it scrolls the notebook, and never the outputs. The outputs do not steal the scrolling from the notebook, like it happens in VSCode. So:

scroll initiated on cell or outside the cells area -> scrolls notebook only, never output
scroll initated in scrollable output area -> scrolls only that output area, never the notebook

@amunger should we reopen this? What do you think?

sure, that's a reasonable request. It would be inconsistent with how the peek view scroll works, but the possibility for many scrollable regions makes these cases more noticeable in notebooks.
@cipri-tom - one thing that might help - you can toggle output scrollability per output in vscode as well with notebook.cell.toggleOutputScrolling, ctrl+K Y by default

I have the same issue.
The usability of the scrollable element suffers greatly due to the current crazy behavior - when the scrolling inertia reaches the end of the scrollable output and scrolls the whole notebook!

for verification, please check with a mouse wheel and scrolling with a trackpad, since they behave quite differently.
Hitting the boundary of the inner scrollable region will prevent further scrolling for that same scroll action.
After a short pause you should then be able to scroll the outer region since the inner region can't be scrolled any further. (similar behavior to a browser)

Verified on trackpad. Still have to verify with a mouse wheel.

verified on mouse!
there was a pause/delay, but wonder if there should be a larger delay - I find that sometimes I spam scroll and it moved up a little quicker than I anticipated. if it matches browser tho, should be all good ~

hello @amunger , thank you a lot for the work on this issue! I hate to say this, but I think it's not solved:
It looks a certain "length of scroll" ignored, and the rest of the scroll inertia is still applied.
Here I do:

one fast scroll
then scroll back down
then one fast (a bit slower) scroll

https://github.com/microsoft/vscode/assets/57260995/3c57ee80-4a25-4484-9810-65e1f0acf0ea

Here I do:

one scroll for the duration of the whole video:

https://github.com/microsoft/vscode/assets/57260995/655d58d4-2710-4d95-ba40-a733b800e09d

The behavior in the native jupyter notebook is certainly different. Here I do:

one fast scroll (no movement) - different than in VSCode
one long scroll (no movement) - different than in VSCode
one after-scroll (moves)

https://github.com/microsoft/vscode/assets/57260995/ee14d690-8bba-4378-9ec4-3df965fae725

which version of vscode was this on?

which version of vscode was this on?

Version: 1.88.0 (Universal)
Commit: 5c3e652f63e798a5ac2f31ffd0d863669328dc4c
Date: 2024-04-03T13:28:18.899Z (1 day ago)
Electron: 28.2.8
ElectronBuildId: 27744544
Chromium: 120.0.6099.291
Node.js: 18.18.2
V8: 12.0.267.19-electron.0
OS: Darwin arm64 23.3.0

Version: 1.89.0 - still isn't fixed
If I scroll hard enough, the notebook scrolls


Inputs in action.yml don't match main.js

From looking at the code, one can specify run_id, but that's not mentioned in action.yml. Also, the input workflow is not actually required when specifying run_id, but action.yaml say so.

Hey @LukasKalbertodt,
Thanks for pointing this out. Feel free to open a pull request to fix this issue.
I'm currently a bit limited on time, but will try to fix this as soon as possible.
Thanks again!


fromDate cannot be nil Future exception

i did as you say,but Xcode gives me those errors.

Can I take a look at your setup code? Or did you setup via IB?

here it is.

another thing is that when i set the _calendar.flow = FSCalendarFlowVertical; ,the calendar's header is wrong.

Try 0.8.0 please, thanks for reporting :)


SAMZA-1074: Cannot build hello-samza on various CDH version

This issue is mainly related of hello-samza, but modification of document is needed to help user understand this process well.

@vjagadish1989 Hi! Thanks for your review. BTW, This PR under hello-samza related of it is currently not merged. If you have any idea, please comment.


Connection Error under Proxy

https://github.com/huggingface/huggingface_hub/blob/48ddc62cbed37d2101b8dce2a34951c404629cd5/src/huggingface_hub/file_download.py#L464
This line of code only consider ConnectTimeout, and fails to address the connection timeout when proxy is used. Also, variable "max_retries" is set to 0 by default and huggingface transformers have not yet properly set this parameter yet.

Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
self.prepare_proxy(conn)
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 996, in prepare_proxy
conn.connect()
File "/usr/local/lib/python3.7/dist-packages/urllib3/connection.py", line 424, in connect
tls_in_tls=tls_in_tls,
File "/usr/local/lib/python3.7/dist-packages/urllib3/util/ssl.py", line 450, in ssl_wrap_socket
sock, context, tls_in_tls, server_hostname=server_hostname
File "/usr/local/lib/python3.7/dist-packages/urllib3/util/ssl.py", line 493, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/lib/python3.7/ssl.py", line 412, in wrap_socket
session=session
File "/usr/lib/python3.7/ssl.py", line 853, in _create
self.do_handshake()
File "/usr/lib/python3.7/ssl.py", line 1117, in do_handshake
self._sslobj.do_handshake()
socket.timeout: _ssl.c:1039: The handshake operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/requests/adapters.py", line 499, in send
timeout=timeout,
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 788, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "/usr/local/lib/python3.7/dist-packages/urllib3/util/retry.py", line 592, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /google/t5-v1_1-large/resolve/main/tokenizer_config.json (Caused by ProxyError('Cannot connect to proxy.', timeout('_ssl.c:1039: The handshake operation timed out')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "", line 1, in
File "/home/tiger/.local/lib/python3.7/site-packages/transformers-4.22.0.dev0-py3.7.egg/transformers/models/auto/tokenization_auto.py", line 541, in from_pretrained
tokenizer_config = get_tokenizer_config(pretrained_model_name_or_path, **kwargs)
File "/home/tiger/.local/lib/python3.7/site-packages/transformers-4.22.0.dev0-py3.7.egg/transformers/models/auto/tokenization_auto.py", line 405, in get_tokenizer_config
_commit_hash=commit_hash,
File "/home/tiger/.local/lib/python3.7/site-packages/transformers-4.22.0.dev0-py3.7.egg/transformers/utils/hub.py", line 391, in cached_file
local_files_only=local_files_only,
File "/usr/local/lib/python3.7/dist-packages/huggingface_hub/file_download.py", line 1096, in hf_hub_download
timeout=etag_timeout,
File "/usr/local/lib/python3.7/dist-packages/huggingface_hub/file_download.py", line 429, in _request_wrapper
**params,
File "/usr/local/lib/python3.7/dist-packages/huggingface_hub/file_download.py", line 461, in _request_wrapper
method=method.upper(), url=url, timeout=timeout, verify=False, **params
File "/usr/local/lib/python3.7/dist-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 587, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 701, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/adapters.py", line 559, in send
raise ProxyError(e, request=request)
requests.exceptions.ProxyError: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /google/t5-v1_1-large/resolve/main/tokenizer_config.json (Caused by ProxyError('Cannot connect to proxy.', timeout('_ssl.c:1039: The handshake operation timed out')))

This line of code only consider ConnectTimeout, and fails to address the connection timeout when proxy is used.

Haven't reproduced the error but seems legit indeed. Would you like to create a PR to address it ?

Also, variable "max_retries" is set to 0 by default and huggingface transformers have not yet properly set this parameter yet.

max_retries is set to 0 because huggingface_hub is meant to be a generic library that is used in other libraries. Therefore we  prefer to disable by default the "backoff" feature and let subsequent libraries enable it if they find it useful. I would advice to create an issue on https://github.com/huggingface/transformers instead.

Hi~@Waupulin, thanks for your advice, and I have just created a simple PR.

Thank you, will review it :)

Closed.


dlopen: use already loaded symbols if available

CI is failing because dlopen("libcuda.so") is finding a stub (/usr/local/cuda/lib64/stubs/libcuda.so).
This PR fixes the issue by trying to use already loaded symbols. However, this could be a problem if the symbols are unloaded later in the execution, unlikely but possible.
Is this the best way to handle such an issue or is there a better approach?
cc. @jakirkham @robertmaynard

I wonder if we can ignore this issue. Currently the RAPIDS container images are symlinking the stub image so it gets loaded when it shouldn't.

I wonder if we can ignore this issue. Currently the RAPIDS container images are symlinking the stub image so it gets loaded when it shouldn't.

That would be great :)

Agree with Robert. We should also be able to restart CI on failing PRs at this point

rerun tests

I think this can be closed assuming that we're unblocked on CI now?