Why does Doc:save accept abs_filename as a parameter?

This seems like a very strange API decision that broke a bunch of plugins in the process. I believe that Doc should compute abs_filename itself instead of relying on an outer function to do it.

Well I am no longer sure about that but the doc module cannot figure out the absolute filename from the filename itself because, unlikely the original lite we can have several top-level directories in the treeview.
On the other hand I am maybe we wrong. If you find a better way I will be glad to accept a PR.

Oh, right, I didn't realize that. Don't you think it would be a bit better if we implemented a proper project system?
Essentially this all boils down to #15 again - a project would be a collection of folders, and not just a single folder.
It would at least be nice if the abs_filename could be deduced from the filename if abs_filename is not provided. It would reduce breakage in existing plugins, which is something we may want to avoid in the long run - the more plugins there are, the more code there is to fix by dumb incompatibilities like this.

a project would be a collection of folders, and not just a single folder.

workspaces? I was talking about this yesterday about loading a CMakeLists.txt as project/workspace file, maybe also the meson configuration could be a candidate?

I'm OK with the architecture as it is. Having a primary directory and secondary directories makes a certain amount of sense; the .lite_project file, for example, sits in the primary directory, unambiguously. We'd have to have an additional system to keep track of where that'd be (amongst) other things. From a user perspective; the "primary" folder doesn't really matter, it just appears first, but it makes sense from an organizational perspective. Usually there is one main folder.

workspaces? I was talking about this yesterday about loading a CMakeLists.txt as project/workspace file, maybe also the meson configuration could be a candidate?

Currently the .lite_project serves this function, no?

Ok, the explanation I gave is wrong. The real reason was in this commit:
708c2983ef8175e791b3749003d03e9507d9362c
and the abs_filename argument was needed when opening a file-that-do-not-yet-exists because in this case we cannot call system.absolute_path on it. The purpose of the commit was to let you use open-file with a filename that does not exist and it will be created when you save the document.
Ironically this seems to be broken now in the dev branch. I am going to git bisect!

Currently the .lite_project serves this function, no?
Maybe see CMake/Meson/whatever "import configurations"?

Maybe see CMake/Meson/whatever "import configurations"?

Yeah; I think this'd work, but probably best as a plugin; as you'd be able to have however many for however many build systems, and expand it as needed.

For you information, I have a project-based branch that implements projects, I think it may corresponds to what you are talking about.
It works with the concept of a project. It can have any number for files or directories and it can be ephemeral or it can be saved and loaded. It goes beyond the lite classical approach: "a directory is a project" so that you can have a project that can span multiple directories.
In addition it solves the long-standing problem: what project directory to open when lauching lite just to open a file ? whatever directory you was opening it was sort of arbitrary and nobody-asked-for-this. Now with the project-based approach it will not open any directory  but it will created an ephemeral project that contains just the file you opened. As a bonus, if the project contain only a single file the treeview is not shown. In this way you can just quickly use lite-xl to edit a single file without being embarrassed by the treeview.

It works with the concept of a project. It can have any number for files or directories and it can be ephemeral or it can be saved and loaded. It goes beyond the lite classical approach: "a directory is a project" so that you can have a project that can span multiple directories.

In addition it solves the long-standing problem: what project directory to open when lauching lite just to open a file ? whatever directory you was opening it was sort of arbitrary and nobody-asked-for-this. Now with the project-based approach it will not open any directory but it will created an ephemeral project that contains just the file you opened. As a bonus, if the project contain only a single file the treeview is not shown. In this way you can just quickly use lite-xl to edit a single file without being embarrassed by the treeview.

Where does it save .lite_project, exactly? Like, if I ask lite to open a folder where my project resides, will it still understand I want to open that folder and its associated .lite_project file?

It would at least be nice if the abs_filename could be deduced from the filename if abs_filename is not provided. It would reduce breakage in existing plugins, which is something we may want to avoid in the long run - the more plugins there are, the more code there is to fix by dumb incompatibilities like this.

We need to have automated tests to test the editor and the plugins.
Someone could take the point of implementing the automated tests. I think it can be done by creating a mocking renwindow.c that doesn't really display a graphical window but it will be used for testing. It is not trivial to do but it is an interesting project and new may really improved the quality of the project.


Unknown column numbers

Hello Ben Strasser,
I have CSV files which I want to import. Unfortunately I do not know numbers of columns before(either at compile time or before opening header in CSV file and counting header columns.)

Is it possible to include utility function which will count numbers of columns in CSV header(first row)? I can get value from this function to pass to CSVReader constructor?
Best choice is, CSVReader constructor readers CSV header and find outs number of columns.

If you know the number of columns that you want to actually read then you can use the library. As stated in the documentation, the file may contain additional columns that are ignored. If you do not know the number of columns that you want to read then this is not for you.


[ Medium Prio] Pods stuck in taint toleration after node restart

In some obscure custom cases, such as single-node TrueNAS SCALE clusters, the cluster adds a taint to the node on reboot, which gets removed after all bootup procedure are finished.
This, obviously means the pods cannot be scheduled till after the taints are removed.
However the pods don't automatically get recreated after the taints are removed from the node. Leading to the cnpg pods never restarting.
Dirty solution:

Recreate after 5 minutes if pods get stuck in taint-toleration state

Clean solution:

Check when there is a schedulable node available, then recreate pods

Medium prio, due to completely bricking cnpg in some cases on singlenode clusters.

Thanks for putting some time into this @armru !

Can you please test #2056 and see if it solves the issue?


Add multi-GPU support for seq2seq example

What does this PR do?
Adds multi-GPU for seq2seq example by using pmap to implement data parallel training. We used this modified example as part of our research and hope that others will find it useful as well.

Checklist

