Consider defining heavy dependencies as extras

Description
First of all, thank you for this project - the library is great and we find it highly useful.
The problem any big project trying to adopt a new library always have is to make all dependencies aligned (compatible). As any universal library llama_index depends on a number of external libs needed for different functional module. What I suggest doing is moving as many dependencies as possible into extras (optional dependencies) so user of the library has a choice weather or not to install it. I suspect it will be pretty common case when someone needs just a one specific feature from the lib and doesn't need 10 others depending on some extra lib.
In our case we don't need any database related features so we don't want llama_index to pull in the sqlalchemy. In our particular case it is even worth our core framework depends on sqlalchemy~=1.4 while llama_index needs 2.x so we literally can't install it in our project.
So the suggestion here is a to revise dependencies and:

Explicitly list dependencies the library uses directly. E.g. pydantic is used directly but is not listed in the list of deps. Probably better approach would be to add pydantic>=1,<2.0 to make sure we give all needed info to dependency resolver.
Move all dependencies which are not a part of the "core" under extras section in setup.py.
Document extras in readme

This PR just illustrates an idea.
Type of Change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ] Added new unit/integration tests
[ ] Added new notebook (that tests end-to-end)
[ ] I stared at the code and made sure it makes sense

Suggested Checklist:

[X] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[X] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