[ ] This PR fixes a minor issue (e.g.: typo or small bug) or improves the docs (you can dismiss the other
checks if that's the case).
[ ] This change is discussed in a Github issue/
discussion (please add a
link).
[ ] The documentation and docstrings adhere to the
documentation guidelines.
[ ] This change includes necessary high-coverage tests.
(No quality testing = no merge!)

Thanks for filing this PR @gmittal! To be honest, I am not sure if it is a good idea to complicate the seq2seq example further. The main thing we want to display in this example is how to implement a recurrent network, so we intentionally keep everything else as simple as possible (input pipeline, training, metrics, ...).
Also, since the dataset is so simple and training takes only a few minutes on CPU (thanks to your change!), it doesn't seem necessary to use data parallel training either.
However, I do think it is very nice that you made this example, and one thing we could do is to turn this into a HOWTO called "Data-parallel training on multiple devices". We could then show the minimal changes required to rewrite the seq2seq example, similar to our existing howto Ensembling on multiple devices.
Our HOWTO system has the ability to use side-by-side diff views very easily (see the source code ensembling.rst), so that could be quite simple to implement.
I think it could be a really great addition to our HOWTOs, since many people are interested in doing data-parallel training. Would you be interested in doing this?

That makes sense (I suspected that DP was a bit overkill for this anyways) and I'd be happy to make a HOWTO tutorial with the side-by-side diffs.

That makes sense (I suspected that DP was a bit overkill for this anyways) and I'd be happy to make a HOWTO tutorial with the side-by-side diffs.

That is really awesome! I'll create an issue and assign it to you.

Closing this since we decided it would be better to add this in a HOWTO.


How to mute pad without mute button?

On Force, when You push Mute and select PAD it will silence it, for example eilence kick, and let other sounds playing. How to do it on IAmForce2?

Did you found how? I have the same question.
Anyway you can do it in progam sound mixer, but doing by keys will be best.


Use direct Delivery

This changeset improves the performance of ProtoData-based apps (such as Validation) by switching to a direct Delivery mode in Spine's ServerEnvironment.
Previously, the dispatching of signals were done by utilizing the InboxStorage, even though ProtoData-based apps generally do not operate in muti-threaded mode. It caused some excessive I/O operations (storing, reading and deleting data from Inboxes) and thus lower performance in terms of time-per-task.
This PR updates the Delivery settings to use a direct mode and thus eliminates some I/O and reduces the execution time. The tradeoff is that the library no longer prevents any concurrent modifications of entities — which should not happen at all if ProtoData-based apps operate in a single-threaded mode.
Additionally, this PR explicitly switches off modelCompiler's validation feature for two more Gradle modules (codegen-java and cli). Previously, for some reason, validation-runtime dependency appeared on both compileClasspath and runtimeClasspath of these modules, even though it was not used in any way. Also, it caused some version conflicts down the line, as validation-runtime dependency also appeared in the corresponding pom.xmls of the published artifacts.
The version of the ProtoData artifacts is set to 0.2.7.

@dmdashenkov PTAL.


Extension engineering items

[ ] Rename to Gradle for Java
[ ] Icon
[ ] Documentation

tracked in #1021


[Event Request] Table 5767 Warehouse Activity Line - OnBeforeValidateVariantCode

Hi Team,
In table 5767 we need possibility to replace and avoid using standard code with our own. Having event with handling in the beginning of OnValidate trigger on field Variant code :

    [IntegrationEvent(false, false)]
    local procedure OnBeforeValidateVariantCode(var Rec: Record "Warehouse Activity Line"; var IsHandled: Boolean)

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Absolute path Error

I've installed the "node-red-contrib-ui-media" to display images within the dashboard, however as soon as I try add files via the "media" node I node-red crashes and I get the below error.
I've tried using the error catch node and debug node, but it still crashes, then I would need to delete the media node to get it to stop crashing.
I never had this issue running Rasbian or Ubuntu, and I am unsure how to resolve this under Windows 10.
I see the same error was reported and resolved in Version 1.1.3, (Issue #6) I'm running the version 1.2.0.
Any assistance would be greatly appreciated.
7 Jul 21:57:44 - [info] Starting flows
7 Jul 21:57:44 - [info] Started flows
8 Jul 09:58:43 - [red] Uncaught Exception:
8 Jul 09:58:43 - TypeError: path must be absolute or specify root to res.sendFile
at ServerResponse.sendFile (C:\Users\abcd\AppData\Roaming\npm\node_modules\node-red\node_modules\express\lib\response.js:425:11)
at C:\Users\abcd.node-red\node_modules\node-red-contrib-ui-media\ui_media.js:288:17
at FSReqCallback.oncomplete (fs.js:155:23)
PS C:\Windows\system32>

Same Probleme !
I tried also to downgrade to Version 1.1.3, because it was the solution fo some others, but still does not work.
Pls help!
1 Sep 16:39:49 - [red] Uncaught Exception:
1 Sep 16:39:49 - TypeError: path must be absolute or specify root to res.sendFile
    at ServerResponse.sendFile (C:\Users\p.sojer\AppData\Roaming\npm\node_modules\node-red\node_modules\express\lib\response.js:425:11)
    at C:\Users\p.sojer\.node-red\node_modules\node-red-contrib-ui-media\ui_media.js:278:17
    at FSReqCallback.oncomplete (fs.js:156:23)

I've just published version 2.0 with many improvements and (hopefully) a definitive fix for that. Could you please test it?

Well Done 👍
Works now

It's crashing for me now. After I add a file with the "media" node, and deploy, node-red crashes and I get the error above.
Node-RED version: v1.2.6
Node.js  version: v14.15.0
Windows_NT 10.0.19041 x64 LE
Loading palette nodes
+-----------------------------------------------------
| uibuilder initialised:
|   root folder: C:\Users\auraynar.node-red\uibuilder
|   version . .: 3.0.0
|   packages . : jquery,socket.io
+-----------------------------------------------------

Check in the Palate Manager if you have the Version 2.0.0

Check in the Palate Manager if you have the Version 2.0.0

1.2.0

deinstall the package with your palete manager
open your comand line tool and go to the home path (~.node-red)
run npm install<EMAIL_ADDRESS>Restart NodeRed and Check Palete Manager for Version 2.0.0

@gfcittolin please check why we cannot install the right version directly in node red
Thx


path-rewrite support

Impements #157
I've tested it on my digital garden. However, users should be warned I think.
Also, I haven't implemented dg-path. It will be resource-consuming to generate published note to the garden path with dg-path.

Hmm, I tested. it a bit, and it seems to be a bit wonky. For example, after publishing a note that had a rewrite applied, it shows up as deleted from vault in the publication center. I think it should be similar to what happens when moving a note. The new location for the note should now be under unpublished, and the old location should be under "Deleted from vault".

Although that could be confusing for users. We should perhaps show both the resolved path in the garden, and the vault path. Something like "* MyVaultPath/Note.md --> MyGardenPath/Note.md". And the note should just show up under changed, if a rewrite rule applies. I need to think about it a bit. Perhaps is time for an upgrade for the publication center view.
Do you have any thoughts on this?

Hmm, I tested. it a bit, and it seems to be a bit wonky. For example, after publishing a note that had a rewrite applied, it shows up as deleted from vault in the publication center. I think it should be similar to what happens when moving a note. The new location for the note should now be under unpublished, and the old location should be under "Deleted from vault".

Although that could be confusing for users. We should perhaps show both the resolved path in the garden, and the vault path. Something like "* MyVaultPath/Note.md --> MyGardenPath/Note.md". And the note should just show up under changed, if a rewrite rule applies. I need to think about it a bit. Perhaps is time for an upgrade for the publication center view.
Do you have any thoughts on this?

I noticed this too. However, it happens for the first time and I deleted residues manually. It doesn't happen after that. It has something to do with sha mismatch.

However, it happens for the first time and I deleted residues manually.
Ah, that explains why it disappeared with my testing as well.

I think there is an easier solution to this. We could still push the notes to the same location as before, but instead apply a dg-path to the frontmatter if a rewrite rule apply. Then people can also override the rewrite rule on single notes with that property. Then in the digital garden build we build the filetree with that info. We are already reading each file to get the permalink in the file tree. So it wouldn't add any big computation cost. Then we the "changed" part would work as expected, and we don't have to deal with the complexity of keeping track of which path to use etc.
Thoughts?

I think there is an easier solution to this. We could still push the notes to the same location as before, but instead apply a dg-path to the frontmatter if a rewrite rule apply. Then people can also override the rewrite rule on single notes with that property. Then in the digital garden build we build the filetree with that info. We are already reading each file to get the permalink in the file tree. So it wouldn't add any big computation cost. Then we the "changed" part would work as expected, and we don't have to deal with the complexity of keeping track of which path to use etc.
Thoughts?

That's a very good idea indeed! Let me implement this.

@oleeskild Implemented it with just dg-path from plugin's end and rewrote the file tree generation in the template's part.

Hello!
I tryed on my own blog, but the dg-path doesn't work at 100%. Some files work in the tree, other doesn't work
Website : https://digitalgarden-sooty.vercel.app/
repo : https://github.com/Lisandra-dev/digitalgarden/

Hello!
I tryed on my own blog, but the dg-path doesn't work at 100%. Some files work in the tree, other doesn't work
Website : https://digitalgarden-sooty.vercel.app/
repo : https://github.com/Lisandra-dev/digitalgarden/

Have you updated the template?

@Lisandra-dev I've checked it out. It seems some of these files are added later manually instead of publishing from the plugin (The plugin puts JSON in the frontmatter). However, these should work too. Some of them are not showing in the file tree because hide is set to true. For others, links are not working, because the front-matter doesn't contain a permalink. Plugin always calculates and adds the permalink.
These are the two things I've noticed not working due to misconfiguration. Is there anything else? I would like to look at them too.

I send the file using the plugin, so I don't understand why permalink and frontmatter are broken

I send the file using the plugin, so I don't understand why permalink and frontmatter are broken

That's Interesting. Which plugin version you're using? Compiled from my fork's path-rewrite branch?
@oleeskild can there be any reason the frontmatter is not JSON?

Yes, I compiled from your path-rewrite branch !

Yes, I compiled from your path-rewrite branch !

I tried to reproduce the not-JSON frontmatter issue without any success. If you can, please let us know how to reproduce it.

@oleeskild once you are satisfied with path rewrite, lets merge pinned notes and hide in graph too (pinned note and hide in graph goes hand in hand due to aesthetic reasons). We can have a very nice filetree-focused release. 😁

Good idea! I've merged them all in. About to do a release. I don't have time to write the docs for the features today. Hopefully I'll get to that tomorrow.


allow stretched grid decomposition

If https://github.com/yt-project/yt/pull/4732 goes in to yt, we can allow the chunksizes argument with stretched grids. Should just be a matter of deleting:
https://github.com/data-exp-lab/yt_xarray/blob/740e0868d33eeddcf6b2b443cbd77a97b38e985f/yt_xarray/accessor/accessor.py#L117-L120

4732 merged upstream

yt 4.4 is out! should be able to get this working now.

oops... might have to wait til yt 4.4.1... https://github.com/yt-project/yt/pull/5052


Array support

Hello Enrico,
I have used your library in my project to compile expressions. It works very well, but I ran into the limitation that arrays are not supported.
I have modified the code to support that use case.
Kind regards,
Gjalt

Hello Enrico,
Can you publish a new NuGet version? This way I can remove all dependencies from a privat MyGet package.
Thanks in advance.
Kind regards,
Gjalt

hi gjalt!
thanks for the help!
sunday when i ll have a compiler with me ;)
enrico
On January 15, 2016 9:19:20 PM CET, Gjalt Wijma<EMAIL_ADDRESS>wrote:

Hello Enrico,
Can you publish a new NuGet version? This way I can remove all
dependencies from a privat MyGet package.
Thanks in advance.
Kind regards,
Gjalt

Reply to this email directly or view it on GitHub:
https://github.com/kendarorg/ExpressionBuilder/pull/1#issuecomment-172079846

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Added version 2.1.2 on nuget.org :dancers:  :)

Thanks, it works!


SAMPLE NOT WORKING PLS FIX THANK

WHAT IS THIS BEHAVIOR

testosterone.pdf
MY *TERMS* OF *SERVICES*
PLS READ TANK

You have to install the Epic Online Services Godot plugin from the Asset Lib and then enable it in Project Settings. See this repo's Readme

sir, it is the demo which you provided

https://github.com/3ddelano/epic-online-services-godot/tree/main/sample

it was already enabled in the demo

It would work if the plugin is installed and enabled. Try to restart the Godot editor.

new error found pls fix tank

What are the exact steps you have done?
Check this steps to get the sample project running. Make sure you use Godot 4.2 too.
https://github.com/3ddelano/epic-online-services-godot?tab=readme-ov-file#how-to-run-the-sample-project

What are the exact steps you have done? Check this steps to get the sample project running
cloned repository (https://github.com/3ddelano/epic-online-services-godot/)

^^ This repository

imported sample folder in godot
installed the plugin from asset lib

^^ This plugin

^^ Clicked this button
and that error came

made everything a heading for visibility

also yes i did not forget to put these values in

Which operating system are you using?

Oh I see the issue. The sample in the main branch is updated and new functions are added which are not available in the Released version. To fix this download the sample that matches the commit of the release version. The one for the current latest release is https://github.com/3ddelano/epic-online-services-godot/archive/refs/tags/2.1.0.zip

Another way to get to the same readme (in case this is more convenient for you, @samplenotworkingplshelptank) would be to switch to that release tag then scroll down to view the README as it was at that tag/release time (see screenshot of how; or here's a direct link to tag 2.1.0's content)


Downloads site dont show real speed.

I will let this gif here. The issue get explain itself.
https://k61.kn3.net/F/6/F/4/0/8/73E.gif
(real speed is showed in the button menu)

This is not a suitable repository for such bug reports, please use Opera bug wizard


Improve sign up page

Sign up page is very simple we can make it more attractive.
I would like to work on this please assign this to me.

@Upasana1216 we already have an issue working on this #50


Content for the pattern

Summary by CodeRabbit

New Features

Updated starting page to focus on "Event Mesh for Microservices".
Enhanced documentation with detailed narratives about event mesh architecture and its benefits.
Introduced a new job for preview deployment in the documentation workflow.

Bug Fixes

Removed unnecessary attributes from documentation configuration for simplification.

Documentation

Revised titles and content across various documentation files to reflect the new focus on event mesh.
Added links to developer resources, including the git repository and additional learning materials.
Introduced new sections detailing the technology stack and architecture related to event mesh.
Expanded content on Command Query Responsibility Segregation (CQRS) and its application within the event mesh.
Removed the "Common Challenges" section to streamline content.

Starting deployment of preview ⏳...


[SPARK-20636] Add new optimization rule to transpose adjacent Window expressions.

What changes were proposed in this pull request?
Add new optimization rule to eliminate unnecessary shuffling by flipping adjacent Window expressions.
How was this patch tested?
Tested with unit tests, integration tests, and manual tests.

Can one of the admins verify this patch?

ok to test

Test build #76591 has started for PR 17899 at commit f90c857.

Test build #76591 has finished for PR 17899 at commit f90c857.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76591/
Test FAILed.

Test build #76678 has started for PR 17899 at commit 300edf0.

Test build #76678 has finished for PR 17899 at commit 300edf0.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76678/
Test FAILed.

Test build #76679 has started for PR 17899 at commit eb2def2.

Test build #76679 has finished for PR 17899 at commit eb2def2.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76679/
Test FAILed.

Test build #76680 has started for PR 17899 at commit f6a4e47.

Test build #76680 has finished for PR 17899 at commit f6a4e47.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76680/
Test FAILed.

Test build #76690 has started for PR 17899 at commit 1ab81ca.

Test build #76690 has finished for PR 17899 at commit 1ab81ca.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76690/
Test PASSed.

retest this please

Test build #76970 has started for PR 17899 at commit 1ab81ca.

Test build #76970 has finished for PR 17899 at commit 1ab81ca.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/76970/
Test PASSed.

Test build #77126 has started for PR 17899 at commit f472bfe.

Test build #77126 has finished for PR 17899 at commit f472bfe.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/77126/
Test PASSed.

@hvanhovell @gatorsmile Can you have another look at this?

Test build #78973 has started for PR 17899 at commit e2f24c2.

Test build #78973 has finished for PR 17899 at commit e2f24c2.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78973/
Test FAILed.

@ptkool Can you address the conflicts? We will review it.

Test build #83189 has started for PR 17899 at commit 54d88fa.

Test build #83189 has finished for PR 17899 at commit 54d88fa.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/83189/
Test FAILed.

Test build #83191 has started for PR 17899 at commit 82d7390.

Test build #83191 has finished for PR 17899 at commit 82d7390.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/83191/
Test FAILed.

Merged build finished. Test FAILed.

Test build #83193 has started for PR 17899 at commit f840c69.

Test build #83193 has finished for PR 17899 at commit f840c69.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/83193/
Test FAILed.

Test build #83194 has started for PR 17899 at commit e9f6928.

Test build #83194 has finished for PR 17899 at commit e9f6928.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/83194/
Test PASSed.

Merged build finished. Test PASSed.

Can one of the admins verify this patch?

Test build #95753 has finished for PR 17899 at commit 94e8115.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/95753/
Test PASSed.

Test build #95802 has started for PR 17899 at commit 4328831.

Test build #95802 has finished for PR 17899 at commit 4328831.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/95802/
Test PASSed.


Logs from target application

Currently I don't see logs from the target application in the output directory, they are useful if we want to troubleshoot why a test failed.
Is this already supported or are there any plans?

it is in the simulator log inside the output dir

The logs I see there are from the test application, for example, if you're using XCTest you'll see things like this in the logs:
--------------------------------------------------------------------------------
Tests started: 2017-08-17 16:27:07 +0000
--------------------------------------------------------------------------------
DEBUG_FLAG_TOBEREMOVED.
2017-08-17 13:29:11.339 XCTRunner[13313:2220843] Running tests...
2017-08-17 13:29:16.358 XCTRunner[13313:2220843] Continuing to run tests in the background with task ID 1
Test Suite 'Selected tests' started at 2017-08-17 13:29:17.073

But the logs from the target application are not there.
There is a difference between logs from the target application and from the test application.

hmm, interesting, it works well with unit test, but I didn't check for XCUITest. I think we need to tweak some flags in BPTestBundleConnection.m before starting the app.

@oliverhu any idea how to figure out this? If you give me some hints I can try to reverse engineer it and implement in bluepill :-)

@tanob compare https://github.com/linkedin/bluepill/blob/master/Bluepill-cli/Bluepill-cli/Bluepill/Connections/BPTestBundleConnection.m#L212 and https://github.com/linkedin/bluepill/blob/master/Bluepill-cli/Bluepill-cli/Simulator/BPSimulator.m#L297, move the logic from the latter to the former :D
Let me know if you have any more problem!

close old issues, feel free to reopen


added deprecation policy

Thank you for a pull request! Please check this document for how the Jenkins project handles pull requests


Add user commands to handler map

Description

Updates the handler commands map for commands that were implemented in #1491, #3866, and #3867.
Readiness checklist

[ ] I added/updated unit tests (and they pass).
[ ] I added/updated integration/compatibility tests (and they pass).
[ ] I added/updated comments and checked rendering.
[ ] I made spot refactorings.
[ ] I updated user documentation.
[ ] I ran task all, and it passed.
[x] I ensured that PR title is good enough for the changelog.
[x] (for maintainers only) I set Reviewers (@FerretDB/core), Milestone (Next), Labels, Project and project's Sprint fields.
[x] I marked all done items in this checklist.

Commands exist with --test-enable-new-auth flag.


Running suppress command can edit files whitespace even with no suppressions

Describe the bug
Suppress command edits the whitespace in many files listed in a sarif result (a problem on its own). Surprisingly, this even affects files with violations outside the --rules list. Looks like EOF newlines removed sometimes. There might have been an encoding change on a file too?
To Reproduce
devskim suppress --source-code  -O "" --rules DS173237
Expected behavior
Only files with DS173237 rule violations would be edited
Versions(please complete the following information):

OS: Windows 11 Enterprise 23H2 22631.4037
Devskim Version 1.0.33+9dba5c6c1f

Screenshots

Additional context
In this case I was expecting just 2 files to be edited. Instead I had to sort through my changes and these whitespace changes to git commit.

I think I've identified the issue here. If there is a file that has detected issue in the sarif but their rule ids don't match the ones selected for suppression the file wasn't being skipped, so it was just being rewritten in place. #632 adds a check for this to skip processing those files since doing so is essentially a no-op (other than possibly messing with trailing whitespace).

Thanks for the quick fix! There's probably technically 2 bugs here, unless there's magic in the code I haven't seen. The unaddressed issue is that the whitespace is changed at all for a suppression command. #632 will help with the UX when filtering specific issues. The whitespace changes could still be painful and noisy when large numbers of files are getting suppressed.

That's a fair point. I'll try to see this afternoon if I can do something about modifying whitespace when there actually is an issue detected as well. We use ReadAllLines and then glue the lines back together with Environment.NewLine, but that inserts newlines based on the OS being used so there's definitely some edge cases.

@JustinSchneiderPBI Added a second fix for the whitespace bug to the same PR.

Thank you very much!


Feature/add footer

I changed a rule in .eslintrc to disable the following error:
"Expected linebreaks to be 'LF' but found 'CRLF'"
I created the footer component
I styled the footer component

The footer is there in the mobile view. It's not removed. I just designed the viewable screen. If you scroll, you're supposed to find it.
I think it's safe to keep it, at least for all pages except for the chatroom.

I think on mobile view it's not necessary, but it's alright. Maybe it would look better at least if it could fit in one line on mobile view saying only "© 2022 Litetalk @ Chingu". Information about the chatting website and reserved rights seems redundant to me, but they do look good on the laptop view. This is a small detail anyway so I don't mind 👍


New Sorting Default Options

When leaving the app, the subreddits for which I’ve changed the default sorting methods, do not retain their changes.

Have you noticed this only happens with subreddits containing capital letters? If so, I've fixed the issue!


Service Detail Pages Content/Blocks

All three service pages have the same layout:

#2
#3 (Card Variation)
#6

This is done:https://main--takeda-ihs--hlxsites.hlx.page/service/hello-programs


Add a contact Form

The following have been added:

Input validation for email, name and message
Formpree action url

Hello @Katended   I think I stated the issue in the comment let me quote it here again ☺
You have submitted a project, that doesn't have contributions from your learning partner🥲 don't forget, this is a pair programming activity and the contribution of your partner is also required😉 this was omitted by the first reviewer but it is a requirement😉 Kindly reach out to your learning partner and work with him👍
We require you to work with your pair programming partner for this milestone. From your commit message, it's seems you haven't done that. The previous reviewer should have pointed that but probably didn't take note of it.. but this is a compulsory requirement.👍

Hello @Katended I think I stated the issue in the comment let me quote it here again ☺
You have submitted a project, that doesn't have contributions from your learning partner🥲 don't forget, this is a pair programming activity and the contribution of your partner is also required😉 this was omitted by the first reviewer but it is a requirement😉 Kindly reach out to your learning partner and work with him👍
We require you to work with your pair programming partner for this milestone. From your commit message, it's seems you haven't done that. The previous reviewer should have pointed that but probably didn't take note of it.. but this is a compulsory requirement.👍
Hope you're clear now?🤔

@Ibizugbe Ok sure thanks.

Also @Katended , I noticed I made use of the approve feature to drop this comment, probably this may have caused a bit of confusion. but I sincerely apologise as that was a mistake on my part🥲 I should have dropped a normal comment or use the comment feature. But I am you understand now👍
Thanks for understanding and Happy coding👍


Need to upgrade the model published on tfhub.dev to the newer SavedModel format

The current model published on tfhub.dev is still in the legacy hub.Modules format.
The drawback of this legacy format is there is no clear path to use such model format with Keras in a way which supports finetuning (it is possible to load it with hub.Keraslayer() but finetuning is not supported).
I hope the published model can be changed to the newer SavedModel format.

Stay tuned, we are working on TF2.0


Minimum GB requirements?

I have a VM (AWS EC2) that has 30GB storage.
In this VM, I deployed 2 stacks using dockerswarm.rocks + the pattern in this repo.
First stack only has the proxy and backend services
2nd stack has the  the proxy, backend, db, and pgadmin services.
AWS informed me that this VM has reached 25GB and looking at the 20 biggest files in my server, most of them are from docker ~1MB++
~$ sudo du -h -a /var  | sort -n -r | head -n 20
du: cannot access '/proc/...': No such file or directory
du: cannot access '/proc/...': No such file or directory
du: cannot access '/proc/...': No such file or directory
du: cannot access '/proc/...': No such file or directory
1021K	/snap/core18/1997/usr/lib/python3.6/pydoc_data
1021K	/snap/core18/1988/usr/lib/python3.6/pydoc_data
1020K	/var/lib/docker/overlay2/.../merged/venv/lib/python3.8/site-packages/gssapi/raw/ext_dce.cpython-38-x86_64-linux-gnu.so
1020K	/var/lib/docker/overlay2/.../diff/usr/local/lib/python3.8/site-packages/httptools/parser
1020K	/var/lib/docker/overlay2/.../diff/venv/lib/python3.8/site-packages/gssapi/raw/ext_dce.cpython-38-x86_64-linux-gnu.so
1020K	/var/lib/docker/overlay2/.../merged/usr/local/lib/python3.8/site-packages/httptools/parser
1020K	/var/lib/docker/overlay2/.../merged/usr/local/lib/python3.8/site-packages/httptools/parser
1020K	/usr/share/perl/5.30.0/unicore/Name.pl
1020K	/usr/share/locale/it
1020K	/usr/sbin/tcpdump
1020K	/usr/lib/modules/5.4.0-1038-aws/kernel/arch/x86/kvm/kvm.ko
1016K	/var/lib/docker/overlay2/.../diff/var/lib
1016K	/var/lib/docker/overlay2/.../diff/venv
1016K	/var/lib/docker/overlay2/.../merged/usr/local/include
1016K	/var/lib/docker/overlay2/.../merged/usr/local/include
1016K	/var/lib/docker/overlay2/.../diff/usr/local/include
1016K	/usr/share/locale/sv
1012K	/var/lib/docker/overlay2/.../merged/venv/lib/python3.8/site-packages/werkzeug
1012K	/var/lib/docker/overlay2/.../diff/usr/share/locale/de
1012K	/var/lib/docker/overlay2/.../merged/usr/local/include/python3.8