I agree in general! For the most part, our dependency list is extremely minimal -- I'm not even sure if sqlalchemy is optional, because it's likely imported by modules that are imported at the top level? (Let's see if CI passes haha)
Beyond that, we have a lot of extra dependencies, and those dependencies often conflict with each other (e.g. various vector dbs). So we have a lot of try/except imports that report to a user when a specific package is missing. Moving these into optional dependencies likely won't help as much 🤔

Of course this "optional deps" approach is not a silver bullet but it at least give solves part of the problems and give some more flexibility to the end user.
As for sqlalchemy it's unlikely CI will help as it has to install all optional deps to test everything. I could check if it works without sqlalchemy by creating a new project from one of the trivial examples in the virtual environment without sqlalchemy.
As for the other deps like vector stores I believe it is more user-friendly to have them in the list of extras because this is how you clearly specify the version which will work with llama_index. E.g. let's say I use FAISS version x and llama_index supports only y, how I could gather this information other then trying and debugging?
The problem with this approach is this is a kind of breaking change - users will have to add [sqlalchemy] to their requirements.txt if we merge this.

With the recent shift to llama-index-core, I think this helps a bit. sqlalchemy could be marked as optional in another PR if you are still interested!

Yeah, for me sqlalchemy is still the problem


Backup config structs if func opt can't be applied

Closes #74

All unit tests pass, and end-to-end tests work as well.


.create_subscription generates (400) OAuthClientException-Missing client_secret URL parameter

I am trying to create a subscription for a tag but this method throws InstagramAPIError.
Here you can find the code I am using: https://gist.github.com/scorpiontahir02/76367debe90e462d0e04
Just calling create_subscription gives "(400) OAuthClientException-Missing client_secret URL parameter".
Then I tried to add client_secret explicitly (2nd try in the gist) and it gave error "(400) APISubscriptionError-Invalid "client_id" and/or "client_secret."".

getting the same error message, were you able to get this issue resolved?

got the same error

Same for me :(

Thank you for reporting this issue and appreciate your patience. We've  notified the core team for an update on this issue. We're looking for a response within the next 30 days or the issue may be closed.

Happens to me as well. I do see that the callback_url is being called with a GET request containing a hub.challenge, the challenge is being returned and only then i get this error.

Is there any workaround or something? I got the same error and don't really know what to do.


Consumption: Unable to open desinger

Describe the Bug with repro steps

Create a logic app in consumption.
Open the designer

Actual: Designer should open
Expected: Unable to open designer
What type of Logic App Is this happening in?
Consumption (Portal)
Are you using new designer or old designer
** Old Designer
Did you refer to the TSG before filing this issue? https://aka.ms/lauxtsg
No
Workflow JSON
No response
Screenshots or Videos
https://github.com/Azure/LogicAppsUX/assets/113517384/d9f4ad67-1ed7-4c35-9119-08285d585286
Browser
Edge
Additional context
Environmental Details:
URL: https://aka.ms/emastagiLong-flowstip1
Version: 2.30920.1.1
AB#25240630

This appears to be an issue with the loading state change that was made in Portal, I'll take a look at it and try to get it hotfixed

@vgouth I tried loading both an existing app and creating a new app and was unable to reproduce this issue, could you provide any more info on your setup + how we could reproduce?
Also could you send me any console errors that are appearing, and/or a network trace of you trying to load the logic app?
My email is<EMAIL_ADDRESS>if you don't have it

@rllyy97 I sent you the mail with all the details along with HAR file.

I found the issue, fix will be in today

Issue not repro in the latest request
Environmental Details:
URL: https://aka.ms/emastagiLong-flowstip1
Version: 2.31010.1.2


feat(k8s): adding k8s container id

:tada: This PR is included in version 1.62.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Width not adaptive on some screen sizes

Hey @amezousan
Quick one, I've noticed that the picker plugin looks great in the iPhone 11 Pro emulator on Adalo but the width doesn't adapt properly on the iPhone 11 Pro Max or Pixel 4 emulators (see white space to right in screenshot below).

Any chance this is quick and easy to fix?
Could it have something to do with this: https://developers.adalo.com/docs/design/resizing

Could it have something to do with this: https://developers.adalo.com/docs/design/resizing

Yeah, it might be worth a try :)

Yah - this is a tricky one, I've noticed a number of other marketplace components have the same issue.
May be worth reaching out to Adalo for support if you're struggling to get this fixed.
Thanks for taking a look.


require-import fragment does not support module paths

Is your feature request related to a problem? Please describe.
In monorepos it's a common pattern to organize code across multiple internal packages.
Currently it's not possible to import a GQL fragment using a module path to an internal package, e.g. #import<EMAIL_ADDRESS>Describe the solution you'd like
I'd like to add support for module paths.
Describe alternatives you've considered
Relative paths: These work today but are not ergonomic or consistent with best practices for imports in JS/TS files. Further, we cannot utilize the mappings provided by the package.json exports field.
Additional context
N/A

Hm, I never saw this pattern, wdyt @dotansimha ?


Moving lambda invoke to background thread

Noticed that the UI thread was blocking while making lambda calls in my app. This seems to fix it. Unit tests still pass, assuming I'm running them correctly :stuck_out_tongue:
If you dig this pattern I might do something similar for the cognito calls since those seem to be blocking as well.
Note: this has not yet been tested exhaustively.

Actually I'm going to take a pass at making this more generic so the whole SDK can take advantage. Will resubmit soon.


[#4085] Fix RQM so that it can merge the branch.

Scope
With the new change in PQM where we use github protected branches, the RQM fails as the merge commit is not tested.
Changes
WIP
How to try and test the changes
reviewers: @adiroiban
Send this brach to RQM and if succesfully merged, then all is good.

needs-review

changes-approved


Rewrite matrix_set_diag GPU kernel.

Base new implementation on matrix_diag_op.

Rasmus, I am now going to test this on windows. please feel free to throw this PR out if there should be a better way to implement this.

Running windows GPU tests here:
http://ci.tensorflow.org/view/Experimental/job/tf-win-gpu/3/
Hopefully, by tomorrow morning we will have a result.

Still fails on windows. Not sure what is missing.

As discussed, this is not the right direction to go.

Instead, I recommend using the recent rewrite of matrix_band_part as a template. Getting rid of the Eigen generator mechanism makes the code more readable and much faster.


(Alleged) Continuity Incompatibility

Issue PepperCode1/Continuity#115 has recently been reported and describes a resource reload loop. The errors contain Forgero classes and methods, but according to the issue report, the problem is resolved if Continuity is not present, leading me to believe it is an incompatibility. Is it possible to fix from your side?
While I do not know exactly why errors occured in the user's setup because they were not using any external resource packs, after inspecting Forgero's code I can see how an incompatibility can arise that will lead to the same error. It can be fixed by performing this change:
ReloadableResourceManagerImplMixin.java
-         if (id.getNamespace().equals(ForgeroInitializer.MOD_NAMESPACE) && id.getPath().contains(".png") && id.getPath().split("_").length > 1 && !id.getPath().contains("transparent")) {
+         if (id.getNamespace().equals(ForgeroInitializer.MOD_NAMESPACE) && id.getPath().contains(".png") && id.getPath().split("_").length > 2 && !id.getPath().contains("transparent")) {

That class is no stranger to reload loops, so that very probable that this mixin is causing issues. Would your mod create textures with the forgero namespace when it is installed? I struggle to see how your mod could have anything to do with this. I'll have to look into it when I get back home though, so it might be a while untill I can resolve the issue.
That mixin is in dire need of a rewrite, which I will get to. Someday. The bug was reported when used with forgero 0.8.4, this issue might also be resolved by updating to 0.8.5.
I'll also have to test the proposed change to see if that does not cause any problems   with the texture generation pipeline.

Yes, Continuity may create Identifiers and sprites with the Forgero namespace if a resource pack chooses to use the namespace. Like I said I don't know why it happened here because the user was not using any external resource packs, but the case of another mod creating Identifiers with the Forgero namespace should not be excluded.

Yeah, I'll rework the texture service to look up the textures in a registry instead of trying to match them against broad pattern like this. It was only a matter of tile before that garbage mixin started creating issues.
Thanks for the heads up!

Hey, I'm the one who originally reported the issue on Continuity's end. I updated Forgero to forgero-0.9.0-pre-3-BETA-1.19 and it seems to have solved the issue for me at least.

Right! There's still some unresovled issue in the pre-release, but it's nice to see that it contains a fix for the problem.
I'll probably create a separate issue for reworking the mixin to prevent issues like this in the future!

I am pretty sure the newest 0.9.0 update will solve this issue when its released. The update also introduced the fix explained earlier where it only matches preregistered textures. I have tested with forgero-0.9.0-BETA-1.18.2, and it seems to work.


docs: fix typos

docs: fix typos
test: fix error because of typo

@ljoss17 Thank you for your review and resolving


[BUG] Task recurrence still broken on v3

Expected behaviour:
Set recurrence to 1d on a task and due date to today. Complete the task. The next day expect the task to be marked uncompleted and due date changed to the new day.
Current Behaviour:
The next day the task is still in it's completed state and due date is still set to yesterday. Closing down dooit and reopening doesn't change the tasks state.

Thanks for looking into this. Have updated dooit and will test the recurrence functionality out over the next few days.

Now that the recurrence is working (I think) it's different to what I thought it would work. I imagined it would work something like Todoist where recurring todos once marked completed stay completed until their new due date (say 2 days time) where they are then marked as uncompleted.
From what I can see dooit leaves the todo in an uncompleted state, not letting you mark the todo as completed, then just advances the due date, is that correct?

Also remembered another use case:
Lets say you set recurrence for every 1 month or 6 months or any other large value, then you'll only be reminded about that task on the exact day. Which is fine for a lot of cases, but might not be for some cases?

Also remembered another use case:
Lets say you set recurrence for every 1 month or 6 months or any other large value, then you'll only be reminded about that task on the exact day. Which is fine for a lot of cases, but might not be for some cases?

I completely understand where you're coming from. I took another look to see how todoist handles recurring tasks and it seems to be much like how you've implemented in dooit so I was wrong there. You'e just able to use filters to hide recurring completed tasks and also the due date doesn't get incremented each time you complete on the same day.
Looking at dooit I don't think there's really an easy way to implement having the option of being able to hide completed recurring tasks as it doesn't track todos completion history. I guess you could have a 3rd state (completed, uncompleted, recur_completed?) although I suspect even this might have issues.

I guess you could have a 3rd state (completed, uncompleted, recur_completed?) although I suspect even this might have issues.

Hmm...No I think this will make things complicated a lot + will be a breaking change
I first thought maybe the user can set a threshold as to when to show the task as completed or not
But I guess this would messup recurrence tasks with short timedelta
And I dont want to mess up the implementation too much yk which will make it hard for devs and users as well haha
Whatever I can think of right now sounds too much ambigous and a complicated workflow for such a simple thing
However...
I have some ideas which are just visual changes via scripts:

1. Push down recurrence Tasks
The simplest thing I could think of was to make a plugin/script which will do the following steps:

Keep track of TodoDueChange event
Get the todo whose due changed
Check if the todo has a recurrence value set, if not, skip the rest of the steps
Push the todo down based on the new due date

This means frequently done tasks will still be in the lists
And for tasks which are to be done like every 6 months or so..will be there but at the very down

2. Psuedo Complete Tasks
This script will take an initial threshold of timedelta and will format the todos based on that it'll dimmify the task + set a custom icon for the status as well.
This is like a combination of two formatters but only for recurrence tasks:
First, if you remember the Strike Completed formatter, we'll strike and dim alll the tasks which are

which are completed (ie the next due is in the future)
are above threshold (for example only dimmify and strike the todos which are to be done after 1 week)

Second, we'll use the Status Icons formatter which will set a custom icon for todos which follow the same 2 conditions as above. Since we know that recurrence items are always pending tasks, we'll override the pending icon only :D
!Bonus!: Ofcouse both of the above said things can be done simultaneously as well
Lemme know your thoughts on this + if something was unclear :)
Also, if it seems something interesting and you'd like to do, I can help ya as well because I think I still need to add a developer guide to the docs :sweat_smile:

Not sure about suggestion 1, as it wouldn't be obvious to users why certain tasks are being pushed down in the list. It'll act as a type of sub-sort to their current sort selection. Could be quite confusing?
I think I prefer suggestion 2 with a custom status icon which would give users an indication why the recurring task is struck through/dimmed. However won't this now require recurring todos being marked as complete, meaning users will have to wait until it's due again to be able to complete it again and require code to mark them as pending when the due date comes around? Also the timedelta of 1 week or whatever seems completely arbitrary to me and most likely confusing once again for users?
Am happy to have a go at working on this if we can find a good way of implementing it which doesn't have to be shoe horned into your existing code or end up confusing users.

Not sure about suggestion 1, as it wouldn't be obvious to users why certain tasks are being pushed down in the list. It'll act as a type of sub-sort to their current sort selection. Could be quite confusing?

Ofcourse this is not the default/baked-in implementation, users can add the script if you want :) Just like the striked completed tasks

it's due again to be able to complete it again and require code to mark them as pending when the due date comes around?

No. As I mentioned, this is just a visual change. Just the icon is replaced with something else. Users can still complete the task and the due task will still remain pending and the due date will be moved fwd. We are just fancy decorating the task so its just LOOKS LIKE ITS COMPLETE. again, this is an optional thing if the user chooses to include this behaviour

Am happy to have a go at working on this if we can find a good way of implementing it which doesn't have to be shoe horned into your existing code or end up confusing users.

Sure. I can help ya out, as I mentioned, I think the docs is still lacking in terms of developer guide so It'll be great for me as well to check out things as to whats needeed more

I was going to look at how TimeWarrior handled recurring tasks but then I think I looked into it a few years ago and the answer was...poorly.

Yea I think there is not any good solution as it highly depends on the usecase :)

Also, I've started to work on two plugins. Hopefully I'll have a basic version by today so maybe that can be something you can check out as well. But for now the most relevant things to look would be:

Formatters
Status Icon Formatter
Strikethrough Formatter

[!NOTE]
You might see .markup in some areas which use Text class from rich but maybe its not needed

No. As I mentioned, this is just a visual change. Just the icon is replaced with something else. Users can still complete the task and the due task will still remain pending and the due date will be moved fwd. We are just fancy decorating the task so its just LOOKS LIKE ITS COMPLETE. again, this is an optional thing if the user chooses to include this behaviour

Got it, so it'll just be another script using the API to go in the config. One case which comes to mind if you're going down this route is that won't this only work if the user doesn't close down and reopen dooit? Soon as they do then with the task still in the pending state it'll lose the visual change to show it's a "completed" recurring task and revert visually to being pending again right?

I'm not sure if I understand correctly.

revert visually to being pending again right?

I guess you're thinking it something like this:

There's a recurring todo
User marks todo as complete
As soon as this happens, the todo is visually changed because the new due date is in the future now
The user closes dooit
User opens dooit again, and sees the visual changes are gone?

But the formatters work on a condition, todo will be formatted based on the due date. So it doesn't matter if the app is closed or open since the due date is changed.
One good example is the overdue status icon, it changes if the due date has already passed. Think of the visual changes as the same, but on more items (ie strike, dimmification on the description etc)

You're description of my thinking is correct. I'll wait until you push the scripts onto github and hopefully I can get my head around it then!


Add support for Galaxy 22.05

Switches from uwsgi to gunicorn
Adds celery and celery-beat
Enables tusd by default
Postgres operator updated
Pins nginx container image

Changes done. I'll follow up with a separate PR which adds support for the rabbitmq operator.


User reports: trolleybuses using Aggressive mode throws null pointer exception

Some guesses:

there are very few alternate paths for trolleybuses
there are some unexpected details regarding the vehicle trailers (I do not have Sunset DLC)

Hi @Vectorial1024, if i did gift you the sunset harbour DLC would that help you find & fix the issue?

Can't remember correctly, but I think I made an update to disallow trolleybus from using the aggressive mode.
While the gift offer is appreciated, please don't do that. I've been rethinking my life for some time, and I intend to focus more on irl stuff. You may see I have already made a few open-source libraries (however usage seems too low).
Not too high priority when we have a workaround for now.

Can't remember correctly, but I think I made an update to disallow trolleybus from using the aggressive mode.

Unless I am not somehow on the correct version I was able to reproduce the issue yesterday

While the gift offer is appreciated, please don't do that. I've been rethinking my life for some time, and I intend to focus more on irl stuff. You may see I have already made a few open-source libraries (however usage seems too low).
Not too high priority when we have a workaround for now.

Alright, that's fine if you ever change your mind and have time feel free to mention me

Also see #16 ; clearly I didn't do anything about this...

So, eventually, several things happened:

My drive to focus on irl stuff has prompted me to finish as many "side projects" as possible, which counterintuitively (even to me) gave me more free time to do "side projects"
Cities Skylines + DLC (at time of writing) is on sale
New DLC for Cities Skylines even after Cities Skylines 2 is released (?!)

So, I got the Sunset DLC under a discount. I can play Cities Skylines later when I feel like it, but now @luketeam5 I have the means to really look into the problems by using eg Unlimited Money mod to create test cases.

Still, while I can go and look at the mod codes again, @luketeam5 can you somehow reproduce this again after our old conversation in September?

Hi @Vectorial1024,
nice to hear you're back in Cities Skylines.
Sadly can't reproduce it as of now due to a different issue from TLM.

However, the way I did manage to trigger the issue in the past was very simple. making a road + depot setup like this:

The mods used:

Skyve, Loading Screen Mod (the classics)
Game Anarchy (so I can make the trolleybuses straight away)
TLM
ExpressBusServices + plugin
Sunset Harbour DLC

Just in case, I should clarify that I am actually looking at all my side projects and deciding what to do with them. Given how CS1 itself is on life support mode, I'm not going to give too much effort to update CS1 mods. I'm just gonna "resign" myself to become more like a gamer instead of a modder.

Still, normally I would suggest eg installing Extended Error Reporting (https://steamcommunity.com/sharedfiles/filedetails/?id=2055465280) first to get a better stacktrace for me to do things, but even when I am looking at the over-simplified stacktrace, I can already notice that your TLM version is very strange.
Technically you are using the latest version of TLM, but you are actually using the wrong TLM. Basically, Klyte45 left the CS1 modding community too early with no apparent reason (guy is not gone; they are currently making CS2 mods eg Extended Transport Manager XTM https://github.com/klyte45/CS2-ExtendedTransportManager), which meant the TLM mod had several bugs that was not fixed. Then, another guy t1a2l came in and made a de-facto continuation of TLM (https://steamcommunity.com/sharedfiles/filedetails/?id=3007903394), which fixed the aforementioned bugs.
@luketeam5 You should switch over to t1a2l's TLM before we continue. And when you are switching, be sure to also switch the EBS TLM plugin to the t1a2l variation.
Me using t1a2l's TLM at version 14.5.2 found no general errors but also could not reproduce the trolleybus error.

Also, I got notifications enabled so you do not need to explicitly ping me; I will still see the new texts.

Just in case, I should clarify that I am actually looking at all my side projects and deciding what to do with them. Given how CS1 itself is on life support mode, I'm not going to give too much effort to update CS1 mods. I'm just gonna "resign" myself to become more like a gamer instead of a modder.
That's completely fine
Still, normally I would suggest eg installing Extended Error Reporting (https://steamcommunity.com/sharedfiles/filedetails/?id=2055465280) first to get a better stacktrace for me to do things, but even when I am looking at the over-simplified stacktrace, I can already notice that your TLM version is very strange.
Technically you are using the latest version of TLM, but you are actually using the wrong TLM. Basically, Klyte45 left the CS1 modding community too early with no apparent reason (guy is not gone; they are currently making CS2 mods eg Extended Transport Manager XTM https://github.com/klyte45/CS2-ExtendedTransportManager), which meant the TLM mod had several bugs that was not fixed. Then, another guy t1a2l came in and made a de-facto continuation of TLM (https://steamcommunity.com/sharedfiles/filedetails/?id=3007903394), which fixed the aforementioned bugs.
@luketeam5 You should switch over to t1a2l's TLM before we continue. And when you are switching, be sure to also switch the EBS TLM plugin to the t1a2l variation.
Me using t1a2l's TLM at version 14.5.2 found no general errors but also could not reproduce the trolleybus error.
Also, I got notifications enabled so you do not need to explicitly ping me; I will still see the new texts.

I was using the t1a2l's version, Skyve would've notified me if I was using the wrong one.

You sure? It just feels really strange when you say you have problems with the TLM itself.

I am running the following demo setup in a blank map, but supposedly my setup is equivalent to yours:

But still, while leaving the game running (!!!) to type out this message, I finally got the long-awaited error:
An exception occured during VehicleAI simulation step.
Asset: Trolleybus 01
VehicleID: 23314
Type: TrolleybusAI
Severity: High

System.NullReferenceException: Object reference not set to an instance of an object
at ExpressBusServices.Patch_PublicTransportExtraSkip.ExtraSkippingLogic (VehicleAI,uint16,Vehicle+) <0x009f9>
at (wrapper dynamic-method) VehicleAI.VehicleAI.ArrivingToDestination_Patch2 (VehicleAI,uint16,Vehicle+) <0x00059>
at (wrapper delegate-invoke) TrafficManager.Patch._VehicleAI.Connection.ArrivingToDestinationDelegate.invoke_void__this___VehicleAI_uint16_Vehicle+ (VehicleAI,uint16,Vehicle+) <0x0009c>
at TrafficManager.Patch._VehicleAI.UpdatePathTargetPositionsPatch.Prefix (VehicleAI,uint16,Vehicle+,UnityEngine.Vector3,int+,int,single,single) <0x0489a>
at (wrapper dynamic-method) VehicleAI.VehicleAI.UpdatePathTargetPositions_Patch1 (VehicleAI,uint16,Vehicle+,UnityEngine.Vector3,int+,int,single,single) <0x001fc>
at CarAI.SimulationStep (uint16,Vehicle+,Vehicle/Frame+,uint16,Vehicle+,int) <0x009a5>
at TrolleybusAI.SimulationStep (uint16,Vehicle+,Vehicle/Frame+,uint16,Vehicle+,int) <0x0012b>
at (wrapper dynamic-method) VehicleAI.VehicleAI.SimulationStep_Patch2 (VehicleAI,uint16,Vehicle+,uint16,Vehicle+,int) <0x005b9>
at TrafficManager.Patch._VehicleAI._CarAI.SimulationStepPatch.Prefix (CarAI,uint16,Vehicle+,UnityEngine.Vector3) <0x006c0>
at (wrapper dynamic-method) CarAI.CarAI.SimulationStep_Patch1 (CarAI,uint16,Vehicle+,UnityEngine.Vector3) <0x00057>
at HealkitMod.Patches.VehicleManagerPatch.SimulationStep (VehicleAI,uint16,Vehicle+,UnityEngine.Vector3) <0x00062>

So, @luketeam5 this bug is confirmed, and I can start thinking about what is happening for real. One thing to notice, I did not provide power/water to the depot, and the exception was thrown when the "no power"/"no water" becomes red.

A quick observation shows that when the trolleybuses are force-recalled to their depots due to the depot not functioning, they become "unassigned" and are not part of any transport line, but will still emit a "arrived at bus stop" event when they arrive at the depot. Clearly, this mod should not touch what happens when vehicles return to base.
The reason why I basically never found this bug is because I always ensure the depots get their power and water before I do anything about the transport system, so when vehicles need to return to base in normal usage, TLM would have taken care of them and this mod did not need to do anything.
Update pending.

Update released; closing.

Many thanks to @luketeam5 for their persistence with this situation, which really helped to solve this bug!

So glad you found & explained the issue, thank you so much!


"Variable Declarations.md" uses "?" before it is defined in "Functions.md"

"Variable Declarations.md" uses "?" before it is defined in "Functions.md".  Adding a brief explanation so readers new to Typescript can read this documentation in-order without getting confused (as I did).

Fixes #

Yeah, that works for me. Thanks @colohan


Make op builder detection adapt to accelerator change

This is an WIP PR that make op builder detection adapt to accelerator change.  This is followup of https://github.com/microsoft/DeepSpeed/issues/5173
Currently, DeepSpeed generate installed_ops and compatible_ops at setup time.  If the system change to a different accelerator at DeepSpeed launch time, these two list would contain incorrect information.
This PR intend to solve this problem with more flexity ops detection.

For installed_ops, DeepSpeed should disable all installed ops if accelerator detected at setup time is different from launch time.
For compatible_ops, DeepSpeed should refresh the list for each launch to avoid impact of accelerator change.

In the first step, nv-inference workflow is temporary change to emulate the scenario that the system is setup with CPU_Accelerator, then launch with CUDA_Accelerator.  And CPU_Accelerator is modified to make Intel Extension for PyTorch and oneCCL binding for PyTorch not mandatory.
Starting from here we can reconstruct installed_ops and compatible_ops to follow the design above.

@tjruwase @mrwyattii @loadams FYI
Note this PR also comes with an updated CPU_Accelerator that could work without Intel Extension for PyTorch and oneCCL Binding for PyTorch.   It is designed in a way that is adaptive to whether these two packages are installed.  Hope this can help us keep one CPU_Accelerator that serve both basic and optimized user scenario.

@tjruwase installed_ops and compatible_ops are now reconstructed as this PR description.  Also removed Intel Extension for PyTorch and oneCCL binding for PyTorch installation in CPU inference workflow to test whether CPU Accelerator can work with stock PyTorch.  Can you help start the workflow?  Thanks!

Hi @tjruwase , the failure in cpu-inference and nv-inference workflow is due to missing package.  I have fixed them with latest CI.  Can you help start the workflow?  Thanks!

@tjruwase the missing dependency in nv-inference workflow had been added.

The latest error in cpu inference needs some investigation.   When CPU Accelerator is selected, some package will be used before they are installed with requirements.

Also in nv-pre-compile-ops workflow.  This command would diverge from intended purpose because it is running on a CPU node.  CPU ops instead of CUDA ops will be installed.  This might not be what users wanted and might break some users environment who use pre-built CUDA kernels.
We will need ask user to use DS_ACCELERATOR=cuda in this situation.  @tjruwase
DS_ENABLE_NINJA=1 TORCH_CUDA_ARCH_LIST="7.0;7.5;8.0" DS_BUILD_OPS=1 DS_BUILD_SPARSE_ATTN=0  DS_BUILD_CUTLASS_OPS=0 DS_BUILD_RAGGED_DEVICE_OPS=0 DS_BUILD_EVOFORMER_ATTN=0 pip3 install .

The latest error in cpu inference needs some investigation. When CPU Accelerator is selected, some package will be used before they are installed with requirements.

I don't understand why this failure happens since psutil is in requirements.txt

Also in nv-pre-compile-ops workflow. This command would diverge from intended purpose because it is running on a CPU node. CPU ops instead of CUDA ops will be installed. This might not be what users wanted and might break some users environment who use pre-built CUDA kernels.
We will need ask user to use DS_ACCELERATOR=cuda in this situation. @tjruwase
DS_ENABLE_NINJA=1 TORCH_CUDA_ARCH_LIST="7.0;7.5;8.0" DS_BUILD_OPS=1 DS_BUILD_SPARSE_ATTN=0 DS_BUILD_CUTLASS_OPS=0 DS_BUILD_RAGGED_DEVICE_OPS=0 DS_BUILD_EVOFORMER_ATTN=0 pip3 install .

Yes, I agree with this. Can you please make the change in the PR. I think the nv- prefix of the workflow also indicates nvidia-specific.

The reason is CPU_Accelerator.init() use psutil and this is before setup.py install the requirements.  The latest code would check importError before using psutil, this works in my local environment.

The latest error in cpu inference needs some investigation. When CPU Accelerator is selected, some package will be used before they are installed with requirements.

I don't understand why this failure happens since psutil is in requirements.txt

@tjruwase I have question on nv-torch-latest-cpu.   It looks like the intention of this test is test CUDA_Accelerator's compatibility when running on CPU only machine.  But instead CPU_Accelerator is selected.   What is user's expectation in this scenario?

@tjruwase I have question on workflow nv-torch-latest-cpu. It looks like the intention of this test is test CUDA_Accelerator's compatibility when running on CPU only machine. But instead CPU_Accelerator is selected. What is user's expectation in this scenario?

This workflow was part of what spurred the original discussion, but this should run on a CPU only machine but if the user has cuda installed for cpu only if they wanted to run that way, so if they installed cuda 11.6+cpu for example.
@mrwyattii - we could probably rename this file to be cpu-torch-latest since this doesn't need the nv prefix?

This workflow was part of what spurred the original discussion, but this should run on a CPU only machine but if the user has cuda installed for cpu only if they wanted to run that way, so if they installed cuda 11.6+cpu for example.
@mrwyattii - we could probably rename this file to be cpu-torch-latest since this doesn't need the nv prefix?

@loadams is absolutely correct. This workflow is meant for cpu-only environment. The nv prefix should be dropped from the name.

This workflow was part of what spurred the original discussion, but this should run on a CPU only machine but if the user has cuda installed for cpu only if they wanted to run that way, so if they installed cuda 11.6+cpu for example.
@mrwyattii - we could probably rename this file to be cpu-torch-latest since this doesn't need the nv prefix?

@loadams is absolutely correct. This workflow is meant for cpu-only environment. The nv prefix should be dropped from the name.

PR for this is here: https://github.com/microsoft/DeepSpeed/pull/5226

The failure in cpu-torch-latest had been fixed.  On my local environment I observe 127 passes.  @loadams can you help start the workflow?  Thanks!

The failure in cpu-torch-latest had been fixed. On my local environment I observe 127 passes. @loadams can you help start the workflow? Thanks!

@delock - Looks like it is now failing for numactl issues?  I can't quite tell, but I think that is probably just something that needs to be added in the .yml setup.

FYI, I had to install numactl because I ran into this error, numactl: command not found

@tjruwase @loadams @mrwyattii There are two choices on when to fallback to gloo communican backend in Pytorch.
Current solution is choose gloo backend in CPU Accelerator if oneCCL Binding for PyTorch is not installed.   In this case CCLCommBuilder will not be used.  In this case, DeepSpeed would use default PyTorch communication backend for all communications.  If oneCCL Binding for PyTorch is installed, current CCLBackend would be used which would call CCL comm kernels.
A different solution is in ccl.py use gloo as base communication backend if oneCCL Binding for PyTorch is not installed, but still build communication kernels from CCLCommBuilder.  In this case we need to install oneCCL library as indicated in 'cpu-inference' workflow and would be able to use these communication kernels written in C++.
The first option has less dependency but would have very low communication performance especially for inference_all_reduce.  The second option has better performance because we can leverage oneCCL performance, but will need install additional library on the system.  On a Xeon 2 socket machine, this difference can be up to 15x.  For some inference use case i.e. inference with AutoTP there will be big performance impact.
What's your preference on this?

The first solution code change is here. https://github.com/microsoft/DeepSpeed/pull/5206/files#diff-b4d7bc897d0a7ddbeda388ae8960d4d938f56dd121f3a269bdef650b2f201e8dR27
The second solution will be to change the backend to 'gloo' in here https://github.com/microsoft/DeepSpeed/blob/master/deepspeed/comm/ccl.py#L42 if oneCCL Binding for PyTorch is not installed.

The reason for cpu-torch-latest is due  to most UTs assume fp16 data type that CPU accelerator does not support.   I changed some of the tests to use bf16 data type if accelerator support bf16 but not fp16.  It would take a while to make all the UT pass.
@loadams can you help restart the workflow?  I'll push more test changes but it would take a while.

The reason for cpu-torch-latest is due to most UTs assume fp16 data type that CPU accelerator does not support. I changed some of the tests to use bf16 data type if accelerator support bf16 but not fp16. It would take a while to make all the UT pass.

@delock, thanks for helping with this. The root cause is the following common construct in the UT.
    "fp16": {"enabled": True}

Rather than skipping these tests, I think the best solution is to modify to
    "fp16": { "enabled": get_accelerator().is_fp16_supported()}

What do you think?
@umchand, can you please try this idea in your environment? Thanks!

Also the  error in https://github.com/microsoft/DeepSpeed/actions/runs/8189457704/job/22394285394?pr=5206 indicates using is_fp16_supported() may cause lazy init issue on CUDA device in some UTs,  Some special handling will be needed.
https://github.com/microsoft/DeepSpeed/actions/runs/8189457704/job/22394285394?pr=5206

The reason for cpu-torch-latest is due to most UTs assume fp16 data type that CPU accelerator does not support. I changed some of the tests to use bf16 data type if accelerator support bf16 but not fp16. It would take a while to make all the UT pass.

@delock, thanks for helping with this. The root cause is the following common construct in the UT:
    "fp16": {"enabled": True}

Rather than skipping these tests, I think the best solution is to modify to
    "fp16": { "enabled": get_accelerator().is_fp16_supported()}

What do you think?
@umchand, can you please try this idea in your environment? Thanks!

FYI, I tried this change suggested by @tjruwase and did see the 4 test which were failing pass.

The reason for cpu-torch-latest is due to most UTs assume fp16 data type that CPU accelerator does not support. I changed some of the tests to use bf16 data type if accelerator support bf16 but not fp16. It would take a while to make all the UT pass.

@delock, thanks for helping with this. The root cause is the following common construct in the UT:
    "fp16": {"enabled": True}

Rather than skipping these tests, I think the best solution is to modify to
    "fp16": { "enabled": get_accelerator().is_fp16_supported()}

What do you think?
@umchand, can you please try this idea in your environment? Thanks!

FYI, I tried this change suggested by @tjruwase and did see the 4 test which were failing pass.

Thanks! @umchand @tjruwase.  I have changed more UTs, can you help start the workflow?

The reason for cpu-torch-latest is due to most UTs assume fp16 data type that CPU accelerator does not support. I changed some of the tests to use bf16 data type if accelerator support bf16 but not fp16. It would take a while to make all the UT pass.

@delock, thanks for helping with this. The root cause is the following common construct in the UT:
    "fp16": {"enabled": True}

Rather than skipping these tests, I think the best solution is to modify to
    "fp16": { "enabled": get_accelerator().is_fp16_supported()}

What do you think?
@umchand, can you please try this idea in your environment? Thanks!

FYI, I tried this change suggested by @tjruwase and did see the 4 test which were failing pass.

Thanks! @umchand @tjruwase. I have changed more UTs, can you help start the workflow?

Running now

@loadams the error in nv-inference is quite strange, preferred_dtype is a variable defined in unit/common.py
Maybe define it as a variable is not a good practice.  I changed it to a function instead.  Can you help restart the workflow?  Thanks!

@loadams The remaining 4 test failure is due to pdsh command not found.  pdsh had not been validated for CPU Accelerator, where impi launcher is recommended for multi-node.  Nevertheless, I installed pdsh in this workflow and see what happens.  Can you help restart the workflow?  Thanks!

Hi,
@tjruwase @loadams, from the error message, this machine had not  been configured for multi-node runner.  This machine needs host key verification (ssh with authenticated keys).  Otherwise we have to skip this test for CPU accelerator
    def test_user_args(cmd):
        p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        out, err = p.communicate()
>       assert "ARG PARSE SUCCESS" in out.decode("utf-8"), f"User args not parsed correctly: {err.decode('utf-8')}"
E       AssertionError: User args not parsed correctly: localhost: Host key verification failed.

E         pdsh@fv-az843-752: localhost: ssh exited with exit code 255
E         /home/runner/work/DeepSpeed/DeepSpeed/unit-test-venv/lib/python3.8/site-packages/transformers/utils/hub.py:124: FutureWarning: Using `TRANSFORMERS_CACHE` is deprecated and will be removed in v5 of Transformers. Use `HF_HOME` instead.
E           warnings.warn(
E

@tjruwase there is also some UT skipped with CPU accelerator.  Each one may need further investigation  Will need some help looking at the real reason of the failure and fix them one by one.  Should we put this work into seperate PRs and keep these skips with CPU accelerators?

@tjruwase there is also some UT skipped with CPU accelerator. Each one may need further investigation Will need some help looking at the real reason of the failure and fix them one by one. Should we put this work into seperate PRs and keep these skips with CPU accelerators?

Yes, it is okay to put that work into a separate PR.

The latest PR should fix nv-torch-latest failrues.
checkpoint_correctness_verification will need some further change to be more clean: remove fp16 parameter and use dtype parameter instead.

Hi, @tjruwase @loadams, from the error message, this machine had not been configured for multi-node runner. This machine needs host key verification (ssh with authenticated keys). Otherwise we have to skip this test for CPU accelerator
    def test_user_args(cmd):
        p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        out, err = p.communicate()
>       assert "ARG PARSE SUCCESS" in out.decode("utf-8"), f"User args not parsed correctly: {err.decode('utf-8')}"
E       AssertionError: User args not parsed correctly: localhost: Host key verification failed.

E         pdsh@fv-az843-752: localhost: ssh exited with exit code 255
E         /home/runner/work/DeepSpeed/DeepSpeed/unit-test-venv/lib/python3.8/site-packages/transformers/utils/hub.py:124: FutureWarning: Using `TRANSFORMERS_CACHE` is deprecated and will be removed in v5 of Transformers. Use `HF_HOME` instead.
E           warnings.warn(
E

@mrwyattii - what are your thoughts here?  But I think that we should probably no install pdsh here and not run those multi-node tests since we don't today?

A short summary of tests skipped if device_name is "cpu".  Total 23 skips in 12 files
checkpoint/test_lr_scheduler.py:                                                                                26:        if get_accelerator().device_name() == 'cpu':                                                                                78:        if get_accelerator().device_name() == 'cpu':                                                                                checkpoint/test_zero_optimizer.py:                                                                                156:        if zero_stage == 0 and get_accelerator().device_name() == "cpu":                                                                                331:        if zero_stage == 0 and get_accelerator().device_name() == "cpu":                                                                                checkpoint/test_other_optimizer.py:                                                                                75:        if get_accelerator().device_name() == "cpu":                                                                                common.py:                                                                                88:            assert get_accelerator().device_name() == 'cpu'                                                                                launcher/test_user_args.py:                                                                                47:    if multi_node and get_accelerator().device_name() == "cpu":                                                                                runtime/activation_checkpointing/test_activation_checkpointing.py:                                                                                65:    if get_accelerator().device_name() == "cpu":                                                                                87:    if get_accelerator().device_name() == "cpu":                                                                                runtime/zero/test_zero.py:                                                                                94:        if mics_enabled and get_accelerator().device_name() == "cpu":                                                                                1320:        if get_accelerator().device_name() == "cpu":                                                                                runtime/zero/test_zero_tensor_fragment.py:                                                                                147:        if get_accelerator().device_name() == "cpu":                                                                                runtime/compile/test_compile_wrapper.py:                                                                                75:        if get_accelerator().device_name() == "cpu":                                                                                runtime/compile/test_compile_zero.py:                                                                                33:        if get_accelerator().device_name() == "cpu":                                                                                runtime/compile/test_load_config.py:                                                                                77:        if get_accelerator().device_name() == "cpu":                                                                                85:        if get_accelerator().device_name() == "cpu":                                                                                96:        if get_accelerator().device_name() == "cpu":                                                                                104:        if get_accelerator().device_name() == "cpu":                                                                                113:        if get_accelerator().device_name() == "cpu":                                                                                122:        if get_accelerator().device_name() == "cpu":                                                                                runtime/test_ds_config_dict.py:                                                                                251:        if get_accelerator().device_name() == "cpu":                                                                                runtime/test_data_efficiency.py:                                                                                57:        if get_accelerator().device_name() == "cpu":                                                                                133:        if get_accelerator().device_name() == "cpu":                                                                                178:        if get_accelerator().device_name() == "cpu":


coc.nvim error "Uncaught exception: Header must provide a Content-Length property"

I would like to use PerlNavigator with vim.

coc.nvim is installed.
followed the instructions to install PerlNavigator for other editors (git clone...)
opened a trivial perl script with a syntax error (missing "my"): The error was marked and diagnostics shown (fine so far)
moved the cursor to a subroutine call: "dosomething();" typed gd to go to the definition of the subroutine but got the following error message in the status line:

[coc.nvim]: Uncaught exception: Header must provide a Content-Length property

CocInfo indicates that PerlNavigator was started and then also shows the exception.
Perhaps I have a misconception about how "go to definition" works (I am just starting moving from pure editing to IDE functionality) but I think at least there should be a more helpful error message.

HI @bukephalos, I've been making quite a few changes this weekend, especially around the new v5.38 class feature. Unfortunately I broke go-to definition for non-vscode editors. I just pushed a fix, which is now available in version 0.6.0. Thanks for the bug report.

Works fine now, thanks!


Chatplugin bookmark bar overflow

Describe the bug
When opening a chatplugin page with the bookmarks open on Chrome, it overflows beyond the window
To Reproduce
Steps to reproduce the behavior:

Open a chatplugin installation like airy.co
Open the chatplugin
(see system and browser) and observe

Expected behavior
There should be spacing between the top of the browser window and the top of the chat plugin.
Screenshots

Desktop (please complete the following information):

OS: Mac
Browser: Chrome
Version: 92

This doesn't happen anymore. it was fixed with #2314 by https://github.com/airyhq/airy/pull/2315/files


Use AMP PHP toolbox from Packagist

Summary

Relevant Technical Choices

To-do

User-facing changes

Testing Instructions

See #4897

@swissspidy This PR is in draft. Should I review it. Can you explain the PR a little more in the description?

@spacedmonkey Nothing to review just yet. Just wanted to make you aware of it after the Slack discussion on Friday about the AMP integration. Will revisit after AMP 2.0.6 drops.

Combining with #5344


Cleanup Identifier

This PR closes #360. It should be merged after core-java#989.
The deprecated Identifier#generate method is removed, as well as the obsolete UuidFactory.

@alexander-aleksandrov PTAL.


Error when trying to import to QS Enterprise Jun 2019

mekaarogram-master.zip sounds like a zip of this entire repo was attempted to be uploaded which won't work, try using the zip files attached to a release


Add tf.SparseTensor and tf.IndexedSlices support to a number of T…

…ensorFlow ops.
The following element-wise unary ops now support tf.SparseTensor and tf.IndexedSlices. The output is of the same type as the input.

abs
absolute
arcsin
arcsinh
arctan
arctanh
ceil
conj
conjugate
copy
expm1
floor
imag
log1p
negative
real
round
sign
sin
sinh
sqrt
square
tan
tanh

The following element-wise unary ops now support tf.SparseTensor and tf.IndexedSlices. The output is dense.

arccos
arccosh
cos
cosh
exp
log
log10
log2
reciprocal

The following element-wise binary ops now support tf.SparseTensor and tf.IndexedSlices. The output type depends on the two inputs and the op.

add (already supported tf.SparseTensor)
subtract (already supported tf.SparseTensor)
maximum (already supported tf.SparseTensor)
minimum (already supported tf.SparseTensor)
multiply (already supported tf.SparseTensor)
mod
divide
true_divide
floor_divide

The following reduction op now supports tf.IndexedSlices. The output is an tf.IndexedSlices unless dimension 0 is reduced or the rank of the output is 1 or less.

mean

This is in preparation for supporting sparse gradients in optimizers.

Codecov Report
Attention: 180 lines in your changes are missing coverage. Please review.

Comparison is base (6e05182) 78.41% compared to head (2abeddf) 56.86%.

Additional details and impacted files
@@             Coverage Diff             @@
##           master   #18633       +/-   ##
===========================================
- Coverage   78.41%   56.86%   -21.56%
===========================================
  Files         334      335        +1
  Lines       32524    32770      +246
  Branches     6353     6390       +37
===========================================
- Hits        25505    18634     -6871
- Misses       5462    12702     +7240
+ Partials     1557     1434      -123

Flag
Coverage Δ

keras
56.86% <44.78%> (-21.45%)
:arrow_down:

keras-jax
?

keras-numpy
56.86% <44.78%> (-1.13%)
:arrow_down:

keras-tensorflow
?

keras-torch
?

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

Files
Coverage Δ

keras/ops/numpy.py
95.52% <100.00%> (+0.02%)
:arrow_up:

keras/backend/tensorflow/core.py
60.00% <0.00%> (-36.25%)
:arrow_down:

keras/backend/tensorflow/numpy.py
39.38% <53.96%> (-56.36%)
:arrow_down:

keras/backend/tensorflow/sparse.py
18.13% <18.13%> (ø)

... and 178 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

To note, cond ops can be quite expensive. We should check what performance looks like.

To note, cond ops can be quite expensive. We should check what performance looks like.

Interesting. Some of the conds are optimizations (shortcut when indices are the same, which is a very common use case with sparse gradients). But some are workarounds for TF bugs. For instance, if after computing the intersection nothing is else (empty SparseTensor with no indices), a bunch of trivial operations fails (e.g. reshape) even though they're perfectly valid, so I had to special case them.

To note, cond ops can be quite expensive. We should check what performance looks like.

Interesting. Some of the conds are optimizations (shortcut when indices are the same, which is a very common use case with sparse gradients). But some are workarounds for TF bugs. For instance, if after computing the intersection nothing is else (empty SparseTensor with no indices), a bunch of trivial operations fails (e.g. reshape) even though they're perfectly valid, so I had to special case them.

Looking into this a bit more, I found a way to check that the indices are the same at trace time. So, in the case of optimizers for instance, the conds should no longer be in the graph because when we combine two IndexedSlices, they come from the same gradient and have the same indices.


Feedback from Wenyu Nie

Larger Points of Feedback

Alignment with Usage Scenario and Target Audience: The dashboard aligns well with the intended usage scenario for Chief Constable Adam Palmer and the Vancouver Police Department's requirements. It effectively visualizes crime data to assist in resource allocation and strategic planning. However, I would recommend adding an additional visualization that directly correlates crime type with time of day across neighborhoods. This could enable even quicker identification of patterns for certain types of crimes.

Intuitiveness and Usability: The dashboard is user-friendly and provides a good amount of interaction through filters. However, it could be enhanced by integrating a tutorial or help overlay for first-time users. This would guide them through the features and ensure they leverage the tool to its fullest potential.

Plot Selection and Widget Interaction: The selection of plots seems appropriate, but the hourly counts plot could include more detailed interaction. Consider integrating a feature that allows users to click on a specific hour to drill down into more granular data, such as the types of crimes occurring during that hour.

Plot Descriptions and Intuitiveness: The plots are generally self-explanatory, but including a brief description or legend for each plot could enhance clarity, especially for less tech-savvy users.

Smaller Points of Feedback

Readability of Text: Some text elements, particularly in the bar chart, are difficult to read due to small font size. Increasing the text size or the angle or changing the font could improve readability.
Dashboard Layout: The layout is clean and follows a logical structure, but it might benefit from a slight rearrangement. Placing the temporal distribution plot next to the spatial heatmap could help users make connections between time and location more efficiently.
Widget Functionality: Ensure that the filtering options include a clear way to reset to default or when all filters are removed. This can prevent confusion and enhance the user's ability to start a new analysis quickly.

Suggestions
Your dashboard provides a solid foundation for the Vancouver Police Department to analyze crime data. To further improve it, I recommend focusing on a few areas:

Enhanced Plot Interaction: Allow for more detailed interaction with plots for deeper analysis. e.g. selecting points in the map, zooming in to certain time points of the time plot.
User Onboarding: Implement a help feature for new users to get accustomed to the dashboard quickly.
Text Readability: Improve the readability of text on all visualizations.
Dashboard Layout Optimization: Reassess the layout to facilitate a better data analysis flow.

Your work so far is already very wonderful and the topic is very interesting. I believe with a few adjustments, it can become an even more powerful tool for the Vancouver Police Department. I look forward to seeing the implemented changes and am confident they will greatly enhance the utility and user experience of the "Crime Tracker" dashboard. Thank you for deliverying such a cool dashboard!

Thanks for the great feedback @wenyunie ! Below are a few comments about your feedback on things that we incorporated into our dashboard, and aspects that we might explore at a later stage perhaps:

Your first point about including a visualization that correlates crime type with time of day across neighborhoods is something that our team discussed initially; however, we believe that the current bar plots allow the Vancouver Police Department (VPD) to determine which crimes are highest in which neighborhoods, and then they can correspond this information with time of day occurrences of these crimes through the use of the dropdowns.
Your feedback about the integration of a tutorial is excellent. Currently, we felt that due to the constraints of time with our studies and work, we included a gif in our README.md to provide a simple glance at how our dashboard will function. However, it is definitely essential to include a walkthrough video guiding our target audience of the usage of our dashboard.

Overall feedback points:
We have worked on refurbishing the layout of our dashboard to allow for a smoother understanding of all of the information, that is less convoluted for the user. And also worked on the color and fonts to improve readability so that there is a smoother flow from viewing data to interpreting it.
Thanks for your feedback!


Plan for new thrift server

This is our final plan for new thrift server

[ ] Add new Spark thrift server module: spark-service. This module based on latest v11 protocol TCLService.thrift.
[ ] In order to reduce the dependency of hive-service, adapte hive-jdbc to our new thrift server.
[ ] In order to reduce the dependency of hive-service, adapte hive-beeline to our new thrift server.
[ ] Remove all Hive dependencies or make Hive pluggable. To make the new thrift server work without the spark-hive module.

Keep function like global init file: .hiverc, Session Config only in hive mode

[ ] Support user impersonation:

MiniKDC or Docker to test impersonation?
Task level plugin or hard code?

@juliuszsompolski @AngersZhuuuu @leoluan2009 @LantaoJin Do you have any ideas or questions?

New thriftserver:

Use latest thrift protocol: https://github.com/spark-thriftserver/spark-thriftserver/blob/thriftserver/sql/thriftserver/pom.xml#L115-L117
Test this thrift module with Hive 2.3: https://github.com/spark-thriftserver/spark-thriftserver/blob/thriftserver/sql/thriftserver/pom.xml#L131-L134
Add hive-jdbc related jars to classpath when packaging this module: https://github.com/spark-thriftserver/spark-thriftserver/blob/thriftserver/assembly/pom.xml#L181-L219
Add start command to start-thriftserver.sh: https://github.com/spark-thriftserver/spark-thriftserver/blob/thriftserver/sbin/start-thriftserver.sh#L41-L44

Build without Hive metastore support:
./dev/make-distribution.sh --tgz -Pspark-thriftserver

Build with Hive metastore support:
./dev/make-distribution.sh --tgz -Pspark-thriftserver -Phive


New install flow

The user needs to load install.html.
This triggers the installation of the application fines and content files if a ?offlineManifest=[id] is included.
The user can then go offline and visit index.html and no extra requests should
be made over the network.
PT Story:
https://www.pivotaltracker.com/story/show/177164109

@dougmartin this is ready for a preliminary review.
I still want to clean up the FIXME and TODO comments.

Definitely could use more tests, but I think this will have to do for now.


⚠ Bofrost.lu has degraded performance

In 490ddd1, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1584 ms

Resolved: Bofrost.lu performance has improved in b6c151d after 26 minutes.


Use sbt-dynver 4.1.1

Codecov Report

Merging #48 (5a95b29) into main (26d8590) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #48   +/-   ##
=======================================
  Coverage   98.57%   98.57%
=======================================
  Files          65       65
  Lines         492      492
  Branches       30       30
=======================================
  Hits          485      485
  Misses          7        7

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 26d8590...5a95b29. Read the comment docs.


Fix Multi-Touch events on recyclerView items

@RocketChat/android

Closes #2141 and #2044
Changes:

Added Custom RecyclerView  RCRecyclerView  to handle MultiTouchEvents
Added Interface MultiTouchEventsListener to
2.1)BaseViewHolder (For ChatRoomAdapter)
2.2)RoomViewHolder(For ChatRoomsAdapter)

Screenshots or GIF for the change:
Please Carefully Notice the taps (White visible spots)

@filipedelimabrito  could you please review this. Thank you


Malformed IngressRoute breaks all IngressRoutes

Traefik version: v2.4.8
This is effectively a duplicate of https://community.traefik.io/t/port-http-inside-ingressroute-block-all-ingressroute/5213 (https://github.com/traefik/traefik/issues/6614) - which has been closed and I'm unable to comment on.
In our case it was a typo in an instance of IngressRoute port (8080s), making it a string instead of an int.
E0427 07:14:14.313866       1 reflector.go:138] pkg/mod/k8s.io/client-go@v0.20.2/tools/cache/reflector.go:167: Failed to watch *v1alpha1.IngressRoute: failed to list *v1alpha1.IngressRoute: v1alpha1.IngressRouteList.Items: []v1alpha1.IngressRoute: v1alpha1.IngressRoute.Spec: v1alpha
1.IngressRouteSpec.Routes: []v1alpha1.Route: v1alpha1.Route.Services: []v1alpha1.Service: v1alpha1.Service.LoadBalancerSpec: Port: readUint32: unexpected character: , error found in #10 byte of ...|","port":"8080s"}]}]|..., bigger context ...|rvices":[{"kind":"Service","name":"probe
","port":"8080s"}]}]}},{"apiVersion":"traefik.containo.us/v1|...
E0427 07:15:03.990142       1 reflector.go:138] pkg/mod/k8s.io/client-go@v0.20.2/tools/cache/reflector.go:167: Failed to watch *v1alpha1.IngressRoute: failed to list *v1alpha1.IngressRoute: v1alpha1.IngressRouteList.Items: []v1alpha1.IngressRoute: v1alpha1.IngressRoute.Spec: v1alpha
1.IngressRouteSpec.Routes: []v1alpha1.Route: v1alpha1.Route.Services: []v1alpha1.Service: v1alpha1.Service.LoadBalancerSpec: Port: readUint32: unexpected character: , error found in #10 byte of ...|","port":"8080s"}]}]|..., bigger context ...|rvices":[{"kind":"Service","name":"probe
","port":"8080s"}]}]}},{"apiVersion":"traefik.containo.us/v1|...
time="2021-04-27T07:15:59Z" level=error msg="accept tcp [::]:8080: use of closed network connection" entryPointName=traefik
time="2021-04-27T07:15:59Z" level=error msg="Error while starting server: http: Server closed" entryPointName=traefik
time="2021-04-27T07:15:59Z" level=error msg="accept tcp [::]:80: use of closed network connection" entryPointName=web
time="2021-04-27T07:15:59Z" level=error msg="Error while starting server: http: Server closed" entryPointName=web
time="2021-04-27T07:15:59Z" level=error msg="Error while starting server: http: Server closed" entryPointName=traefik
time="2021-04-27T07:15:59Z" level=error msg="Error while starting server: http: Server closed" entryPointName=web
time="2021-04-27T07:15:59Z" level=error msg="close tcp [::]:80: use of closed network connection" entryPointName=web
time="2021-04-27T07:15:59Z" level=error msg="close tcp [::]:8080: use of closed network connection" entryPointName=traefik
time="2021-04-27T07:16:00Z" level=error msg="Error watching kubernetes events: timed out waiting for controller caches to sync *v1alpha1.IngressRoute in namespace \"\"" providerName=kubernetescrd

Original issue was closed in favour of:
https://github.com/traefik/traefik/issues/6109
closed in favour of:
https://github.com/traefik/traefik/issues/5473
close in:
https://github.com/traefik/traefik/pull/7815
Which looks like is planned for v2.5 release.
However right now this issue exists in the latest available version and poses a massive risk that a single erroneous character in a namespaced resource will bring down controller for the whole cluster.
I would like to keep this issue open - to track the current existing problem and close upon validation of the fix proposed in https://github.com/traefik/traefik/pull/7815.
Thank you.

Can someone confirm that this problem is solved in the future version 2.5?

Hello @Montero1992,
As the pr #7815 has been merged on the master branch, this issue will be fixed on the next minor release of Traefik (v2.5).

ok, thank you @tomMoulard !

Please re-open this issue.
https://github.com/traefik/traefik/releases - 2.5.0 is not out. We have not verified that 2.5.0 does indeed fix this problem.

The issues are closed when the PR is merged, it's not related to a release.


Neglected Library

Anyone interested in joining me in creating a new organization to house this npm module and be more active?

Hey Eric,
Sounds like a great idea. I'm on the road for the next few months and haven't had the time to give it what it deserves. Feel free to carry the torch.

@ericraio absolutely, moving it over to ES6 and promises would be something I would like to join as well-

Hey Erik / Eric, any other feature requests? I have some time to devote over the next 4-6 weeks.

I think the easiest way to keep it going is to clean up the code up to modern standard to make it easier to clear out bugs and add features later on, but that's of course your decision =)
Please let me know if I can help out contributing.

Yeah that sounds reasonable. Any libraries in particular that are good to model after?

@guymorita I think just a simple refactoring up to ES6 standards including arrow functions, let / const and promises instead of callbacks will be the perfect first baseline to reach 😊

On it :)

@ericraio @slowmove actively working on it again. going to crank out some key features then launch 3.0.


Add Tooltips / Advice on Numbering & Other Columns

If you omit the page start number, you don't get page numbers; but this is not mentioned anywhere and you either find it out by accident or read the code.
Other fields might benefit from tooltips/help.
[Yes I'm willing to submit a PR for this but not quite yet].

... although my i18n to Spanish/French might be non-idiomatic when I do (I can read both languages at a very basic level and will see any obvious bad translations but I don't have the nuance of a Spanish/French/Quebecois person to understand the subtleties).

i agree the detail about the page numbers is not easy to discover, i can add some kind of help text. no need to make a PR


DB container keeps restarting

I'm following the steps in the readme, but I run into an issue at step 5 (apply Django migrations). It starts 3 containers (db, redis, jaeger), then logs an error: psycopg2.OperationalError: could not translate host name "db" to address: Name or service not known.
Listing my containers with docker-compose ps, I can see that the db containers is always in the Restarting state. Checking the logs of that container, I see the following repeated over and over, about every minute:
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

initdb: directory "/var/lib/postgresql/data" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/var/lib/postgresql/data" or run initdb
with an argument other than "/var/lib/postgresql/data".

What am I doing wrong? Am I skipping a step? I'm on Linux Mint 20, for what it's worth.

Hi - did you find a solution to that? I'm having the same problem

I'm afraid not, I'm now just trying to run the 3 apps individually, but as you can imagine it's not as quick and convenient.

Ah I see thank you very much I'll try that

So this issue has been closed - has the problem been fixed in the current release?

I'm facing this issue right now. Solved it by following this


How to download media from web whats app?

Hi All,
I want to download all type of media which received on whatsapp,
when i try downloadFileWithCredentials getting below error
Access to XMLHttpRequest at 'https://mmg.whatsapp.net/d/f/Amfl9fbT6s0ZbKBbQnIoUNY59HhvCeMetp_QYU35Egg5.enc' from origin 'https://web.whatsapp.com' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
Please suggest.

Hi All,
I want to download all type of media which received on whatsapp,
when i try downloadFileWithCredentials getting below error
Access to XMLHttpRequest at 'https://mmg.whatsapp.net/d/f/Amfl9fbT6s0ZbKBbQnIoUNY59HhvCeMetp_QYU35Egg5.enc' from origin 'https://web.whatsapp.com' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
Please suggest.

How are you getting the URL to use in that function?

from

Hi All,
I want to download all type of media which received on whatsapp,
when i try downloadFileWithCredentials getting below error
Access to XMLHttpRequest at 'https://mmg.whatsapp.net/d/f/Amfl9fbT6s0ZbKBbQnIoUNY59HhvCeMetp_QYU35Egg5.enc' from origin 'https://web.whatsapp.com' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
Please suggest.

How are you getting the URL to use in that function?

From incoming message we get media url


Fix default values in fill required fields completions

Purpose
This PR fixes the default values in fill required fields completions and adds a new context to track the number of placeholders.
Fixes #37999
Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[x] Added necessary tests

[x] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

LGTM! Better if we can refactor the following method using the SnippetContext as well.
https://github.com/ballerina-platform/ballerina-lang/blob/85efbf36af82ef69ad3e27340243b84697c7e18d/language-server/modules/langserver-core/src/main/java/org/ballerinalang/langserver/completions/providers/context/util/ServiceTemplateGenerator.java#L493

Shall we create an issue for this and address it separately?

LGTM! Better if we can refactor the following method using the SnippetContext as well.
https://github.com/ballerina-platform/ballerina-lang/blob/85efbf36af82ef69ad3e27340243b84697c7e18d/language-server/modules/langserver-core/src/main/java/org/ballerinalang/langserver/completions/providers/context/util/ServiceTemplateGenerator.java#L493

Shall we create an issue for this and address it separately as we will have to do some changes in ListenerMetaData?

Created https://github.com/ballerina-platform/ballerina-lang/issues/38797


Dead code is not detected after a never returning function call

Related to #13957
TypeScript Version:  2.1.4
"strictNullChecks": true
Code

function justThrow(): never {
	throw new Error('We throw');
}

function makeString(n: number): string {
	justThrow();
	return `This is a dead code`;
}

Expected behavior:
Report that there is an unreachable (dead) code after a call to never returning function.
Actual behavior:
Dead code is not detected.

Flow control and function type analysis are done in two passes that don't fully interact with each other. Tons of open issues on this already, see #12825 as a starting point.


Unable to Invoke Docker Action - OpenWhisk

I tried to build a simple Spring Cloud Function which am deploying to OpenWhisk running locally,
Using : Spring Cloud Functions 1.0.0.BUILD-SNAPSHOT
App Class:
package functions;
... (imports)
@SpringBootApplication
public class Application {

    @Bean
    public Function<Greetings, Greetings> greeter() {
        return v -> new Greetings(v.getName());
    }
... (psvm)
}

Greetings is just POJO with name and message members
function.properties
dependencies.function: com.example\:hello-pof\:0.0.1-SNAPSHOT

After build the docker image as https://github.com/spring-cloud/spring-cloud-function/tree/master/spring-cloud-function-adapters/spring-cloud-function-adapter-openwhisk#README.md section  "Use the following Dockerfile"
Once the action is created, I tried invoking the action using the command
wsk action invoke greeter -param payload '{"name": "tom"}', resulting in
2018-02-07T13:09:36.975505203Z stdout: 2018-02-07 13:09:36.970 ERROR 1 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to reactor.core.publisher.Flux] with root cause",
    "2018-02-07T13:09:36.975541701Z stdout: ",
    "2018-02-07T13:09:36.975546325Z stdout: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to reactor.core.publisher.Flux",
    "2018-02-07T13:09:36.975550156Z stdout: at org.springframework.cloud.function.core.FluxFunction.apply(FluxFunction.java:32) ~[spring-cloud-function-core-1.0.0.BUILD-SNAPSHOT.jar:1.0.0.BUILD-SNAPSHOT]",
    "2018-02-07T13:09:36.975553666Z stdout: at org.springframework.cloud.function.core.FluxFunction.lambda$apply$0(FluxFunction.java:42) ~[spring-cloud-function-core-1.0.0.BUILD-SNAPSHOT.jar:1.0.0.BUILD-SNAPSHOT]",

The complete openwhisk activation result log is available here --> https://gist.github.com/kameshsampath/7c53103b4c42c2ffcd29ff1d5b8f7636

@dsyer - think I have fixed the issue in my branch https://github.com/kameshsampath/spring-cloud-function/tree/ow-issue-141, please let me know if you are OK to me sending PR, I can then sanitise and send a PR your way
I also wish to sanitise the class names inline with AWS/Azure  and add some documentation especially for OpenWhisk

Sounds good. I think it would be better to inject the ObjectMapper (Spring Boot will provide one if it is on the classpath), but otherwise I didn't see any issues.

Thanks @dsyer; I thought the autowiring of it inline with other adapters will add as part of my PR, will clean my experimental branch and send you PR by EoD my time .How about refactor classnames inline with other Adapters e.g FunctionIntializer can be like OpenWhiskFunctionIntializer??

Fine by me

@dsyer another question i have right now is, if the user does not pass the payload parameter then the app throws a NPE, i feel we should still return a result with empty string

I don't know what a sensible default is. NPE not. Happy to go with whatever you decide for now.

Closed with #142


Issues with UTF-8 texts between windows and *NIX

Godot version
3.3.3.stable
System information
Windows 10, GLES3, Linux (Arch) GLES3, Android
Issue description
When trying to work with a RichTextEdit everything works fine, the special [font] tag allows me to add smileys inline. All of this works dandy fine in Linux and Android, but on Windows we have the issue that the smiley copied from here: https://en.wikipedia.org/wiki/Emoticons_(Unicode_block)
are not visible in the editor anymore. Even worse, when trying top "copy" the unicode smileys from there, we have the following in the RichTextEdit, and no smiley available on display.

Same on Linux, but with working rendering:

I assume this is a Unicode/Windows/Locale/... issue - but are there any pointers or hints on how to work around that?
Steps to reproduce

Clone https://github.com/kuhnchris/godot-sandbox-whatsapp-but-not/
Open project in godot editor
See (or do not see) smiley in 2nd box. (after the bee movie block)

Minimal reproduction project
https://github.com/kuhnchris/godot-sandbox-whatsapp-but-not/

This is known issue.
Godot 3.x use wchar_t as a string char type (on Windows it's 16-bit, on other platforms 32-bit), and do not have surrogate pair support. It can't display characters with charcode > 0xffff on Windows. Fixing it would be breaking change and unlikely to happen for 3.x.
Godot 4.x use 32-bit  char32_t for strings on all platforms and do not have this issue.

This is not the first time this comes up, is there a place we could document this in 3.x so that's it's known why it doesn't work, and that it won't be fixed in 3.x?

Or we can add partial support for surrogates to the dynamic font, input won't work entirely correctly, but displaying emojies should be possible without breaking changes (and it's probably the most common use for it, at least all previous issues were about emojies).
draw_char/get_char_size do receive next char for kerning anyway, we can use it to combine surrogates.

This is not the first time this comes up, is there a place we could document this in 3.x so that's it's known why it doesn't work, and that it won't be fixed in 3.x?

I checked the RichTextEdit doc first, I assumed if there is anything regarding that I'd be there.
Or a separate "Unicode" section?

This was originally reported in https://github.com/godotengine/godot/issues/23093.

Fixed by #54625.


add formula for elixir 1.0

This adds the formula for elixir10 with version 1.0.5 since homebrew is now using Elixir version 1.1.x and some libraries still need the older version.
This is my first PR against homebrew-versions so please let me know if anything needs to be changed for a merge.  I ran brew audit --scrict and it seem to be ok.  Thanks!

Why does the homebrew bot need access to read all my data, both for my account and every team that I am a member of?  Am I reading that wrong?
Is it going to just keep failing the build unless I give it permission?

It wants to know if you're a member of the Homebrew organization. This doesn't grant the bot access to repositories. (see scopes)
The failure is unrelated:
==> audit problems
homebrew/versions/elixir10:
 * Description is too long. "name: desc" should be less than 80 characters.
Length is calculated as homebrew/versions/elixir10 + desc. (currently 88)

Hey, thanks for the quick reply.  Those permissions don't seem like they would be an issue, it just freaked me out at first.  I've got it approved now and I'll look at the error.

So far I can't reproduce the error:
$ brew audit elixir10 --strict --online
==> brew style elixir10

1 file inspected, no offenses detected

I did see this issue: https://github.com/Homebrew/linuxbrew/issues/451
I'm still trying to reproduce the error that Jenkins is seeing but by my manual count that string is only 60 characters long and is exactly the same as the formula for Elixir in homebrew.

I think I need to make one more update because this might need to be keg_only to avoid a conflict.  Checking...

I think it's good to go now.  Thanks for all the feedback on my first PR to this repo.  If there is anything else that needs to be updated please let me know.

@BrewTestBot test this please

Any more thoughts on this PR?

@ntrepid8 Is there a reason you prefer this approach over using a version manager like e.g. https://github.com/taylor/kiex?

@mikemcquaid I wasn't aware of kiex.  It looks like a good solution. Thanks for pointing it out :)
I don't see a kiex formula for homebrew so maybe that would be the best path forward.  I used other tools like this for managing Rust or NodeJS versions and that pattern seems to work pretty well.

I don't see a kiex formula for homebrew so maybe that would be the best path forward. I used other tools like this for managing Rust or NodeJS versions and that pattern seems to work pretty well.

Yeh, we're trying to encourage version managers where we can. A PR to add support for that or another version manager would be :heart:.
If it's OK I'll close this out in favour of that. Thanks for all your work there and sorry for the recent policy change under you!

Yep, let's close this one and I'll take a crack at a formula for kiex :)


Output Strict Transport Security header

I'm mainly using this to understand how hosts are configured, see if there are contributing factors when investigating bug reports.  So would like to expand things slightly any security relevant information.
Signed-off-by: Yuri Schimke<EMAIL_ADDRESS>

Consider this me floating expanding the scope of cft, because I'd like to have it be a one stop shop for why is my OkHttp client behaving differently than Chrome type questions.
I suspect Jesse my consider this first steps towards a shitty half baked implementation of openssl s_client


Can it be real-time?

Sorry for the late reply. I have not tested the inference speed of the method, you can test it on your machine to see if RIE satisfies your requirements.


Remove version: qforce.DocFetcher version 1.1.25

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

URL: https://sourceforge.net/projects/docfetcher/files/docfetcher/1.1.25/docfetcher_1.1.25_win32_setup.exe
OK
(Automated message - build 923)

Close with reason: Package still available;


Refactoring bors

This PR refactors how we manage the HITL testing. Specifically, now:

Bors is removed
Workflows are manually triggered on the branch in question via the "Actions" tab
HITL workflow triggers must be reviewed and approved prior to execution

This new method is a little more cumbersome than the previous bors commands, as it:

No longer is self-contained within the PR
Requires two actions as opposed to 1 (triggering, then approving trigger)

It would be nice if it were possible to:

Not require approval if the triggering user is one of the approvers
Add a method to trigger HITL runs directly from the PR (maybe via tagging?)

Can't (like before) we trigger the workflow dispatch on merging into the merge queue branches (which were staging/trying in bors)?


pull request for e2e test at 12/28/2016 05:26:10

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


Make help command more readable

This stems from the discussions in #322 and the proposed solutions.
The current fix made in #324 will fail, once 2-3 more characters are added in the help command.
Thus, in future making new commands, would be an issue for help command.
A good fix, for now(until we make a .md file/website for bot help and docs) seems to be what this discussion on the discord server hints at:

This conclusion stemmed from these inputs from @nhcarrigan in a discussion in #bot-chat on the discord server:

(more suggestions in #322 might be useful for later plans)

Looks good 👍

A potential fix:

OR this:

OR this:

(Any recommendations on design for the command?)

(the present PR represents the help as this->)

The current PR looks best, IMHO.

(though I think I should strip off the last | )

Great team work 💪


Fix exit code error in build command on Node 20+

This should close #495 pending @schickling's take on whether this is the correct remediation.
Although I'm very keen to dig more into Effect, I'm still very much a noob in that department. This fix assumes that since everything in the command is wrapped in an Effect that no additional error handling is necessary to handle actual runtime errors, but I haven't tested out that assumption yet.

not stale

not stale

not stale 🙏

not stale

not... stale... 🙏🏻

This is the funniest and most tragic pull request comment thread I've seen in years. @jrolfs thanks for doing this dude.

not 👏 stale 👏

not stale

not stale

not stale

@jrolfs I merged your fix in https://github.com/timlrx/contentlayer2/pull/8 - published as contentlayer2 v0.4.5. Tested it out verified that yarn contentlayer2 build no longer throws the error message in node 20.

🇫

@timlrx thanks and thanks for getting a fork off the ground! I was considering doing it myself but will switch our stuff over to yours (currently running a patched version).

For anyone following this, I switched to the fork, and it's working great and includes this fix. I wrote some docs on how to switch over here.

Thank you very much guys. 🙏


[Codelab Issue] Testing Codelab 5.2, Step 2 - typo in u8sually text

Describe the problem
typo in u8sually text
In which lesson and step of the codelab can this issue be found?
Lesson numbe 5 + step number. 2
How to reproduce?
Versions
Additional information
codelab: advanced-android-kotlin

#206


PKG: move inflection package from requirements.txt

We don't have requirements-dev.txt file in this repo, so I moved it to the best match requirements-test.txt.
Closes https://github.com/bluesky/ophyd/issues/1011.

I would be fine with this change but, on inspection, cannot find where inflection is used in ophyd. It's in scripts/collect_ad_boilerplate.py but that is a suggestion for code to be used, isn't it? It is not a unit test.
So, I can't approve yet.

Yes, it's used in https://github.com/bluesky/ophyd/blob/dd4b3e389a0202ecacce39fc3965d703c616b0d4/scripts/collect_ad_boilerplate.py#L5 and I mistakenly guided @jwlodek to put the dependency into the requirements.txt rather than in a separate place while he was working on https://github.com/bluesky/ophyd/pull/975.
@prjemian, what would be your suggestions? Another requirements-dev.txt file with that single dependency? I don't think it should stay in requirements.txt...

How is file scripts/collect_ad_boilerplate.py used?  Looks as if it is an example.  If that is the case, it is either a conditional requirements for scripts or additional documentation in this file.  As it stands, it is not necessary for use or testing of ophyd.

The script is used to auto-create ophyd classes for areaDetector drivers by scraping their *.template files. I wrote it mostly because I was writing classes for the ADPICam driver and it had over 200 PVs, so it felt like it made sense to just automate the process. I've used it to add a few other detector classes since then as well.

@jwlodek That's a good addition for the docstring.
This seems a justification for inclusion in requirements-dev.txt

revised doc string
    Writes boilerplate 'Detector' class for ophyd/areadetector/detectors.

    This script is automates the creation of ophyd classes for areaDetector drivers by scraping
    their *.template files. It is called by developers as needed.

I moved inflection to requirements-dev.txt (new file) and updated the docstring as discussed. @prjemian, @ZLLentz, are you OK with that outcome?

Neat! @ZLLentz, you have the honor of merging it then 😄.


Unauthorized

Hi,
I get random Unauthorized for every call after some uptime. The issue is solved restarting HA.
The log is just ERROR (MainThread) [custom_components.securitas.securitas_direct_new_api.apimanager] Unauthorized
Looks like a token is never refreshed and expires after some time.

Did you try to remove and re add the integration again?


feat: animations for default widgets

Hi!
This PR is the continuation / replacement of my previous work in #1855 which needed a heavy rebase as well as improvements for some edge cases.
This PR implements internal animations for some default widgets. The goal here is to make Iced applications appear smooth when hovering / clicking things, without breaking the API.
This heavily uses the frame subscription API as well as the brand new lilt crate (thanks @ejjonny !)
https://github.com/iced-rs/iced/assets/43273245/b9290c84-2571-4add-b083-84c5cb210db3
Motivation
In many other toolkits out there, such as GTK, app developers can make GUIs without needing to handle widget animations by themselves, which makes for a better coding experience and a coherent ecosystem.
Implementation
Animations are added to the widgets State, which use lilt::Animated<...> values that are then interpolated in the draw() function to render animated frames.
Animations are triggered by specific events, such as cursor movements.
The frame subscription API is used to request redraws until the animations are completed.
Widgets that have got animations are:

buttons: hover and click style transitions
I have had to make a kind of opinionated decision here. As of now, hovering a Button with the mouse transitions its color to a lighter/darker version for dark/light base colors, and pressing the Button reverts that effect back to the base color. However, this isn't very well suited to animations, as it makes the transition go from base to hover (hover), hover to base (pressed), then base to hover (release mouse button), then back from hover to base when not hovering it. On quick movements, it looks a bit odd. What other toolkits out there have been doing is a bit more linear: on a dark base color, hovering lightens it, pressing lightens it more, and so that there isn't too much back and forth between different variations.
Also, buttons feature an asymmetric animation. The transition from idle to hovered is quicker than the one back to idle. That way, when moving the cursor rapidly between multiple widgets, you still get the feedback of the widgets "lighting" up when the cursor flies over them, and then you get a slower, smooth transition back to their idle state. Otherwise, having long animations would prevent the hover effects from being visible on fast cursor movements, and animations fast enough for it would feel too fast for the "back to idle" transition.

text input cursor: cursor fades in and out when idle, but remains visible while typing

togglers

checkboxes

scrollables: scrolling using the mouse wheel and clicking on the scrollbar follows an eased-out trajectory, whereas scrolling by grabbing the scrollbar remains instantaneous.
To make the code simpler and the diff shorter, I've to do a bit of refactoring there. All offsets are now stored as relative offsets, but absolute offsets are still passed in arguments when necessary, only to be converted back to relative offsets (outside draw()).

This PR is divided in separate commits for an easier reviewing.
Caveats
Due to the stateless nature of the widgets, I've encountered some edge cases where a widget would use what I call a "tainted" state in the code. For instance, in the tour example, the first checkbox of a page will share the same state as the first checkbox of the page that follows (first one of its kind in the state tree map). This can lead to the new checkbox already having an ongoing animation when being rendered for the first time. I've added checks to detect and fix "tainted" states, they are pretty straightforward, but I did not find a better way to handle this.
What's next
If and when this PR lands, some more widgets can receive animations. However, the most important step that I intend to implement is a global animation speed multiplier, so that users can set it according to their preferences in the COSMIC desktop, for instance. It could also include some other user settings, such as animation styles for different widgets and so on.
Thanks for reading this!

Rebased on latest master