I have already run docker system prune -a which freed up 175 MB.

Is 30 GB expected to be too small for the 2 stacks?

False alarm. My VM is only using 5GB storage.

Thanks for reporting back and closing the issue 👍

Sorry for the long delay! 🙈  I wanted to personally address each issue/PR and they piled up through time, but now I'm checking each one in order.


RAK and OG Miner issues (Fleet on Balena)

Deployed the RAK firmware (v2) and OG Miner firmware.
Both are failing in Balena. The diagnostic container faults and causes the pkt-forwarder and helium-miner to stop.
diagnostics  2022-03-12 01:27:47,597 - [INFO] - hw_diag.utilities.quectel - (quectel.py).ensure_quectel_health -- /opt/python-dependencies/hw_diag/utilities/quectel.py:(404) - skipping quectel firmware update because UPDATE_QUECTEL_EG25G_MODEM is not set
diagnostics  INFO:hw_diag.utilities.quectel:skipping quectel firmware update because UPDATE_QUECTEL_EG25G_MODEM is not set
diagnostics  INFO:apscheduler.executors.default:Job "get_app..run_quectel_health_task (trigger: interval[1:00:00], next run at: 2022-03-12 02:25:44 UTC)" executed successfully
helium-miner  Diagnostics container not ready. Going to sleep.
Restarting service 'packet-forwarder sha256:8fb6af555f8cec6f080be3d6d15ce487305078a957e2851460b8c23c2f91d100'
packet-forwarder  Traceback (most recent call last):
packet-forwarder    File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main
packet-forwarder      return _run_code(code, main_globals, None,
packet-forwarder    File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code
packet-forwarder      exec(code, run_globals)
packet-forwarder    File "/opt/pktfwd/main.py", line 13, in
packet-forwarder      VARIANT = os.environ['VARIANT']
packet-forwarder    File "/usr/local/lib/python3.10/os.py", line 679, in getitem
packet-forwarder      raise KeyError(key) from None
packet-forwarder  KeyError: 'VARIANT'
Service exited 'packet-forwarder sha256:8fb6af555f8cec6f080be3d6d15ce487305078a957e2851460b8c23c2f91d100'
gateway-config  Diagnostics container not ready. Going to sleep.
helium-miner  Diagnostics container not ready. Going to sleep.
helium-miner  Diagnostics container not ready. Going to sleep.
diagnostics  [2022-03-12 01:28:44 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:501)
diagnostics  [2022-03-12 01:28:44 +0000] [501] [INFO] Worker exiting (pid: 501)
diagnostics  [2022-03-12 01:28:44 +0000] [507] [INFO] Booting worker with pid: 507
diagnostics  2022-03-12 01:28:46,018 - [WARNING] - hm_pyhelper.miner_param - (miner_param.py).run_gateway_mfr -- /opt/python-dependencies/hm_pyhelper/miner_param.py:(37) - Variant None is not recognized. Omitting --path arg.
diagnostics  WARNING:hm_pyhelper.miner_param:Variant None is not recognized.  For more details on migrating to a PEP 495-compliant implementation, see https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html
diagnostics    return tzinfo.localize(dt)
diagnostics  DEBUG:apscheduler.scheduler:Next wakeup is due at 2022-03-12 01:30:47.251052+00:00 (in 119.999167 seconds)
diagnostics  DEBUG:apscheduler.scheduler:Looking for jobs to run
diagnostics  DEBUG:apscheduler.scheduler:Next wakeup is due at 2022-03-12 01:30:47.251052+00:00 (in 119.976883 seconds)
diagnostics  DEBUG:flask_caching.backends.simplecache:get key 'view//json' -> miss
diagnostics  INFO:root:Running periodic hardware diagnostics
diagnostics  2022-03-12 01:28:47,288 - [WARNING] - hw_diag.utilities.hardware - (hardware.py).detect_ecc -- /opt/python-dependencies/hw_diag/utilities/hardware.py:(194) - Unable to lookup storage bus from hardware definitions, falling back to the default. Exception message: Variant None is not recognized.
diagnostics  WARNING:hw_diag.utilities.hardware:Unable to lookup storage bus from hardware definitions, falling back to the default. Exception message: Variant None is not recognized.
diagnostics  2022-03-12 01:28:47,324 - [WARNING] - hm_pyhelper.miner_param - (miner_param.py).run_gateway_mfr -- /opt/python-dependencies/hm_pyhelper/miner_param.py:(37) - Variant None is not recognized. Omitting --path arg.
diagnostics  WARNING:hm_pyhelper.miner_param:Variant None is not recognized. Omitting --path arg.
diagnostics  2022-03-12 01:28:47,423 - [INFO] - hm_pyhelper.miner_param - (miner_param.py).run_gateway_mfr -- /opt/python-dependencies/hm_pyhelper/miner_param.py:(47) - gateway_mfr response stdout: b'{\n  "key": "XXXXXXX",\n  "name": "jolly-XXXX-XXXX",\n  "slot": 0\n}\n'
diagnostics  INFO:hm_pyhelper.miner_param:gateway_mfr response stdout: b'{\n  "key": "XXXXXXX",\n  "name": "jolly-XXXX-XXXX",\n  "slot": 0\n}\n'
diagnostics  2022-03-12 01:28:47,424 - [INFO] - hm_pyhelper.miner_param - (miner_param.py).run_gateway_mfr -- /opt/python-dependencies/hm_pyhelper/miner_param.py:(49) - gateway_mfr response stderr: b''
diagnostics  INFO:hm_pyhelper.miner_param:gateway_mfr response stderr: b''
helium-miner  Diagnostics container not ready. Going to sleep.
Restarting service 'packet-forwarder sha256:8fb6af555f8cec6f080be3d6d15ce487305078a957e2851460b8c23c2f91d100'
packet-forwarder  Traceback (most recent call last):
packet-forwarder    File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main
packet-forwarder      return _run_code(code, main_globals, None,
packet-forwarder    File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code
packet-forwarder      exec(code, run_globals)
packet-forwarder    File "/opt/pktfwd/main.py", line 13, in
packet-forwarder      VARIANT = os.environ['VARIANT']
packet-forwarder    File "/usr/local/lib/python3.10/os.py", line 679, in getitem
packet-forwarder      raise KeyError(key) from None
packet-forwarder  KeyError: 'VARIANT'
Service exited 'packet-forwarder sha256:8fb6af555f8cec6f080be3d6d15ce487305078a957e2851460b8c23c2f91d100'
helium-miner  Diagnostics container not ready. Going to sleep.
helium-miner  Diagnostics container not ready. Going to sleep.

You need to define VARIANT as en environment variable matching what's in hardware_definitions.py, e.g. COMP-RAKHM.


2.0.8: AutoSlugField: Given slug in object creation gets ignored

When creating a TitleSlugDescriptionModel with title and slug, preference if given to the autoslug generation from title, and any given slug is ignored.
In 2.0.7 calling  Model.objects.create(slug='key', title='title') would create an object with slug = 'key'
Since 2.0.8 the object gets created with slug='title'.
As this change is not documented in the changelog I assume it is unwanted.

Yeah seems to be an unwanted side effect.
Could you please make a PR with a test case for this ? to avoid and catch future regressions.

Reason for the change is here I think: https://github.com/django-extensions/django-extensions/commit/3eaa21c694a45e8d5f427ccb1c124dfaa4b67b1c#diff-d3086342951f62e09f62d2c4189097d2R146
In quickly looking at the problem I don't have a solution right away.
That case is about when a models gets copied then the slug should be recalculated. Where as here when the slug is explicitly given it should be used as is...
Not sure if we can solve this without basicaly changing the code back again to what it was and saying that in the case of copying the model one should not only clear pk but also the slug field manually...

Here's the thing...  The change made was to return to how things were working prior to 2.0.7 .  2.0.7 is the only version where the example given actually works.  That "feature" was an unintentional breaking change.
If I were to be designing the field from scratch, then I think only setting the slug if it's currently blank would be a good idea.  However, changing the existing functionality will likely break some people's code who aren't expecting this change (it would break my code, just as it did in 2.0.7).  I'd suggest adding another argument to AutoSlugField to explicitly turn on the option to only generate the slug when it's blank.  Or, I'd provide instructions in the docs on how to add that functionality by extending the AutoSlugField.  Or, perhaps provide an already extended AutoSlugField with a different name.  Or increment the version to indicate a breaking change (which would be simpler if this wasn't a collection of so many extensions).
Here's an example implementation:
class MostlyAutoSlugField(AutoSlugField):
    def create_slug(self, model_instance, add):
        if getattr(model_instance, self.attname):
            # force not overwriting slug if already set
            add = False
        return super(MostlyAutoSlugField, self).create_slug(model_instance, add)

I'm good with the solution to add a option for this behavior.
That also gives us the ability to decide if we want change/switch the behavior at some later release (and document the path towards that).

How about overwrite_on_create=True on the field?  There's already an overwrite option that forces an overwrite on every save and this would essentially force an overwrite only on the initial save/create.

@tisdall please double check the commit at b25c0d4f09ff56a52008e6a44f5d21539658bdf5 :-)
If that works for everybody I can make a new release.
Also if somebody has some time to create a PR to update the docs for AutoSlugField that would be much appreciated.

I probably would have done:
if (slug and not self.overwrite) or not (self.overwrite_on_add and add):
    # Existing slug and not configured to overwrite - Short-circuit
    # here to prevent slug generation when not required.
    return slug

But, yes it looks fine.  I also appreciate it not breaking anything, thank you!


feat(cli): Add --filename-template and --max-length options

Introduces two new CLI arguments to allow fine-grained control over how output file paths are generated:
--filename-template: Specify a template string using variables like {domain}, {hash}, {ext} to define a custom directory structure and file naming scheme
--max-length: Set a maximum character limit for generated file paths, intelligently truncating if needed while preserving essential components
Includes documentation and tests.
Closes #754

That will be great. I am looking forward for this feature to make it to this incredible tool.

Please also improve test coverage.


Test Explorer doesn't discover any tests

I just installed the version 0.3.0 Jest Test Explorer and the version 2.18.0 Test Explorer UI extensions but the Test Explorer UI does not discover any tests. Also I don't get any error log. I have the following project setup:

package.json (showing only jest stuff):

{
    "name": "foo",
    "description": "bar",
    "version": "0.0.1",
    "scripts": {
        "test": "jest --runInBand"
    },
    "devDependencies": {
        "jest": "=23.2.0",
        "jest-cli": "=23.2.0",
        "jest-junit": "=3.7.0"
    }
}

jest.config.js at project root level:

module.exports = {
    verbose: true,
    collectCoverage: false,
    testRegex: "\./test/.*_test\.js$",
    testPathIgnorePatterns: [ "/node_modules/" ],
    moduleFileExtensions: [
      "js",
      "json"
    ]
}

jest at ./node_modules/.bin/jest
.vscode/launch.json settings:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Jest: All",
            "type": "node",
            "request": "launch",
            "program": "${workspaceFolder}/node_modules/.bin/jest",
            "args": ["--runInBand"],
            "console": "integratedTerminal",
            "internalConsoleOptions": "neverOpen",
            "windows": {
              "program": "${workspaceFolder}/node_modules/jest/bin/jest",
            }
        },
        {
            "name": "Jest: Current File",
            "type": "node",
            "request": "launch",
            "program": "${workspaceFolder}/node_modules/.bin/jest",
            "args": ["--runInBand", "${fileBasenameNoExtension}"],
            "console": "integratedTerminal",
            "internalConsoleOptions": "neverOpen",
            "windows": {
              "program": "${workspaceFolder}/node_modules/jest/bin/jest",
            }
        }
    ]
}

tests folder at ./test with test files named *_test.js in subfolders thereof

Doing npm run test in a terminal works fine, i.e. runs all my tests. Ditto when doing RUN Jest: All or pressing F5 in VSCode.

One real quick thing that sticks out is the version of Jest.  A quick test would be to see if you bump to the latest version whether that makes any difference.  I'm not sure it will make a difference though - finding the tests doesn't use Jest itself...
If you set the jestTestExplorer.logfile setting to a valid text file, you should see any errors in the log.  Getting no errors may indicate that it is not finding the Jest config or something.

Thanks for the quick reply! I upgraded jest to 25.3.0 and that unexpectedly did the trick... hm. Now, I'm having a different issue: When running all tests some fail (although they do not when running them via npm) and when I re-run the failed tests separately they pass. Might be due to my code and tests being heavily asynchronous... Bus as I said, that's a different issue so I close this one.

Well, I'm not advocating that a newer version of Jest is the solution to your problem.  But thank you for identifying that.  Its a bit of a head-scratcher why that would make a difference.
One other thing regarding why some of your tests fail when running multiple at once may be because the test settings that are passed to the test runner may be different to what is passed at runtime.  Although what you have posted above is fairly simple.
Oh, I just noticed that you pass the --runInBand option in your package.json.  That runs the tests serially, rather than in parallel.  This extension doesn't look at the scripts in package.json.  If your tests require that flag, then that is likely to be the problem.  You might be able to specify it in the jest.config.js file, perhaps maxConcurrency will do what you want.

I am noticing the same issue with Jest Test Explorer 0.3.3 and Jest 24.8.0. I tried debugging vscode-jest-test-adapter and found that micromatch isn't matching 'c:/path/to/file.test.ts' against the pattern 'C:/path/to/**/*.test.ts', despite the fact that DOS/Windows drive letters are case insensitive (i.e. c: and C: are synonymous):

It looks like you might want to try passing { nocase: process.platform === 'win32' } to mm.any to avoid the case sensitivity issue on Windows.

Thanks @rbuckton.  I've taken your advice and included the nocase flag and added some unit tests (not testing all permutations, but can be expanded).  Open a ticket if 0.3.4 doesn't fix the issue for you.
Also, did you download the source to debug, or use the source maps in the extension?  Just interested.


Ability to select, move, copy and paste voxelobject voxels and areas

There are many cool and handy tools when creating voxel objects (I like them all — add, sub, swap, fill, pick; individual, area, extrude etc).
But it seems I really miss an ability to select some area with voxels and then move the whole area on x/y/z.
As well as copy the area and then paste it somewhere.
Being able to select individual voxels (not the whole areas) would be great as well.
I believe this would save a lot of time.

Thanks, glad to hear that, and I also agree I had actually wanted to implement something like this for the rework, but it proved to be more tedious that I had hoped for. I'll definitely revisit the idea though 👍


Support the [http] table

I think adding first class support for the [http] table from Cargo configuration could be helpful for cargo plugins that make network calls and want to respect the Cargo HTTP config. For example this issue in cargo-vet.
I could probably take a shot at opening a PR

I'm happy to accept a PR to implement this.


chore: /lib in German - full update

Weekly translation flow
Powered by Globalization Workstream

Closed by mistake. Reopen requested in Discord but also recording in Git :-)


Add toggle button similar to your zzo hugo theme to

It would be great to utilise all the space on the screen for documentation. your zzo theme has good toggle button option or feature to disable and utilise the space, if possible add similar options for this theme too.

I made it.
Just set the param like this
params.toml
...
enableTocSwitch = true

I made it.
Just set the param like this
params.toml
...
enableTocSwitch = true

@zzossig I did not find any difference after following your instructions above for toggle switch. I was talking about similar to "whats on this page" toggle button for Zdoc theme

Did you update the theme latest version?
You should see an arrow icon next to the ‘what’s on this page’

Yes I have updated the theme to latest version . This is how it shows up. Can you please provide your demo please.

Can I see your repository?
You can see the example here https://zzodocs.netlify.com/docs/gettingstarted/quickstart/

I guess it has something to with my repo. I have copied my docs into your zzodocs repo and it seems to work as attached in the screenshot below. Thank you. I will update further once I do clean and new setup. Thank you once again for your time
regards

Ok, tell me if something went wrong.

Its very hard to decide between zzo and zdoc

It's simple. zzo made for blog and zdoc made for documentation😂

It's simple. zzo made for blog and zdoc made for documentation

My requirement is like combination of both. I like blogging part from zzo and documentation part from zdoc :-) .  Anyway great work with both of them.


Bug related to isort:skip usage followed by a comment block

There is a strange bug with isort happening during a very specific type of use case, steps to reproduce:

An import at the top of a module is separated from the rest of the module, and an # isort: skip is used to ignore grouping on it.
A comment block follows this ignored import.
An import is introduced, specifically with a from keyword
Another import in the same group follows.

Example:
from top_level_ignored import config  # isort:skip
####################################
# COMMENT BLOCK SEPARATING THESE   #
####################################
from ast import excepthandler
import logging

The case above yields the following isort error:
 from top_level_ignored import config  # isort:skip
+
 ####################################
 # COMMENT BLOCK SEPARATING THESE   #
 ####################################

When you add the extra line, however, isort still errors asking for another new line. And it just keeps going.
This is strangely idiosyncratic because:

If the comment block is not there, it functions properly.
If an import is introduced without from (import ast), it functions properly.
If there isn't another following import in the same group, it functions properly.

Thanks for reporting! This is fixed in release 5.1.2
~Timothy


2.1.2: Replicators do not share a ConnectionPool

Replicators do not release resources when they are finished. As such for long-running applications, the replicators end up filling memory and causing an application crash.
We declare the replicator

private Replicator remote;

Initialize the replicator

Endpoint targetEndpoint = new URLEndpoint(new URI(getRemoteURL()));
ReplicatorConfiguration replConfig = new ReplicatorConfiguration(database, targetEndpoint);
replConfig.setReplicatorType(ReplicatorConfiguration.ReplicatorType.PUSH_AND_PULL);
replConfig.setAuthenticator(new BasicAuthenticator(getUsername(), getPassword()));
replConfig.setContinuous(false);
remote = new Replicator(replConfig);
remote.start();

For the test case we run the following code every 5 seconds:

remote.stop();
remote.start();

After waiting for a while the following is the thread pool state for the application:

2019-03-30 11:27:51.474 6252-6360/pos D/DeviceManagement: Thread (59):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.475 6252-6360/pos D/DeviceManagement: Thread (60):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.475 6252-6360/pos D/DeviceManagement: Thread (61):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.475 6252-6360/pos D/DeviceManagement: Thread (62):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.476 6252-6360/pos D/DeviceManagement: Thread (63):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.476 6252-6360/pos D/DeviceManagement: Thread (64):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.476 6252-6360/pos D/DeviceManagement: Thread (65):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.477 6252-6360/pos D/DeviceManagement: Thread (66):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.477 6252-6360/pos D/DeviceManagement: Thread (67):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.477 6252-6360/pos D/DeviceManagement: Thread (68):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.477 6252-6360/pos D/DeviceManagement: Thread (69):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.478 6252-6360/pos D/DeviceManagement: Thread (70):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.478 6252-6360/pos D/DeviceManagement: Thread (71):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.478 6252-6360/pos D/DeviceManagement: Thread (72):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.478 6252-6360/pos D/DeviceManagement: Thread (73):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.479 6252-6360/pos D/DeviceManagement: Thread (74):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.479 6252-6360/pos D/DeviceManagement: Thread (75):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.479 6252-6360/pos D/DeviceManagement: Thread (76):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.479 6252-6360/pos D/DeviceManagement: Thread (77):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.480 6252-6360/pos D/DeviceManagement: Thread (78):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.480 6252-6360/pos D/DeviceManagement: Thread (79):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.480 6252-6360/pos D/DeviceManagement: Thread (80):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.480 6252-6360/pos D/DeviceManagement: Thread (81):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.481 6252-6360/pos D/DeviceManagement: Thread (82):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.481 6252-6360/pos D/DeviceManagement: Thread (83):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.481 6252-6360/pos D/DeviceManagement: Thread (84):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.482 6252-6360/pos D/DeviceManagement: Thread (85):Thread[OkHttp Dispatcher,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.482 6252-6360/pos D/DeviceManagement: Thread (86):Thread[OkHttp ConnectionPool,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.482 6252-6360/pos D/DeviceManagement: Thread (87):Thread[OkHttp Dispatcher,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.482 6252-6360/pos D/DeviceManagement: Thread (88):Thread[OkHttp Dispatcher,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.483 6252-6360/pos D/DeviceManagement: Thread (89):Thread[OkHttp Dispatcher,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.483 6252-6360/pos D/DeviceManagement: Thread (90):Thread[OkHttp Dispatcher,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.483 6252-6360/pos D/DeviceManagement: Thread (91):Thread[AsyncTask #13,5,main]:state:TIMED_WAITING
2019-03-30 11:27:51.483 6252-6360/pos D/DeviceManagement: Thread (92):Thread[OkHttp Dispatcher,4,main]:state:TIMED_WAITING
2019-03-30 11:27:51.484 6252-6360/pos D/DeviceManagement: Thread pool size:92

Every replicator start() seems to create a new OkHttp Client/Connection Pool.
Please see for usage guidelines: https://square.github.io/okhttp/3.x/okhttp/okhttp3/OkHttpClient.html

I've reproduced this problem.  Looking into it now.

This is, indeed, a something that needs to be fixed.  I have a patch that I will put into the master branch, shortly.
On the other hand it looks to me as if it is pretty easy to avoid the problem.  Although Replicators are, indeed, creating a new ConnectionPool for each new Replicator (not start, exactly), that ConnectionPool thread only sticks around for 5 minutes.
As a work-around, turn on continuous replication, if that is what you mean to do.  If you don't want continuous replication, one-shots every couple of minutes will generate only a couple extra threads.

Feh.  You are correct.  Each call to Replicator.start().

PR is here: https://github.com/couchbase/couchbase-lite-java/pull/105

fixed in https://github.com/couchbase/couchbase-lite-java/pull/105


[upstream-update] dexonsmith in an upstream commit realized he missed an

iterator/pointer comparison issue that yields undefined behavior. This updates
Swift for the landing of this change in swift-llvm/stable.
I am going to cherry-pick the given change into swift-llvm/stable since there is no
reason not to do this now and it will prevent more of these conversions from
creeping into the code base.
We really want to avoid as much undefined behavior as we possibly can.

@swift-ci Please smoke test

Why was this UB?

See llvm r252694.


Feature Request: HPKP

HPKP headers prevents MITM. Great to have it... may be by default. Those headers can be computed automatically from certificates keys. More details here: https://developer.mozilla.org/en-US/docs/Web/Security/Public_Key_Pinning

Hello @nudzo,
I believe that the user should decide if he/she wants to use HPKP.
You can add them if you want over header https://caddyserver.com/docs/header

@elcore, that's clear, but it's far more comfortable, when server itself computes all that hashes for you and you don't have to search how to assemble those headers. Of course on|off switch in config would be great.

@nudzo OK -- you got me :smile:

I hear ya, I've been thinking on this for a while. The problem is that Caddy is in the business of not DoS'ing your site. :wink:

Of course on|off switch in config would be great.

Turning off HPKP has severe ramifications. I'm too nervous to approach HPKP at this time. There are too many variables.
For now, you can use headers to get a good grade on securityheaders.io.

Considering that Chrome removed HPKP I know requesting support now may be declined, but not everyone has to like what Chrome does. I just hope Mozilla does not follow the same road. With features like must-staple they also use stuff, Chrome does not, so it is not that a sign.
Please reconsider this feature. I think you have now more experience, and it is not that hard from a theoretical perspective.
The problem for server admin is the automatic re-keying (I think Caddy does, does not it?), which needs a new HPKP header for a new key. Especially this header must be deployed, before!
But theoretically that is possible. You just need timing and automation. (And that's what you have in Caddy, so IMHO this feature is suited very well!) See https://raw.githubusercontent.com/rugk/ACME_LE_HPKP_Theory/master/screenshot.png for how I'd propose it.
Alternatively, you can of course always pin the root, which moves the trust from thousands of CAs to a single one (and maybe a backup one to be sure). That is even quite simple and not so risky that it could even be a simple opt-in on Caddy.


TOC should be shown on non-post pages, too

Checklist

[X] I have read and accepted the contributing guidelines.

Is your feature request related to a problem? Please describe
The TOC is shown on posts. The TOC is not shown on non-posts.
Example:

Page as "layout: default": https://koppor.github.io/chirpy-toc-demo/test/ - source: https://github.com/koppor/chirpy-toc-demo/blob/main/_tabs/test.md

Page as blog post: https://koppor.github.io/chirpy-toc-demo/test/ - source: https://github.com/koppor/chirpy-toc-demo/blob/main/_posts/2024-10-28-test.md

Source repository: https://github.com/koppor/chirpy-toc-demo

Describe the solution you'd like
TOC should be shown on non-posts, too.
Describe alternatives you've considered
No response
Additional context
No response

Workaround:

Use _posts
Add to _tags the pages one wants to have rendered with the same name as the post would generate
Change permalink of posts to :title/
At collections: set output: false for tabs

Result for out page:

Hi @koppor, thank you for your suggestion. we understand the reason behind your request, but due to we don't plan to mix up the layouts of pages and posts, so we won't be considering the implementation of this feature.


Update lock params

@pat The sidekiq params need an update to work with newer versions of sidekiq.

Thanks for the fix @lunaru - I'm just wondering if there's a way we can support old and new syntax? Is it possible to detect the version of Sidekiq and then send through the appropriate settings?

@pat It would be a bit ugly to have the lock vs unique check in the code itself, but here's a thought: It looks like unique was changed to lock in sidekiq-unique-jobs after version 6.x (btw, sidekiq-unique-jobs is actually an implicit requirement of this gem!). What do you think about adding this as a requirement in the gemspec and bumping the major version number as part of this PR?
That way ts-sidekiq-delta can move forward with healthy code with a dependency split by major version increment, which is standard practice in open source anyway.

@pat I've updated this PR based on my proposed solution for this so that users of this gem can select the right version for them based on gem versioning, which is standard practice.
Let me know what you think.

@pat pinging again to see if we can get this going

Thanks @lunaru - I hadn't forgotten, but probably won't have time today. Hopefully later this week I'll get this merged in and a new gem released. 🤞

Just pushed 0.3.0 :) Thanks for the patch!


Chart width in UITableViewCell

Hi,
I'm using PNLineChart to show a chart within a UITableViewCell. Everything works as expected, however I'm having hard time trying to make the chart take all the space available. For some reason, the width of the chart is smaller than the width of the screen.
Here is how I initialize the chart and add it to the content view of the cell:
self.markChart = [[PNLineChart alloc] initWithFrame:CGRectMake(5, 5, [UIScreen mainScreen].bounds.size.width-10, 195)];
self.markChart.chartMargin = 10;

Is there anything wrong in the way I use the PNLineChart ? What may be the problem ? Looks like a bug to me.
Thanks

I've got the same problem, did you find any solution ?

+1

@PasqualePuzio How did you created the TableViewCell ? Are you using .xib and autolayout ?

I'm not using .xib or autolayout. I instantiated the chart as explained in
the tutorial and added it to the my UITableViewCell content view.
On Mon, Sep 28, 2015 at 5:00 AM, XiaoLiuAccenture<EMAIL_ADDRESS>wrote:

@PasqualePuzio https://github.com/PasqualePuzio How did you created the
TableViewCell ? Are you using .xib and autolayout ?
—
Reply to this email directly or view it on GitHub
https://github.com/kevinzhow/PNChart/issues/222#issuecomment-143627435.

--
Pasquale Puzio
PhD Student at Seclud IT & Eurecom
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>Skype: paky88fg
Phone Number +33 (0)<IP_ADDRESS>.42 (France)

did you ever get this fixed?


Show Client::join error on join failure

@elsirion Thanks for the help! I've addressed these issues in #44.


a question about H3.6M dataset

@una-dinosauria  hi,thank you for your appreciate work. when I read your code I encounter a puzzle:
in your cod you give part ske struct of H3.6M dataset
H36M_NAMES = ['']*32
H36M_NAMES[0]  = 'Hip'
H36M_NAMES[1]  = 'RHip'
H36M_NAMES[2]  = 'RKnee'
H36M_NAMES[3]  = 'RFoot'
H36M_NAMES[6]  = 'LHip'
H36M_NAMES[7]  = 'LKnee'
H36M_NAMES[8]  = 'LFoot'
H36M_NAMES[12] = 'Spine'
H36M_NAMES[13] = 'Thorax'
H36M_NAMES[14] = 'Neck/Nose'
H36M_NAMES[15] = 'Head'
H36M_NAMES[17] = 'LShoulder'
H36M_NAMES[18] = 'LElbow'
H36M_NAMES[19] = 'LWrist'
H36M_NAMES[25] = 'RShoulder'
H36M_NAMES[26] = 'RElbow'
H36M_NAMES[27] = 'RWrist'

what i wonder is what is the full ske struct of H3.6M，Ｉ surf the web and have no idea. I would be very appreciate if you can give me some clue.

Hi @andyqian2015
The skeleton structure of human3.6M is burried in the matlab code that was released with the dataset --somewhere in the xml that they parse when you load the database.
I couldn't find the script that we used to port this structure out of the matlab code, but I did some hacking around with the viz.py to show a proof of concept of how you can reverse engineer it.
Copy this code at the top of viz.py
**"""Functions to visualize human poses"""

import matplotlib.pyplot as plt
import data_utils
import numpy as np
import h5py
import os
from mpl_toolkits.mplot3d import Axes3D

def issue30():

  # Load some 3d poses
  with h5py.File("../data/h36m/S1/MyPoses/3D_positions/Directions 1.h5") as h5f:
    poses3d = h5f["3D_positions"][:]

  d, n = poses3d.shape

  pose3d = poses3d[:,0]

  fig = plt.figure()
  ax = fig.add_subplot(111, projection='3d')

  show3Dpose( pose3d, ax )
  plt.show()

def show3Dpose(channels, ax, lcolor="#3498db", rcolor="#e74c3c", add_labels=False): # blue, orange
  """
  Visualize a 3d skeleton

  Args
    channels: 96x1 vector. The pose to plot.
    ax: matplotlib 3d axis to draw on
    lcolor: color for left part of the body
    rcolor: color for right part of the body
    add_labels: whether to add coordinate labels
  Returns
    Nothing. Draws on ax.
  """

  H36M_NAMES = ['']*32
  H36M_NAMES[0]  = 'Hip'
  H36M_NAMES[1]  = 'RHip'
  H36M_NAMES[2]  = 'RKnee'
  H36M_NAMES[3]  = 'RFoot'
  H36M_NAMES[4]  = 'RFootTip'
  H36M_NAMES[6]  = 'LHip'
  H36M_NAMES[7]  = 'LKnee'
  H36M_NAMES[8]  = 'LFoot'
  H36M_NAMES[12] = 'Spine'
  H36M_NAMES[13] = 'Thorax'
  H36M_NAMES[14] = 'Neck/Nose'
  H36M_NAMES[15] = 'Head'
  H36M_NAMES[17] = 'LShoulder'
  H36M_NAMES[18] = 'LElbow'
  H36M_NAMES[19] = 'LWrist'
  H36M_NAMES[25] = 'RShoulder'
  H36M_NAMES[26] = 'RElbow'
  H36M_NAMES[27] = 'RWrist'

  assert channels.size == len(data_utils.H36M_NAMES)*3, "channels should have 96 entries, it has %d instead" % channels.size
  vals = np.reshape( channels, (len(data_utils.H36M_NAMES), -1) )

  I   = np.array([1,2,3,4,1,7,8,1, 13,14,15,14,18,19,14,26,27])-1 # start points
  J   = np.array([2,3,4,5,7,8,9,13,14,15,16,18,19,20,26,27,28])-1 # end points
  LR  = np.array([1,1,1,1,0,0,0,0, 0, 0, 0, 0, 0, 0, 1, 1, 1], dtype=bool)

  # Make connection matrix
  for i in np.arange( len(I) ):
    x, y, z = [np.array( [vals[I[i], j], vals[J[i], j]] ) for j in range(3)]
    ax.plot(x, y, z, lw=2, c=lcolor if LR[i] else rcolor)
    ax.text(x[1], y[1], z[1], H36M_NAMES[J[i]] )

  # RADIUS = 750 # space around the subject
  RADIUS = 750 # space around the subject
  xroot, yroot, zroot = vals[0,0], vals[0,1], vals[0,2]
  ax.set_xlim3d([-RADIUS+xroot, RADIUS+xroot])
  ax.set_zlim3d([-RADIUS+zroot, RADIUS+zroot])
  ax.set_ylim3d([-RADIUS+yroot, RADIUS+yroot])

  if add_labels:
    ax.set_xlabel("x")
    ax.set_ylabel("y")
    ax.set_zlabel("z")

  # Get rid of the ticks and tick labels
  ax.set_xticks([])
  ax.set_yticks([])
  ax.set_zticks([])

  ax.get_xaxis().set_ticklabels([])
  ax.get_yaxis().set_ticklabels([])
  ax.set_zticklabels([])
  ax.set_aspect('equal')

  # Get rid of the panes (actually, make them white)
  white = (1.0, 1.0, 1.0, 0.0)
  ax.w_xaxis.set_pane_color(white)
  ax.w_yaxis.set_pane_color(white)
  # Keep z pane

  # Get rid of the lines in 3d
  ax.w_xaxis.line.set_color(white)
  ax.w_yaxis.line.set_color(white)
  ax.w_zaxis.line.set_color(white)**

Since the joints that are missing are tips of the current skeleton, you simply have to add their names to the H36M_NAMES array (e.g., I've added   H36M_NAMES[4]  = 'RFootTip').
You also have to add the parent-child relation to the I and J arrays (I've added 4-5). If you run the code as is, you should see a picture like this:

The rest of the joints shouldn't be hard to figure out.
Hope that helps!

@una-dinosauria thank for your reply, I want to march the Human3.6M dataset with other ske detect alogrithm . so I want  to know exact the exactly joints of Human3.6M .but when I get the dataset, how can I check out what the joint is ? for example,the joints of RFootTip you give in the code, how can I check out the data is RFootTip ? this is what puzzle me.thanks for replying me again.

Oh I don't think that is possible. To the best of my understanding, people can put markers wherever they want, so there isn't necessarily a set of joints that everyone uses.
E.g., some people might track the feet or not; some people may track thumbs and other may not, o there isn't an easy mapping that you can check.
The best you can do is plot them, and manually look at the correspondence between both systems.


forkJoin should emit empty array or object given empty array or object as input

I'm reopening https://github.com/ReactiveX/rxjs/issues/2816 because the response wasn't satisfactory.
RxJS version: 6.5.2
Code to reproduce:
forkJoin([]).pipe(
  tap(values => console.log(values)),
).subscribe()

Expected behavior:
Console logs []
Actual behavior:
Nothing is logged.
Additional information:
Compare the behavior of Promise.all:
Promise.all([]).then(values => console.log(values)) // logs []

This behavior is important for reasoning inductively and for composability. For example, say I have a list of search terms to expand to search results and then I want to concatenate all the results. The natural way to write this is:
forkJoin(searchTerms.map(term => getSearchResults(term))).pipe(
  map(allResults => allResults.flat()),
)

You would expect an empty list of search terms to produce an empty list of results, however with current forkJoin behavior you need to handle that with a special case:
forkJoin(searchTerms.map(term => getSearchResults(term))).pipe(
  map(allResults => allResults.flat()),
  defaultIfEmpty(new Array<SearchResult>()),
)

I believe that in every use case where the length of the input to forkJoin is unknown at compile time, it's simpler for the consuming code if forkJoin returns empty output on empty input, so the consuming code doesn't need to treat empty input as a special case; it can iterate over the output value the same way regardless. This is an example of the null object pattern, where for example it's better for an operation which produces a list to produce an empty list in case there is no output rather than a null value which must be handled specially.
In the original issue https://github.com/ReactiveX/rxjs/issues/2816 it was argued that "Forkjoin doesn't consider any other case except all sources emits value, so empty array is also short-curcuit to completion immediately." However when there are no sources, it is logically true that "every source emits a value", and it is not true that "some source doesn't emit a value" (see the behavior of Array.every and Array.some for example), so one would therefore expect forkJoin to emit a value.
This reasoning also applies to forkJoin({}), which should emit an empty object {}.

Yeah, this is a recurring problem for us when using combineLatest. We've implemented our own wrapper function.
For details on our use case see:
https://stackblitz.com/edit/rxjs-playground-royl-vxadk4?file=index.ts

zip needs the same consideration, too.

@cartant I'm looking at combineLatest and zip for #5066
Has this new behavior been validated? So I know if I can make those changes too


Document how web-apps should be configured

The only example of a web-app that requires configuration is mapr: https://github.com/ome/omero-mapr/blob/0.2.3/.omeroci/app-config
But the configuration file /opt/omero/web/config/10-mapr.omero is ignored because the config files are only loaded on startup, and the OMERO.web Docker container is already running.

Do you know of a mechanism that would allow what's attempted here?

You'd need to install the app and the config before starting the container. In practice that probably means building the container in docker-compose (run the app-config and install scripts at build time). Conveniently that  could also deal with https://github.com/openmicroscopy/omero-test-infra/issues/29

With the current setup, probably the only way to make that work would be to either have the equivalent of app-config in the app's Dockerfile or to have a whole infra directory:
# docker-compose.yml
build: ../.omeroci/infra-image

(if the latter will even work)

I briefly tried that last week, and it turned out to be more complicated since you effectively need to run all the app stages during build, which means rearchitecting this repo. A separate infra-image dir would work but means duplicating the code used in the existing setup stages.


delete endpoint does not work

I am trying to unit-test the RequestsLibrary for Robotframework. Unfortunately, the delete test fails.
I can reproduce it with Firefox ReST Client:
DELETE http://httpbin.org/delete
request body:
foo=bar
--> result:

400 Bad Request

Method Not Implemented
Invalid method in request

What goes wrong here?
Best regards,
Dietrich

Sorry for the bug. I recently moved httpbin to heroku without realizing they proxy non-cname domain requests through  Varinish.
So, if you use http://httpbin.herokuapp.com and https://httpbin.herokuapp.com, you'll be hitting the app directly, and everything will be working as expected. ;)

Keeping this open to remind me to mention this in the docs, direct, or move back to epio ;)


feat(scripts/publish-chart): change dependency crds chart version when generating release chart

The publish-helm-chart.sh script updates the crds subchart version, but doesn't update the version on the core chart's dependency list. This adds a yq command to update that version.

bors try

bors merge


With default values remove buttons are missing

Hello,
i have problem with remove buttons with default values. When i create Multiplier with default values, remove buttons are missing...
When i add new container (inputs) with add button and redraw it with ajax all remove buttons are at the form.
I am not sure, but i think it could be a bug.

The problem is in last version...

Thank you for report! Can you try dev?

Its working 👍 Thank you :-)


Long click action for chips

It's a common task to make a chip that when long clicked do a secondary action so why not introduce a onLongClick parameter for material Chips which implicitly use the combined clickable modifier.

Are you interested in submitting a PR?

What is?

It's a good feature request.  I'm just checking if you are asking for it to be implemented, or if you are interested in contributing it by submitting a PR.

I just wanted to recommend a feature, unfortunately I don't have enough time to contribute

@yschimke  Do we also want to inclide onDoubleClick??
Just to be clear we will now use combinedClickable for all of these

hey @Kpeved, do you have any thoughts on what would the best approach to implement this?

Checking whether it's possible to have a workaround for a current implementation. If not - we might consider a new api for Chips. ( in M3 and possibly in M2.5)
I think the same problem might exist for other components - such as Button

To summarize my findings - it's not possible to add now another clickable outside of the component ( eg extend Chip or Button externally and add other callbacks like LongClick) - for that we have to rewrite the component itself ( by using combinedClickable or other modifiers) .
This not only applies to Wear Compose and Horologist, but to the core Compose components (phone/desktop) as well.
The only way to achieve this now will be to copy existing implementations and rewrite clickable handling there

Do we want to do that to support LongClick? Or could this be added in Wear Compose without changing the API, just modifiers? I'm assuming not.

Theoretically we can add them in Wear Compose, but that's not a quick solution.

@Kpeved would this be possible by wrapping the Wear Compose button with a simple Box, that has the clickable, but sharing the interactionSource?
If so, we could put that in Horologist and supporting the combinedClickable properties as params.

@yschimke I implemented your idea, but instead of wrapping the Wear Compose button with a Box, I did the exact opposite. Here is my final solution:
@OptIn(ExperimentalFoundationApi::class)
@Composable
internal fun MultiClickButton(
	onClick: () -> Unit,
	modifier: Modifier = Modifier,
	onLongClick: (() -> Unit)? = null,
	onDoubleClick: (() -> Unit)? = null,
	enabled: Boolean = true,
	colors: ButtonColors = ButtonDefaults.primaryButtonColors(),
	interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
	shape: Shape = CircleShape,
	border: ButtonBorder = ButtonDefaults.buttonBorder(),
	content: @Composable BoxScope.() -> Unit,
) {
	Button(
		onClick = {},
		enabled = enabled,
		colors = colors,
		interactionSource = interactionSource,
		shape = shape,
		border = border,
	) {
		Box(
			modifier = modifier
				.combinedClickable(
					interactionSource = interactionSource,
					indication = null,		//We already get the visual indication by using the standard Material Button
					enabled = enabled,
					onClick = onClick,
					onLongClick = onLongClick,
					onDoubleClick = onDoubleClick,
				),
			contentAlignment = Alignment.Center,
			content = content,
		)
	}
}

I also tried having the Box be the outer composable and the Button as content in the BoxScope, but that resulted in the same behaviour I described in #1979. Maybe something similar to this solution could be added in Horologist?

Nice
Is the touch target of the box the same size as
the button.

Yes, it only receives touch inputs that are within the circle covered by the button

Thanks for proposal @IsakTheHacker. That's great suggestion, it works!
But be aware that it handles clicks only for a section which your content takes. For Button it's ok, because we don't have any paddings in it. But we have inner paddings in some components - like Chip or Card. So you have to override it internally - removing it from Chip or Card, and adding it to the inner Box .
Something like this
...
    Chip(
        onClick = {},
        contentPadding = PaddingValues(0.dp),
        enabled = enabled,
        interactionSource = interactionSource,
        shape = shape,
    ) {
        Box(
            modifier = modifier
                .fillMaxSize()
                .combinedClickable(
                    interactionSource = interactionSource,
                    indication = null,        //We already get the visual indication by using the standard Material Button
                    enabled = enabled,
                    onClick = onClick,
                    onLongClick = onLongClick,
                    onDoubleClick = onDoubleClick,
                )
                .padding(ChipDefaults.ContentPadding) // padding should go after specified clickable

A real bummer is that in androidx.compose Chip has a hardcoded padding, which can't be overriden :/ . But in wear components we have this option :)

There is some fillMaxSize when we try with Chip, but an example with Button and Card https://github.com/google/horologist/pull/2021#pullrequestreview-1859494461

Fixed

I think we will remove doubleClick, just leaving the additional longClick.  Mainly for unclear a11y reasons.


[Bug] Screen freezes after delete targeted token

Steps to reproduce:

Target some token

Delete targeted token

Stacktrace:
Graphics.ts:934 Uncaught (in promise) TypeError: Cannot read property 'clear' of null
at r.clear (Graphics.ts:934)
at controlTokenEventHandler (target-enhancements.js:436)
r.clear @ Graphics.ts:934
controlTokenEventHandler @ target-enhancements.js:436
async function (async)
controlTokenEventHandler @ target-enhancements.js:408
_call @ foundry.js:2496
callAll @ foundry.js:2456
release @ foundry.js:11616
_onDelete @ foundry.js:11545
_onDelete @ foundry.js:45027
_onDeleteEmbeddedEntity @ foundry.js:34169
(anonymous) @ foundry.js:30073
(anonymous) @ target-enhancements.js:25
Array.partition @ target-enhancements.js:24
_handleDeleteEmbeddedEntity @ foundry.js:30071
_handleDeleteEmbeddedEntity @ foundry.js:34220
deleteEmbeddedEntity @ foundry.js:30048
async function (async)
deleteEmbeddedEntity @ foundry.js:30038
deleteMany @ foundry.js:12419
_onDeleteKey @ foundry.js:12735
_onDelete @ foundry.js:3233
_handleKeys @ foundry.js:2807
_onKeyDown @ foundry.js:2760
DisplayObject.ts:673 Uncaught TypeError: Cannot read property 'scale' of null
at e.get (DisplayObject.ts:673)
at t.fn (TargetIndicator.js:233)
at t.emit (TickerListener.ts:109)
at e.update (Ticker.ts:505)
at _tick (Ticker.ts:189)

Wrote a quick PR to fix this issue. Not the most familiar with Foundry/PixiJS, so it might not be the most optimal solution. https://github.com/eadorin/target-enhancements/pull/28


[Code smell]: _extract_reasoning_step should have returned current_reasoning as an Optional[...] instead of a List[...]

Bug Description
Seeing this line:
https://github.com/run-llama/llama_index/blob/e3a169b93b9e6014cb2c5bd731fc1f7467e3312e/llama_index/agent/react/step.py#L235
I thought 1) _extract_reasoning_step was capable of extracting multiple reasoning steps from the output: ChatResponse, and 2) we are ruthlessly discarding everything before that. It's only after I read through _extract_reasoning_step did I realize that current_reasoning: List[...] is either an empty list or a singleton list.
I kinda consider this a code smell. _extract_reasoning_step should have returned an current_reasoning: Optional[...] instead.
...u nless there are some portability considerations?
Version
e3a169b
Steps to Reproduce
Not a bug.
Relevant Logs/Tracbacks
No response

@dosu-bot , I think it's more readable to declare that list in outer functions. It's kinda too much responsibility to have one function declare a container that to be used in later stages as well as constructing its initial step.
On the other hand, if _extract_reasoning_step had been named _prepare_current_reasoning_container, I wouldn't have complained.


Module 'scrapy_selenium' doesn't define any object named 'SeleniumDownloadHandler'

In the docs you mention
# You need also to change the default download handlers, like so:
DOWNLOAD_HANDLERS = {
    "http": "scrapy_selenium.SeleniumDownloadHandler",
    "https": "scrapy_selenium.SeleniumDownloadHandler",
}

but in this plugin there is no such SeleniumDownloadHandler.

Probably you forgot to update the docs. Also tried
DOWNLOAD_HANDLERS = {
        "http": "scrapy_headless.HeadlessDownloadHandler",
        "https": "scrapy_headless.HeadlessDownloadHandler",
}

It still fails
Traceback (most recent call last):
  File "venv/scrapex/src/scrapy-selenium/scrapy_headless/downloader.py", line 82, in get_driver
    driver = self._data.driver
AttributeError: '_thread._local' object has no attribute 'driver'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "venv/scrapex/lib/python3.6/site-packages/twisted/internet/defer.py", line 1416, in _inlineCallbacks
    result = result.throwExceptionIntoGenerator(g)
  File "venv/scrapex/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
    return g.throw(self.type, self.value, self.tb)
  File "venv/scrapex/lib/python3.6/site-packages/scrapy/core/downloader/middleware.py", line 44, in process_request
    defer.returnValue((yield download_func(request=request, spider=spider)))
  File "venv/scrapex/lib/python3.6/site-packages/twisted/python/threadpool.py", line 250, in inContext
    result = inContext.theWork()
  File "venv/scrapex/lib/python3.6/site-packages/twisted/python/threadpool.py", line 266, in <lambda>
    inContext.theWork = lambda: context.call(ctx, func, *args, **kw)
  File "venv/scrapex/lib/python3.6/site-packages/twisted/python/context.py", line 122, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "venv/scrapex/lib/python3.6/site-packages/twisted/python/context.py", line 85, in callWithContext
    return func(*args,**kw)
  File "venv/scrapex/src/scrapy-selenium/scrapy_headless/downloader.py", line 65, in process_request
    driver = self.get_driver(spider)
  File "venv/scrapex/src/scrapy-selenium/scrapy_headless/downloader.py", line 85, in get_driver
    command_executor=self.grid_url, desired_capabilities=self.capabilities
  File "venv/scrapex/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "venv/scrapex/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "venv/scrapex/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "venv/scrapex/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 208, in check_response
    raise exception_class(value)
selenium.common.exceptions.WebDriverException: Message: <!DOCTYPE html>
...

Probably you forgot to update the docs. Also tried
DOWNLOAD_HANDLERS = {
        "http": "scrapy_headless.HeadlessDownloadHandler",
        "https": "scrapy_headless.HeadlessDownloadHandler",
}

It still fails
Traceback (most recent call last):
  File "venv/scrapex/src/scrapy-selenium/scrapy_headless/downloader.py", line 82, in get_driver
    driver = self._data.driver
AttributeError: '_thread._local' object has no attribute 'driver'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "venv/scrapex/lib/python3.6/site-packages/twisted/internet/defer.py", line 1416, in _inlineCallbacks
    result = result.throwExceptionIntoGenerator(g)
  File "venv/scrapex/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
    return g.throw(self.type, self.value, self.tb)
  File "venv/scrapex/lib/python3.6/site-packages/scrapy/core/downloader/middleware.py", line 44, in process_request
    defer.returnValue((yield download_func(request=request, spider=spider)))
  File "venv/scrapex/lib/python3.6/site-packages/twisted/python/threadpool.py", line 250, in inContext
    result = inContext.theWork()
  File "venv/scrapex/lib/python3.6/site-packages/twisted/python/threadpool.py", line 266, in <lambda>
    inContext.theWork = lambda: context.call(ctx, func, *args, **kw)
  File "venv/scrapex/lib/python3.6/site-packages/twisted/python/context.py", line 122, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "venv/scrapex/lib/python3.6/site-packages/twisted/python/context.py", line 85, in callWithContext
    return func(*args,**kw)
  File "venv/scrapex/src/scrapy-selenium/scrapy_headless/downloader.py", line 65, in process_request
    driver = self.get_driver(spider)
  File "venv/scrapex/src/scrapy-selenium/scrapy_headless/downloader.py", line 85, in get_driver
    command_executor=self.grid_url, desired_capabilities=self.capabilities
  File "venv/scrapex/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "venv/scrapex/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "venv/scrapex/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "venv/scrapex/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 208, in check_response
    raise exception_class(value)
selenium.common.exceptions.WebDriverException: Message: <!DOCTYPE html>
...

Did you found a solution for this?

@tumregels Did you found a solution for this?

@Mikhail010 tried my best but failed

excuse me =-= I don't want to use splash,and I found this plugin,how does it work well? because I see the latest commit is one years ago, a little afraid to use……

@tumregels I got it working with your suggestion and setting everything inside the spider class like custom settings.
class MySpider(scrapy.Spider):
name = 'myspider'
custom_settings = {
    'SELENIUM_GRID_URL': 'http://<IP_ADDRESS>:4444/wd/hub',  # Example for local grid with docker-compose
    'SELENIUM_NODES': 1,  # Number of nodes(browsers) you are running on your grid
    'SELENIUM_CAPABILITIES': {
        "browserName": "chrome",
        "version": "",
        "platform": "ANY",
        "acceptInsecureCerts": True
    },
    'DOWNLOAD_HANDLERS': {
        "http": "scrapy_headless.HeadlessDownloadHandler",
        "https": "scrapy_headless.HeadlessDownloadHandler",
    },
    'SELENIUM_PROXY': 'http://docker.for.mac.host.internal:24000'
}

...

@CatSirSir I struggled to get it working but after that it has being working fine. Take into account that I started using it last week so I cannot give you a broad opinion. If I were you I would give it a try, I also use splash but It is giving me troubles with sites with angular and other with the ability to detect headless browsers.

@Mikhail010 hi , i fix it by this pr