Fix VoxelGI static light pairing

Fixes https://github.com/godotengine/godot/issues/78373
Probably fixes https://github.com/godotengine/godot/issues/78569. There is no test project, but considering the issue description I would say it is a duplicate or very similar to the first issue, just using different workarounds.

I tweaked the MRP project from the first issue a bit to make things easier to see (disabling default environment light, ramping up indirect light, changing static light type and position etc.).
Updated Test Project:
voxelgi-static-lights-bug.zip
Looks like when using lights with static bake mode, the lights are sometimes unpaired from the VoxelGI and not properly paired back. As VoxeGI does support static lights and in optimal conditions they do currently stay paired, I think the way static light are not sometimes paired back is the bug behind those issues. Note that when using VoxelGI and static lights you still need to re-bake VoxelGI if you move static lights around if you want the indirect lighting to stay accurate.
It looks like the issue is with pairing code that unpairs static lights from VoxelGI when updated but doesn't pair them back. Static lights are paired when created, but then lose their pairing after certain node tree transform or visibility change. How and when this happens also depends on node tree structure, which makes this especially nasty. By this I mean the behavior is different depending if the light is "above" or "below" the VoxelGI in the tree sibling node hierarchy. This seems to be caused by transform or visibility notification ordering during scene tree changes, which can invalidate pairing. So depending on order, if the light pairing is invalidated first and then VoxelGI things work out because updating VoxelGI pairs the lights again later. But if it happens the other way around the light stays unpaired until VoxelGI is updated (by baking, toggling its visibility etc.)
We can dig more into the test project now. When you open it without this PR, the VoxelGI indirect light is probably broken for the static spotlight. You can fix this by toggling VoxelGI node visibility off and on again or baking it again, this is where that static light gets paired again to the VoxelGI. Navigating to another scene tab and back also breaks this pairing again (because transform/visibility notification and update unpairs the light). NOTE: You need to save, close and then reopen the scene tab after re-ordering nodes to see the effects. If you try to play the project indirect light is also broken (this is what the workarounds in both projects attempted to fix). For example the first project has this:
await get_tree().create_timer(0.05).timeout
to set the data again and the second issue uses toggling visibility to force the light pairing. Interestingly 0.05 timeout value doesn't work for me, I have to use at least 0.1 timeout value on my machine.
You can experiment by reordering the SpotLight3D so that it is lower than VoxelGI in the sibling hierarchy. Simply doing this fixes the play mode indirect lighting for me (without this PR). Also note that changing order also changes the behavior when navigating to another scene tab and back, but you have to close the tab completely after re-ordering the node.
After this PR, static lights stay paired to VoxelGI even when the tree gets modified (by transform or visibility updates). Still, I'm not all that familiar with the pairing code so feedback is appreciated.
There are also somewhat similar possible pairing/update issues with LightmapGI (like https://github.com/godotengine/godot/issues/77356 and https://github.com/godotengine/godot/issues/77167 and good discussion in https://github.com/godotengine/godot/pull/77089).

As far as I can tell with this change static lights and dynamic lights will behave the same with VoxelGI. Or am I missing something? It seems that VoxelGI does not distinguish between light types.

I have been wondering the same thing and I suspect this fix might not be fully correct. The current Voxel/static light pairing behavior is currently so weird it's hard to say should be the correct result. For example, currently in master VoxelGI does seem to pair the static light in the same way as dynamic light when created, but then loses this pairing very easily. This PR keeps the pairing "alive", but I wonder how the pairing should work with baked voxel static lights in the first place.
I have been playing with the MRP and only once I managed to see what I think could be the correct behavior from a baked, static voxel light. That is, when a baked static light is moved the baked light "stays behind", still illuminating the meshes in the old position until re-baked. However, I haven't managed to repeat this behavior.
I'll try to play with this some more and see if I can figure out anything useful before throwing in the towel.

I have been wondering the same thing and I suspect this fix might not be fully correct. The current Voxel/static light pairing behavior is currently so weird it's hard to say should be the correct result. For example, currently in master VoxelGI does seem to pair the static light in the same way as dynamic light when created, but then loses this pairing very easily. This PR keeps the pairing "alive", but I wonder how the pairing should work with baked voxel static lights in the first place.
I have been playing with the MRP and only once I managed to see what I think could be the correct behavior from a baked, static voxel light. That is, when a baked static light is moved the baked light "stays behind", still illuminating the meshes in the old position until re-baked. However, I haven't managed to repeat this behavior.
I'll try to play with this some more and see if I can figure out anything useful before throwing in the towel.

I have a feeling that static lights maybe should just never pair with VoxelGI. And they should only be baked (which I think is handled completely on the scene side of things)

I have been doing some experiments and reading through the code and I'm strongly starting to feel like this is a correct fix after all.
First, simply not pairing static light doesn't work because all lights are needed when the voxel code does its light calculation and it gets them from paired lights. Also, ignore my previous comment about once seeing a static light "staying behind" when moving it, that effect happens when you accidentally move the VoxelGI node instead of the light node. Duh. I can repeat it now and its not related to this.
It looks like VoxelGI does not process any light nodes at all during the bake, only geometry and their materials. It also supports dynamic geometry and handles it differently from static geometry. But it looks like VoxelGI treats all light nodes as dynamic and there doesn't really seem to be any code for handling them differently. The documentation states otherwise, but maybe it was a planned feature that was never added:
https://docs.godotengine.org/en/latest/classes/class_voxelgi.html in bake():

Note: GeometryInstance3Ds and Light3Ds must be fully ready before bake is called. If you are procedurally creating those and some meshes or lights are missing from your baked VoxelGI, use call_deferred("bake") instead of calling bake directly.

Interestingly, that paragraph was explicitly added in https://github.com/godotengine/godot/pull/58291, but it looks like the baking of static Light3Ds's was never implemented. I also believed that static lights needed to be baked when using VoxelGI, but it looks like that is not needed. Ping at @Calinou if you have any extra info about this.
I went through most of the VoxelGI related code in voxel_gi.cpp, voxelizer.cpp, renderer_scene_cull.cpp, gi.cpp and related shader files and I think this is the correct way to pair both static and dynamic lights. I also made several PR's fixing some related issues that I noticed during this adventure. In the best case, this PR is correct and fixes static lights. In the worst case, this PR simply makes broken VoxelGI static lights into functional dynamic lights. Other than fixing the issues, there doesn't seem to be any performance or any other impact. Still, having another person check my conclusion would be useful in case I missed something obvious.

Interestingly, that paragraph was explicitly added in https://github.com/godotengine/godot/pull/58291, but it looks like the baking of static Light3Ds's was never implemented. I also believed that static lights needed to be baked when using VoxelGI, but it looks like that is not needed. Ping at @Calinou if you have any extra info about this.

I distinctly remember being able to bake lights in VoxelGI, but maybe this with SDFGI (where baking occurs when the camera moves enough).

Thanks!

Cherry-picked for 4.1.3.


Error when HDR is turned off, log depth is disabled, and shadows are enabled

In this sandcastle uncheck HDR and you get an error
TypeError: Cannot read property 'execute' of undefined
    at executeCommand (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:239389:64)
    at executeCommands (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:239756:21)
    at executeCommandsInViewport (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:240177:13)
    at Scene.updateAndExecuteCommands (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:239970:17)
    at render (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:240633:19)
    at tryAndCatchError (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:240652:17)
    at Scene.render (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:240727:17)
    at CesiumWidget.render (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:253442:29)
    at render (https://sandcastle.cesium.com/CesiumUnminified/Cesium.js:252779:36)

The error does not happen if HDR is disabled initially, or even when HDR is disabled initially, then enabled, then disabled. The error is related to derived commands and has existed as far back as HDR was introduced in 1.52.

Came up again in https://github.com/CesiumGS/cesium/issues/9031

Here is an updated Sandcastle that works in 1.124. The bug is still there.


postinstall flowchart.js

postinstall flowchart.js to src/vendors so flowchart.js is in package.json and package-lock.json
closes #21

Hey Williams, thanks for the PR. I’m away on vacation without a laptop and
trying to disconnect. Will take a look when I get back. Looks good to me
though, just don’t want to rush a merge while not in work mode and thinking
through things.
On Wed, Jul 24, 2019 at 6:29 AM William Rusnack<EMAIL_ADDRESS>wrote:

postinstall flowchart.js to src/vendors so flowchart.js is in package.json
and package-lock.json
#21 https://github.com/francoislaberge/diagrams/issues/21
You can view, comment on, or merge this pull request online at:
https://github.com/francoislaberge/diagrams/pull/23
Commit Summary

postinstall flowchart.js to src/vendors so flowchart.js is in
package.json and package-lock.json

File Changes

M .gitignore
https://github.com/francoislaberge/diagrams/pull/23/files#diff-0 (1)
M package-lock.json
https://github.com/francoislaberge/diagrams/pull/23/files#diff-1
(62)
M package.json
https://github.com/francoislaberge/diagrams/pull/23/files#diff-2 (4)
A postinstall.sh
https://github.com/francoislaberge/diagrams/pull/23/files#diff-3 (3)
D src/vendors/flowchart.js
https://github.com/francoislaberge/diagrams/pull/23/files#diff-4
(1423)

Patch Links:

https://github.com/francoislaberge/diagrams/pull/23.patch
https://github.com/francoislaberge/diagrams/pull/23.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/francoislaberge/diagrams/pull/23?email_source=notifications&email_token=AAAAONPLPYBOLHBSJKSXMZDQBBKLLA5CNFSM4IGQCPRKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HBGPVXA,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAAONISQA5CZZNLJU34FLTQBBKLLANCNFSM4IGQCPRA
.

--
Francois Laberge
Applied Research at Bose
+1<PHONE_NUMBER>

Enjoy vacation. I was putting a feeler if you were ok with this method. It should probably be applied to all files in vendors.


Hyprexpo doesn't build on latest Hyprland

Yup, tracking in https://github.com/hyprwm/hyprland-plugins/issues/175.


[CONTENT] Lazy minting

This issue is for drafting content for the following:

Title: Lazy minting
Address: /how-to/lazy-minting/

@yusefnapora -- here's your replacement quest for the week 😊

I'm still in research mode for this, but I wanted to toss in a quick status update.
I've been following along with a great OpenZeppelin workshop on lazy minting techniques, and I think I get the basic premise now :)
The key to the lazy flow seems to be that the cost to mint is payed by the purchaser at the time of purchase, without the minter needing to send a transaction and pay gas first. This works by having the buyer "redeem" a signature that was created by an Ethereum private key that belongs to an authorized "minter" account defined in the contract.
Basically, instead of sending a "mint token" transaction to create a new NFT, the minter account signs a hash of the token id and gives the signature to the buyer. The buyer then puts the signature into the contract's redeem function which validates that it was produced by someone authorized to mint, then mints the NFT and assigns it to the buyer.
Anyway, I've been playing with this and trying to get something working locally. will update here with progress

Thanks for the update!

Per sync discussion — @yusefnapora will scaffold this for @johndmulhausen to build out later this week. Thanks both!

I just got this to work today, and I've started drafting a bit of the text. So far I've been working in a completely separate sandbox repo, but I'll be moving the code over to the nft-school-examples repo now that things seem to be working. I'll also open a draft PR here for the tutorial. I'm about out of gas though, so that will probably happen on Monday morning.
The WIP repo is here if anyone wants to check it out: https://github.com/yusefnapora/lazy-minting
There's no UI to speak of, just some unit tests in lazy-mint-example/test/lazy-test.js. If you want to sanity check that it works on your machine, you could cd lazy-mint-example and give it a quick npm install, and then run npx hardhat test.
@jessicaschilling / @johndmulhausen If you have any feedback on the README, lmk. It's not finished & needs some details on the signatures and so on, but we should be able to use most of it for the article, I think.


TestNG does not provide sufficient diagnostics when a test class throws an exception in instantiation

If the static initializer or constructor for a test throws an exception, all the user sees is an error message:
[testng] Cannot instantiate class com.foo.FooTest
[testng] The tests failed.
The stack trace would be helpful.  (Same problem when a @Factory method throws an exception.)

Closing this issue based on the explanation provided in https://github.com/cbeust/testng/issues/303#issuecomment-10921158


Change app icon to new rclone logo

Firstly, massive thanks for pushing things forward with this app!
Would be great if the app icon could be changed to the updated rclone logo, more details here:
https://forum.rclone.org/t/a-new-logo-for-rclone/7019
https://github.com/rclone/rclone/tree/master/graphics/logo

Good idea - will look into it. Would be nice to impose rclone-browser text on it.

What you think?

I think this is one I like

or this one with transparency

or this one...

You could maybe use one of the options which has the Rclone text in it already, and just add Browser to the bottom?
https://github.com/rclone/rclone/tree/master/graphics/logo/logo_on_light


Authorization is sent in OPTIONS of preflight request, which is probably not best practice

I have an api using fetch polyfill (through webpack) on this web platform, this is a secure api server that requires an Authorization header, and should only accept an empty options object due to formality in dealing with the web browser. Thoughts on how to remedy this?

Unfortunately, anything dealing with OPTIONS is implemented by browser's internal mechanism. Neither this polyfill nor the user can do anything from JavaScript to edit how these handlers are handled. Please see https://github.com/github/fetch#read-this-first and general documentation on CORS and how your browser handles it.

thanks for closing I couldn't find this in Github. Yes the browser sends options automatically, might be a could thing for a faq page in case others make the same erroneous assumption I did.

CORS is a big topic which we choose not to cover in the FAQ (except mentioning that cross-domain requests are sometimes tricky to achieve) because the best place to learn about CORS is a browser documentation site such as MDN. If we chose to cover all the different pitfalls of using CORS with fetch, our own README would become unwieldy and hard to maintain.


Investigate integration with Docker Engine / Desktop

As of Docker Desktop 4.12.0, the Docker Engine has been slowly replacing its internals with containerd, and now there is experimental support to use containerd snapshotters for image storage. It may be possible to hook up Docker Engine / Desktop with nix-snapshotter so we can docker run --rm ghcr.io/pdtpartners/hello.

Thanks for making this project. From my casual conversation over slack with docker team , docker desktop won't allow installing ad-hoc snapshotters on the DD VM IIRC.
In search for using a single VM for building and running containers, I've made a simple lima VM setup here that acts as a remote docker daemon and a Nix builder. I'm figuring out how to install nix-snapshotter on this now


xopen does not support .zst file compressed with Zstandard long memory mode

When compressing a file with long memory mode
zstd -T4 -9 --force --rm --exclude-compressed --no-progress --long=31 file.txt
Xopen cannot decode it
python3 -c 'import xopen; f = xopen.xopen("file.txt.zst"); f.readline()'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
zstd.ZstdError: zstd decompress error: Frame requires too much memory for decoding

zstd -vl file.txt.zst
*** Zstandard CLI (64-bit) v1.5.5, by Yann Collet ***
tmpz/ip2ip_final.rpt.zst
# Zstandard Frames: 1
DictID: 0
Window Size: 1.18 GiB<PHONE_NUMBER> B)
Compressed Size: 27.6 MiB (28914291 B)
Decompressed Size: 1.18 GiB<PHONE_NUMBER> B)
Ratio: 43.7352
Check: XXH64 d5d984dc

It seems the way to address this is here in the lower level zstandard library.

The solution is mentioned as zstdDecompressor(max_window_size=2147483648)
That is effectively a 2GiB window size, meaning every zst file opened will use 2 GiB. That is going to lead to Out-Of-Memory (OOM) issues. Especially on cluster HPC systems were memory needs to be requested beforehand.
I see you compress with the --long=31 flag. I take this means 31 bits of window size. That is quite big. I see from your zstandard CLI output that this leads to the entire file being considered into one window.
I did some research and I see that the standard limit for zstandard is 27 bits: https://github.com/facebook/zstd/blob/78f732cfdd65bccc76d7da2ae103e141e5ca5742/lib/zstd.h#L1250 .
So what we can do at xopen is override this limit with a bigger limit like you suggest. But that also is a limit, so technically it does not solve this "bug". When a file comes along with an even larger window size, that will not decompress either. Allowing unlimited windowsizes is a bad idea IMHO, so we should stick to some limit. It is much easier to stick to the library default which is 27 bits.
What is the use case for compression windows that are larger than the file itself? Who produces these files?

much better does the compression actually get when you use --long=31 instead of the default (--long=27)?

It can be substantial on multi-GB files of certain datasets.
Another alternative to an xopen parameter could be check the .zst file for the window size and "right size" Zstd's decompressor window size only when needed.

It can be substantial on multi-GB files of specific datasets.

Ok, so that means that this is a use case that is worth supporting.

Another alternative to an xopen parameter could be to check the .zst file for the window size and "right size" Zstd's decompressor window size only when needed.

I thought about this as well, but always setting the max window size is simpler and has essentially the same effect since no additional memory is used anyway for files that use a smaller window size. I think I would prefer to have some hard-coded upper limit (at least until the next user files an issue ...), so the only question would be which limit to use. Maybe $2^{31}$ is enough for now.

Oh by the way. Zstd only supports 2^31 as the maximum window size. I'm unsure if this should be set by default; wouldn't it cause every xopen to use 2GB?

Ah, then we can just use $2^{31}$.

I'm unsure if this should be set by default; wouldn't it cause every xopen to use 2GB?

We would need to set this option only in the decompressor, not in the compressor. And for the decompressor, memory usage depends on what was used when the file was compressed.
Compression with default options needs ~13 MB RAM:
$ /usr/bin/time -f '%M KiB' zstd largefile.txt
largefile.txt        : 22.17%<PHONE_NUMBER> => 432732941 bytes, largefile.txt.zst)
38272 KiB

And decompression from Python uses ~13 MB, even with max_window_size=2**31:
$ /usr/bin/time -f '%M KiB' python -c 'import zstandard'$'\n''for _ in zstandard.open("largefile.txt.zst", mode="rt", dctx=zstandard.ZstdDecompressor(max_window_size=2**31)): pass'
12928 KiB

Excellent! I see that zstandard has a WINDOWLOG_MAX constant that is 31.
I propose using that. I am glad that there is an upper limit, so my concerns about OOM don't materialize.

I made  a fix. The code change is not that big.

Thanks!

@gcflymoto It should be installable with the 2.0.1 release.


Another alternative to consider: LODE

@kurzum thanks for pointing me to https://github.com/NLP2RDF/ontologies/blob/master/publish.sh. Indeed LODE is a great documentation tool to consider. As we do not yet have a web server in place I modified the invocation so as to upload a file to the server where LODE is running, but actually for our ontology (sources at https://github.com/mobivoc/mobivoc/), LODE's documentation generated from the uploaded file is empty, and right now I do not have time for debugging.
@jerdeb @badmotor the bad thing about LODE is that it relies on the ontology to be published somewhere, or uploaded, as it fetches it using JavaScript. Whereas SpecGen generates static HTML, which, I think, would fit better into an automated workflow. (However I checked the LODE sources; it should be possible to modify them.)
Parrot seems to be more promising: it allows for file upload and gives you a static HTML, so I'll continue with that.
Of course, when using LODE or Parrot, we should first upload our files somewhere, or modify them to generate static HTML offline, as uploading lots of files there is against the netiquette.
BTW here are some reasonable ways to invoke curl with a file upload:
curl -s -i -F<EMAIL_ADDRESS>-F "lang_label=en" -F "caller=http://www.essepuntato.it/lode" http://www.essepuntato.it/store.php

will tell you the URL where to retrieve the HTML documentation.
curl -s -L -o mobivoc.lode.html -F<EMAIL_ADDRESS>-F "lang_label=en" -F "caller=http://www.essepuntato.it/lode" http://www.essepuntato.it/store.php

will download the file (but it's not really useful as it's not static).

closing; see #39


Is it possible to find a position in the editor having only an original string and the indexes of beginning and ending?

There might be a need to apply some changes from the server based on the original string and a sub string of it. There will be very useful to be able to get a position in the editor just using indexes of the original string.
For example I want to highlight a piece of code with setModelMarkers:
setModelMarkers(model: ITextModel, owner: string, markers: IMarkerData[]): void
But it requires IMarkerData items with specified start/end line/column.
Is there any way how to achieve such functionality?

You can use getPositionAt on the model object to convert an offset to a position object. See here.

@spahnke thank you very much for your help.
It works as needed.


Multiple Embed-Related Fixes

added convenience method editMessage(MessageEmbed) to Message
implemented convenience method in MessageImpl
combined setUrl into setTitle in EmbedBuilder
allow use of more TemporalAccessor by allowing a default zone
remove setVideo and setProvider
check both urls in setAuthor
no NPE for null field, and field docs have warning on limit (25)

This will be on the waiting list until we merged JavaDocs.

This will be on the waiting list until we merged JavaDocs.

No idea if this is the right place, but:

add removeField(String title)
add setFieldValue(String title, String value)
add setFieldInline(String title, boolean inline)

I made this little class because those aren't implemented:  https://hastebin.com/xitosecari.java

@Wiildanimal how would these methods behave if there are multiple fields with the same title?

@Almighty-Alpaca In my CustomEmbedBuilder I have it so that it does it for all fields with that name, but tbh that's for you guys to decide.

@jagrosh this needs to be rebased to take the new JavaDoc changes into account.
In addition it must follow the JavaDoc formatting template.

Replaced by #259


About detection training gpu num

Dear Author, I train a detection model with config "nusc_centerpoint_voxelnet_0075voxel_fix_bn_z_largekernel3d_large.py" with 8GPUs，the model performance is lower than reported.  Sorry for the late reply. I have some deadline this week.
I used 4 GPUs for training.
Would you please have a try on nusc_centerpoint_voxelnet_0075voxel_fix_bn_z_largekernel3d_tiny.py? The performance of it is more stable.
Regards,
Yukang Chen

Thanks for your reply, I will try on try on nusc_centerpoint_voxelnet_0075voxel_fix_bn_z_largekernel3d_tiny.py.  Would you like to tell me that which performance is better,  "large" v.s. “tiny” ？

Thanks very much.

Dear @yukang2017 ，I train “tiny” model with 4GPUs，the mAP result is still 59, less than reported 63.3.  Do you know what's the matter?
In addition，I download the pretrained model (63.3mAP) and testing. It seems the downloaded model structure is different from the structure in the "tiny" config.

The model and loaded state dict do not match exactly
unexpected key in source state_dict: backbone.conv1.0.conv1.conv3x3_1.weight, backbone.conv1.0.conv1.conv3x3_1.bias, backbone.conv1.0.conv2.conv3x3_1.weight, backbone.conv1.0.conv2.conv3x3_1.bias, backbone.conv1.1.conv1.conv3x3_1.weight, backbone.conv1.1.conv1.conv3x3_1.bias, backbone.conv1.1.conv2.conv3x3_1.weight, backbone.conv1.1.conv2.conv3x3_1.bias, backbone.conv2.3.conv1.weight, backbone.conv2.3.conv1.bias, backbone.conv2.3.conv2.weight, backbone.conv2.3.conv2.bias, backbone.conv2.4.conv1.weight, backbone.conv2.4.conv1.bias, backbone.conv2.4.conv2.weight, backbone.conv2.4.conv2.bias, backbone.conv3.3.conv1.weight, backbone.conv3.3.conv1.bias, backbone.conv3.3.conv2.weight, backbone.conv3.3.conv2.bias, backbone.conv3.4.conv1.weight, backbone.conv3.4.conv1.bias, backbone.conv3.4.conv2.weight, backbone.conv3.4.conv2.bias
missing keys in source state_dict: backbone.conv2.4.conv2.block.weight, backbone.conv1.1.conv2.block.position_embedding, backbone.conv3.4.conv2.block.bias, backbone.conv2.4.conv1.block.weight, backbone.conv3.4.conv1.conv3x3_1.weight, backbone.conv2.4.conv2.conv3x3_1.weight, backbone.conv3.3.conv1.conv3x3_1.weight, backbone.conv2.3.conv1.conv3x3_1.bias, backbone.conv1.1.conv1.block.position_embedding, backbone.conv3.3.conv1.block.weight, backbone.conv3.3.conv2.conv3x3_1.weight, backbone.conv3.4.conv2.conv3x3_1.bias, backbone.conv2.3.conv1.conv3x3_1.weight, backbone.conv3.4.conv1.block.bias, backbone.conv3.4.conv1.block.weight, backbone.conv2.3.conv2.conv3x3_1.bias, backbone.conv1.0.conv1.block.position_embedding, backbone.conv3.3.conv1.conv3x3_1.bias, backbone.conv2.4.conv2.block.bias, backbone.conv3.3.conv2.block.bias, backbone.conv3.4.conv1.conv3x3_1.bias, backbone.conv2.4.conv1.conv3x3_1.bias, backbone.conv3.3.conv2.conv3x3_1.bias, backbone.conv2.3.conv2.conv3x3_1.weight, backbone.conv2.3.conv2.block.weight, backbone.conv2.4.conv1.block.bias, backbone.conv1.0.conv2.block.position_embedding, backbone.conv3.4.conv2.block.weight, backbone.conv2.3.conv1.block.bias, backbone.conv2.3.conv2.block.bias, backbone.conv3.3.conv1.block.bias, backbone.conv2.4.conv1.conv3x3_1.weight, backbone.conv3.3.conv2.block.weight, backbone.conv2.4.conv2.conv3x3_1.bias, backbone.conv2.3.conv1.block.weight, backbone.conv3.4.conv2.conv3x3_1.weight
these keys have mismatched shape:
+-------------------------------------+---------------------------------+---------------------------------+
| key                                 | expected shape                  | loaded shape                    |
+-------------------------------------+---------------------------------+---------------------------------+
| backbone.conv1.0.conv1.block.weight | torch.Size([3, 3, 3, 16, 16])   | torch.Size([7, 7, 7, 16, 16])   |
| backbone.conv1.0.conv2.block.weight | torch.Size([3, 3, 3, 16, 16])   | torch.Size([7, 7, 7, 16, 16])   |
| backbone.conv1.1.conv1.block.weight | torch.Size([3, 3, 3, 16, 16])   | torch.Size([7, 7, 7, 16, 16])   |
| backbone.conv1.1.conv2.block.weight | torch.Size([3, 3, 3, 16, 16])   | torch.Size([7, 7, 7, 16, 16])   |
| backbone.conv4.3.conv1.weight       | torch.Size([128, 3, 3, 3, 128]) | torch.Size([5, 5, 5, 128, 128]) |
| backbone.conv4.3.conv2.weight       | torch.Size([128, 3, 3, 3, 128]) | torch.Size([5, 5, 5, 128, 128]) |
| backbone.conv4.4.conv1.weight       | torch.Size([128, 3, 3, 3, 128]) | torch.Size([5, 5, 5, 128, 128]) |
| backbone.conv4.4.conv2.weight       | torch.Size([128, 3, 3, 3, 128]) | torch.Size([5, 5, 5, 128, 128]) |
+-------------------------------------+---------------------------------+---------------------------------+

Hi,
For training, to reproduce, please disable the gt sampling augmentation in the last 5 epochs, this is a detailed trick, listed in the implementation details.
For testing, sorry for this misalignment, I double check the config file. There are some typos. I fixed it to be aligned with the checkpoint, please try it again.

thanks very much. I have reproduced the result


Generate CUDA kernels from kernel specification

The code generator will improve with each new kernel that it can handle; and this PR will likely be a rather long one.

I cancelled your build so that a deployment will go out. If you need the results of this test, make another commit or ask me to start another for you (scheduled after the deployment). Thanks!

This looks good. Have you tested it on the AWS instance? That will determine if your generated "num" function is equivalent to the one Anish wrote.

The tests should be fixed now :)

There are some compiler warnings; the generated code has some rough edges, but that's to be expected.
src/cuda-kernels/awkward_IndexedArray_mask.cu(15): warning: pointless comparison of unsigned integer with zero
          detected during instantiation of "void cuda_IndexedArray_mask(int8_t *, const B *, int64_t, Error *) [with B=uint32_t]"
(81): here

src/cuda-kernels/awkward_ListArray_validity.cu(24): warning: pointless comparison of unsigned integer with zero
          detected during instantiation of "void cuda_ListArray_validity(const C *, const D *, int64_t, int64_t, Error *) [with C=uint32_t, D=uint32_t]"
(80): here

src/cuda-kernels/awkward_ListOffsetArray_reduce_global_startstop_64.cu(12): warning: variable "thread_id" was declared but never referenced

src/cuda-kernels/awkward_ListOffsetArray_reduce_global_startstop_64.cu(12): warning: variable "thread_id" was declared but never referenced

src/cuda-kernels/awkward_UnionArray_fillna.cu(15): warning: pointless comparison of unsigned integer with zero
          detected during instantiation of "void cuda_UnionArray_fillna(int64_t *, const B *, int64_t, Error *) [with B=uint32_t]"
(62): here

src/cuda-kernels/awkward_UnionArray_validity.cu(22): warning: pointless comparison of unsigned integer with zero
          detected during instantiation of "void cuda_UnionArray_validity(const int8_t *, const B *, int64_t, int64_t, const int64_t *, Error *) [with B=uint32_t]"
(103): here

src/cuda-kernels/awkward_combinations.cu(12): warning: variable "thread_id" was declared but never referenced

src/cuda-kernels/awkward_combinations.cu(12): warning: variable "thread_id" was declared but never referenced

It also takes quite a bit longer to compile—an indication that there's a lot more code now.
But it all works! (On my computer and the AWS instance; I deleted everything and compiled from scratch.)

cuda-kernels-written.pdf


Create 4- Minimum Rounds to Complete All Tasks (Salah Ashraf) .java

Great job! Please add more comments to explain the code.

done


iOS 14 support

Hi there!
Can you please add support for iOS 14 ?
Regards

You have any problem with project on iOS 14? I haven't tested yet.

My bad, all works fine on iOS 14, Xcode 12 Beta 2. Thank You


findRelatedTests + coverage doesn't match findRelatedTests + collectCoverageFrom

🐛 Bug Report
As it said in docs and in this comment findRelatedTests  + coverage should be equal to findRelatedTests and collectCoverageFrom. But it's not because we concat collectCoverageFrom from config with files from findRelatedTests.

To Reproduce
Compare these two commands:
yarn jest --findRelatedTests packages/jest-snapshot/src/dedentLines.ts --coverage

yarn jest --findRelatedTests packages/jest-snapshot/src/dedentLines.ts --coverage --collectCoverageFrom packages/jest-snapshot/src/dedentLines.ts

Expected behavior
I believe that result of these commands should be equal. Maybe we should override positive paths from collectCoverageFrom but leave negative (starts with !)?

envinfo

  System:
    OS: macOS 10.15.5
    CPU: (8) x64 Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
  Binaries:
    Node: 14.0.0 - ~/.fnm/current/bin/node
    Yarn: 1.22.4 - /usr/local/bin/yarn
    npm: 6.14.4 - ~/.fnm/current/bin/npm

Seems related to #7427


Pods stuck pending/terminating with all nodes ready and no events

Summary
microk8s 1.27.8
Ubuntu 22.04.2 (3 nodes HA)
I have an active cluster that runs a workload with working services.
There are cronjobs set to run every 24h that suddenly stopped processing two days ago. I had one stuck in "pending" yesterday, I deleted it, it restarted on a different node and completed, but the one I tried to delete got stuck at "terminating". I have another job start started today on the name node, and same behavior happened, stuck in "pending", and then stuck on "terminating" when I try to delete it.
The nodes are all status "ready" with no taints or special events.
$ microk8s kubectl get nodes -w
NAME                      STATUS   ROLES    AGE    VERSION
jldocker-1   Ready    <none>   261d   v1.27.8
jldocker-2   Ready    <none>   261d   v1.27.8
jldocker-3   Ready    <none>   261d   v1.27.8

microk8s status say all nodes are online.
microk8s is running
high-availability: yes
  datastore master nodes: <IP_ADDRESS>:19001 <IP_ADDRESS>:19001 <IP_ADDRESS>:19001
  datastore standby nodes: none

Describing the pod that is now stuck terminating doesn't have much information:
$ microk8s kubectl describe pod ecr-registry-helper-28367160-t4tdl
Name:                      ecr-registry-helper-28367160-t4tdl
Namespace:                 default
Priority:                  0
Service Account:           sa-health-check
Node:                      jldocker-3
Labels:                    batch.kubernetes.io/controller-uid=0c2e1e3d-591f-45c8-a2ca-655bba6c7ce0
                           batch.kubernetes.io/job-name=ecr-registry-helper-28367160
                           controller-uid=0c2e1e3d-591f-45c8-a2ca-655bba6c7ce0
                           job-name=ecr-registry-helper-28367160
Annotations:               <none>
Status:                    Terminating (lasts 22h)
Termination Grace Period:  30s
IP:
IPs:                       <none>
Controlled By:             Job/ecr-registry-helper-28367160
Containers:
  ecr-registry-helper:
    Image:      odaniait/aws-kubectl:latest
    Port:       <none>
    Host Port:  <none>
    Command:
(omitted for brevity)
    Environment:                   <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-rb26z (ro)
Conditions:
  Type           Status
  PodScheduled   True
Volumes:
  kube-api-access-rb26z:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>

The last event from kubectl get events is from 38 days ago and unrelated.
I searched the journalctl logs and couldn't find any relevant information.
df show more than enough disk space available. htop show more than enough memory and cpu available.
What could be preventing this node from suddenly be unable to create/destroy new pods?
What Should Happen Instead?
Pods should starts/terminate normally.
Introspection Report
https://drive.google.com/file/d/1h0ZDAEY33UXB-YZSo4AQmRJ8bWH66SB_/view?usp=sharing

After letting it frozen like this for 4 days (critical services were running, just the k8s api would not respond to new pod creations). I decided to launch a microk8s stop followed by a microk8s start on this frozen node.
This kind of log got flooded on start:
Dec 12 16:26:33 jldocker-3 microk8s.daemon-kubelite[1875871]: E1212 16:26:33.347275 1875871 kubelet.go:2281] "Skipping pod synchronization" err="container runtime status check may not have completed yet"
Dec 12 16:26:33 jldocker-3 microk8s.daemon-kubelite[1875871]: E1212 16:26:33.103966 1875871 manager.go:1106] Failed to create existing container: /kubepods/besteffort/pod9347d5ce-4a03-4ca5-a6e1-c8eded4e600c/928c0a77ac5de2f1a4aa0e6efa464efd441bed52cae48d69048605151da7fdea: task 928c0a77ac5de2f1a4aa0e6efa464efd441bed52cae48d69048605151da7fdea not found: not found

Then a few minutes later some pods finally started to boot up correctly.
Then a few minutes later I got a bunch of vol_data.json missing (reported to longhorn/longhorn#4782 , not the first time I see that), and then some got stuck into terminating again.
I had to issue ANOTHER round of  microk8s stop / microk8s start, and then everything got green.
This is a real pain and absolutely not living up to my expectations of using a kubernetes cluster..

so far we narrowed down the issue to be related to dqlite.
systemctl restart snap.microk8s.daemon-k8s-dqlite.service

made all pods unstuck from pending


Update DGIdb gene link-out from gene page

With the impending switch over to the new DGIdb frontend, the existing link to the DGIdb entry for a given gene will break. Now, gene records are identified in a URL by their normalized concept ID, not their Entrez symbol, e.g. https://beta.dgidb.org/genes/hgnc:391 vs https://dgidb.org/genes/AKT1.
You could just link to the corresponding HGNC ID if you have that under the hood, but normalized genes are not guaranteed to use concept IDs from a specific namespace. It might be safest and simplest to just link to the search results for a given gene, e.g. https://beta.dgidb.org/results?searchType=gene&searchTerms=AKT1.

We do have Entrez IDs under the hood, but it looks like the entrez:<id> format does not work (at least for this Gene) so perhaps you're right that the search result link makes the most sense.


Use recived at for rewards list

@dexturr it's not called payoutTime, it's called receivedAt or whatever. In the version the validators have this is broken so currently in stagnet it will return 1/1/1970, but this was long fixed so whenever stagnet/testnet are deployed with current develop this will be reflected and GQL will return it correctly.
If you want to calculate, you can just take the end time of the epoch matching the reward and add 72h to it.
Originally posted by @ze97286 in https://github.com/vegaprotocol/token-frontend/issues/907#issuecomment-974016022

This is available on develop right now


Switch to FsHttp

I am using Http.fs atm. This has some problems on my manjaro machines with activated debugging whyever. I guess this is because of the use of Hopac?
I want therefore try out FsHttp, because I don't necessarily need the lightweight Hopac jobs for those api calls.

Done in 503fab1c78d5fa76b3f34ea516d53c63266aed69


Question: Does this package support Out of Band Pairing?

I am looking to implement OOB pairing with a BLE device. I have gone through the docs but couldn't find relevant info.

The pacakge


fix: set executable bit on brioche binary if not already set

The code changes in self_update.rs add logic to set the executable bit on the brioche binary if it's not already set. This ensures that the binary can be executed properly after a self update.
Resolve https://github.com/brioche-dev/brioche/issues/95

Sure, I’ll resolve when I come back !

I moved the code to apply the file permissions if necessary to the temporary file.


Update old MySQL packages

Closes #1355.
Summary:
Bumps versions for the mysqlclient and SQLAlchemy libraries.
Removes the mysql-connector and pymysql libraries, replacing all their usage with the MySQLdb interface.
Prerequisites:

[X] Unless it is a documentation hotfix it should be merged against the dev branch
[X] Branch is up-to-date with the branch to be merged with, i.e. dev
[X] Build is successful
[X] Code is cleaned up and formatted

did you see the comments i added to #1355 yesterday?

@melange396 the rowcount property is available in the new cursor API, so no issues there :)
As for a quick performance check, let me try:
/run performance test

Do you have any updates on performance comparison and/or compatibility with the old long INSERT INTO...UPDATE statement?


Added muted on TrayModel

Added muted Optional<Bool> property in story TrayModel.

Fixing FriendshipStatusModel in user not populated sometimes.

@sbertix I don't see any fixes for FriendshipStatusModel, did you forget to push it?

FriendshipStatusModel needs no changes.
Simply, not every endpoint returning a TrayModel populates user.friendshipStatus. The muted property on the TrayModel is broader and TrayModel-specific, possibily being used in the future for other things other than the simple given user's stories.
Right now FriendshipStatusModel.isMutingReel returns the same value as the proposed TrayModel.muted exepct TrayModel deserves a specific property as it not only represents user's stories and because FriendshipStatusModel is not populated in every endpoint returning TrayModels.


Workflow groups are not deleted during the deletion of the associated collection

Describe the bug
If you remove a collection that has workflows groups (step1, step2, step3) the collection is deleted but the associated workflows groups still exist.
To Reproduce
Steps to reproduce the behavior (DSpace 6.3 and 7.1):

Create a collection with at least 1 workflow group
Remove the collection
You will see in the DB or UI (managing groups) that the workflow group has not been removed

Expected behavior
All workflows groups (step1, step2, step3) of a collection should be deleted during the collection deletion

I can work on this. Estimate time - 4 hours.

@tdonohue
You can assign this issue to me. I can work on it.

@tdonohue
I have a doubt regarding this issue. Check you get the code my pull request #8685 reviewed?

@tdonohue
I have added the fix in PR #8688.
Please send it for approval.

Unassigned & looking for a volunteer again.  PR #8688 was unable to be moved forward... but still may be used by other developers as a potential starting point.


[spark] Refactor Spark extension API

Description
Brief description of what this PR is about
[spark] Refactor Spark extension API

Codecov Report
Base: 72.08% // Head: 74.17% // Increases project coverage by +2.08% :tada:

Coverage data is based on head (c30de76) compared to base (bb5073f).
Patch coverage: 74.14% of modified lines in pull request are covered.

:exclamation: Current head c30de76 differs from pull request most recent head 2426459. Consider uploading reports for the commit 2426459 to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #2370      +/-   ##
============================================
+ Coverage     72.08%   74.17%   +2.08%
- Complexity     5126     6827    +1701
============================================
  Files           473      675     +202
  Lines         21970    29733    +7763
  Branches       2351     3097     +746
============================================
+ Hits          15838    22055    +6217
- Misses         4925     6163    +1238
- Partials       1207     1515     +308

Impacted Files
Coverage Δ

api/src/main/java/ai/djl/modality/cv/Image.java
69.23% <ø> (-4.11%)
:arrow_down:

...rc/main/java/ai/djl/modality/cv/MultiBoxPrior.java
76.00% <ø> (ø)

...rc/main/java/ai/djl/modality/cv/output/Joints.java
71.42% <ø> (ø)

.../main/java/ai/djl/modality/cv/output/Landmark.java
100.00% <ø> (ø)

...main/java/ai/djl/modality/cv/output/Rectangle.java
72.41% <0.00%> (ø)

...i/djl/modality/cv/translator/BigGANTranslator.java
21.42% <0.00%> (-5.24%)
:arrow_down:

.../modality/cv/translator/ImageFeatureExtractor.java
0.00% <0.00%> (ø)

.../ai/djl/modality/cv/translator/YoloTranslator.java
27.77% <0.00%> (+18.95%)
:arrow_up:

...ain/java/ai/djl/modality/cv/util/NDImageUtils.java
67.10% <0.00%> (+7.89%)
:arrow_up:

api/src/main/java/ai/djl/modality/nlp/Decoder.java
63.63% <ø> (ø)

... and 624 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


update bacardi notebook with comments from the dataset contacts

Small updates concerning the explaining text and units for the plots as suggested from comments of the dataset authors

The update looks good! Thanks for adding.
We only need to find out why building the book won't work...

This was failing du to the problem solved by #45. To get it running, the current master should be merged into the PR. @JuleRadtke will you do it, or should I do that?

I can do that!


web.hostingenvironment to defaultJobTimeoutInMinutes: 360

Change
Feel free to remove this sample text

Thank you for your contribution !
Please include a summary of the change and which issue is fixed.
Please also include relevant motivation and context.
List any dependencies that are required for this change.

Type of Change
Please delete options that are not relevant.

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

Checklist

[ ] I'm sure there are no other open Pull Requests for the same update/change
[ ] My corresponding pipelines / checks run clean and green without any errors or warnings
[ ] My code follows the style guidelines of this project
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation (readme)
[ ] I did format my code

Got into the default timeout:
##[error]The job running on agent Azure Pipelines 2 ran longer than the maximum time of 120 minutes. For more information, see


[SPARK-20741][Spark Submit] Added cleanup of JARs archive generated by SparkSubmit

What changes were proposed in this pull request?
Deleted generated JARs archive after distribution to HDFS
How was this patch tested?
Please review http://spark.apache.org/contributing.html before opening a pull request.

Can one of the admins verify this patch?

That seems OK to me. It might be a good time to address similar issues elsewhere. For instance, look at Client.createConfArchive. The one place it's called, I think the file can be deleted after it's uploaded. There are a few other potential situations like this we could clean up.

I don't think this is really necessary. These files are created in Utils.getLocalDir, which on the launcher side is a temporary directory (see Utils.getOrCreateLocalRootDirsImpl). Meaning that as soon as the launcher exits, these files will be deleted.
If you really want to fix this instance, it may be better to follow Sean's suggestion and fix all instances, creating an explicit temporary directory where the files are stored. All this is going to do, though, is to delete the files earlier - they'd still be deleted when the process exits.

Actually I ran into a problem with this not getting cleaned up.
After your explanation I can understand why it wasn't deleted.
I am running spark on EMR and the easiest way to programmatically submit applications to the cluster was to create an HTTP service that accepts the application details and programmatically calls SparkSubmit.main so the process never really exits.
I managed to solve this with spark.yarn.

I just figured it would have been a better solution.

It might be a good idea to do it, but then you can't just add this one line, you have to look at all the temp files that Client.scala generates.

@liorregev if you'll take care of a couple other cases like this here, it looks OK to merge. Proactively cleaning up seems reasonable.

Test build #3751 has started for PR 17986 at commit cb03d8a.

Test build #3751 has finished for PR 17986 at commit cb03d8a.

This patch passes all tests.
This patch does not merge cleanly.
This patch adds no public classes.

Test build #3753 has started for PR 17986 at commit cb03d8a.

Test build #3753 has finished for PR 17986 at commit cb03d8a.

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

Merged to master/2.2. It's a win and on second look it wasn't obvious that there's another instance of this that can safely be cleaned up.


Sensor's not unique between devices.

I have two 8840 devices in my house, and the plugin seems to be sharing the same sensors across the two devices.  A unique name should be assigned to each device to ensure that the status is reported properly.

Can you clarify A) do you have two separate 8840s with two separate IP addresses? B) is it just the naming that's wrong?
It should create a Device for each time the integration is added. The device's identifier is unique, using the MAC address of the thermostat. The device then houses the climate and sensor entities, etc. Those entities currently use the entity's name as the unique_id property, so theoretically I guess they could overlap. Conceivably we could append the MAC address there if needed.
Let me know what you're actually seeing on your end.

@nberardi I believe this should be fixed in a555b04. I have put it into pre-release 0.2 which you can activate in HACS by enabling beta releases for the repo. If you can give this a shot while in pre-release, that would be great. Otherwise, I will go ahead and release after some more testing on my end.

Thanks I will give it a shot. I wish I could be more help, however Python isn’t a language that I have a lot of comfort In right now.
I have started to mess around in the protocol using Node. And haven’t ran into the API stability problems that you mentioned in your forum post.
Interestingly, I have found that the API does large dumps of data at times, and you really need to pay attention to the length and checksums to find all the packets sent.
Not sure if you have found the same, in your development effort.
https://github.com/nberardi/scrypted-aprilaire/blob/main/src/AprilaireClient.ts#L98

@chamberlain2007 the extra sensors are separated out as expected in my setup on .2.

Great!


Possible to wait to respond to request?

Hippolyte has worked great for testing a lot of different scenarios in our app, but there's one thing I haven't figured out how to test for, and that's behavior while a network request is in flight. For instance, I have a class that returns in flight tasks if the same file is requested again. Another class needs to handle cancellation while a request is in progress.
For other async operations that I've stubbed I'd do the following:

stub request in a pending state
perform the operation that uses the request
make checks or actions based on a pending request state
resume request stub

Hippolyte has a pause method, but from what I understand that just stops it from responding to requests temporarily.

Hi @davbeck,
Sorry that it's taken so long for me to write. If I understood the issue correctly, what you want to achieve is to "slow down" the response to a request so that you can catch it as in-flight or even fully suspend it, is that correct?

Yes


Could not pass the event SpawnEntityEvent$ChunkLoad$Impl to an Event Listener!

We love your plugin it's awesome and we use it a lot, but we found this bug and it's spamming too much and causing lag on server.
Console spam on server.  Full server log here
[14:39:19] [Server thread/WARN] [Sponge]: /* Since the event can be modified during the event's listener,
 there could be adverse side effects of the exception occuring
such that duplications or other game breaking issues could exist.
Due to the nature of the exception, this is not likely an exception
that is covered by SpongeForge or Forge itself, and therefor should
be reported to the mod/plugin author first prior to reporting to
Sponge or Forge. */
[14:39:19] [Server thread/WARN] [Sponge]: /* Owning Mod/Plugin: griefprevention

Sponge: spongeforge-1.12.2-2838-7.1.7-RC3807.jar and spongeforge-1.12.2-2825-7.1.6-RC3713.jar
Griefprevention: griefprevention-1.12.2-<IP_ADDRESS>2.jar and griefprevention-1.12.2-<IP_ADDRESS>9.jar
Thanks for all your hard work.

689 does NOT support latest SF builds. Try the following
https://www.dropbox.com/s/lihpedotgn3p8wm/griefprevention-1.12.2-<IP_ADDRESS>.jar
or build latest master.

Latest master doesn't seem to make a difference for me, having this exact issue as well.


fix a bug when unmounting component

Problem
After the component mounts the first time, the plaid script and iframe is injected into the DOM. This does not happen the second time the component mounts, but the component does not check the DOM for the existence of the Plaid object. Therefore this.state.linkLoaded remains false the component remounts.
Solution
Set linkHandler inside the global window object. And instead of checking this.state for whether or not the link is ready, simply check that window.linkHandler exists.

+1


chore(chrome-extension): Add deploy section

Type of change

[ ] 🐛 Bug fix
[ ] 🌟 New feature
[ ] 🔨 Breaking change
[x] 📖 Refactoring / dependency upgrade / documentation
[ ] other:

Packages affected

[ ] @clerk/clerk-js
[ ] @clerk/clerk-react
[ ] @clerk/nextjs
[ ] @clerk/remix
[ ] @clerk/types
[ ] @clerk/themes
[ ] @clerk/localizations
[ ] @clerk/clerk-expo
[ ] @clerk/backend
[ ] @clerk/clerk-sdk-node
[ ] @clerk/shared
[ ] @clerk/fastify
[x] @clerk/chrome-extension
[ ] gatsby-plugin-clerk
[ ] build/tooling/chore

Description

[x] npm test runs as expected.
[x] npm run build runs as expected.

Related PR: https://github.com/clerkinc/clerk-chrome-extension-starter/pull/3

This PR has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.


Window title not support UTF-8

this example in Arabic
Arabic not displaying in window title
use winit::error::EventLoopError;
use xilem::{EventLoop, WidgetView, Xilem};
use xilem::view::flex;

fn app_logic(_: &mut u32) -> impl WidgetView<u32> {
    flex(())
}

fn main() -> Result<(), EventLoopError> {
    let app = Xilem::new(0, app_logic);
    app.run_windowed(EventLoop::with_user_event(), "السلام عليكم".into()).unwrap();
    Ok(())
}

Can you confirm whether this works for you with raw winit (e.g. by editing one of their examples)?
We do not do any pre-processing of the title before providing it to winit, and so I do not think we can have caused this issue.
We can re-open if for some reason you cannot reproduce just using winit. Thank you.


Line chart line thickness when zero

Somewhat picky but on a line chart a line that reaches zero should be the same thickness the entire way across the chart regardless of the value. The line once it reaches the bottom/zero looks somewhat hidden or cut off until it goes above zero. See below:

What version are you using?

2.7.2

This was fixed in #5321 (2 years ago) and included in 2.7.3

Still having this issue in the latest version when hiding the x-y axis and legend (bottom and top line are cut off).
See the following example:
https://jsfiddle.net/abxs7fzq/
Any fix for this?

@mbont your fiddle uses Chart.js 2.3.0.

@kurkle Updated fiddle with latest Chart.js 2.9.1 version (not available on cdnjs yet)

@mbont ok, in that case the canvas edge is limiting the drawing. You need to add some padding to allow chartArea overflow:
options: {
      layout: {
      	padding: 1
      }
}

@kurkle Thanks, that works!

@kurkle Please see this https://jsfiddle.net/nishantprajapati/7hn2vcju/1/ I am able to re-produce this issue in latest release 2.9.3. Can you please help us out with a solution ? Or Let us know if it will be a part of next release.
Thank you,
Nishant Prajapati

@nishantprajapti in that fiddle, the canvas edge is limiting, so padding fixes it.
It does not seem like that is the case with your real use case though.
Did you  configure clip or is it using default? Does clip: false (per dataset) change the behavior?
Are you using any plugins?

Does clip: false (per dataset) change the behavior?
Thank you so much for the help @kurkle . It work for me but curious to know something. When i set the value to false. It work but when i gave it properties like clip: {left:2,top:0} and so on I did not notice any change. How does it property actually work ?

It looks like there is a bug, you have to define all edges for it to work: https://jsfiddle.net/zchb3L4w/

@kurkle in that what should we keep the default values for {top, left ,bottom,right} so that no new bug is encoutered and also the above issue mentioned by me is also solved.

@nishantprajapti I can't answer that based on the information provided. clip: false could work, if you are not zooming the chart.
Also I'm guessing you are using scriptable or indexable borderWidth, and that's why the default of "allow half of the border to overflow" is not working. But it could be something else.
Anyway, lets stop wasting time: if its not working how its documented, please file a new bug with a fiddle.


Add support for Type name aliasing

Adds support for aliases for types ("typename aliases"). Aliases must currently be listed before macros before the expression representing the Weld program:
type int = i32;
type pair = {i32,i32};

# Define macros here.

|v: int, p: pair| v + p.$0 + p.$1

Typename aliases can be used within other typename aliases (as long as they are defined before):
type int = i32;
type pair = {int,int};

|v: int, p: pair| v + p.$0 + p.$1

Macros can also use typename aliases:
type int = i32;

macro addOne(a) = (
  cudf[addOneUdf,int](a)
);

# Expands to |v: i64| cudf[addOneUdf,i64](v)
|v: int| addOne(v)

Currently, typename aliases are treated similarly to macros: when a program is compiled, type typenames are replaced with their true types, and the naming information is lost. This means that dumping code, logging messages, etc. will currently show the actual type rather than the typename. We hope to propagate type name information through the compiler soon.

lgtm!


Add Ruby HelloWorld

Your pull request needs further work because of the following reason(s):

Your file is not in a project folder ("Friends", "Games", "BSoD"). This may be intentional, but most likely not. If it is intentional please tag a maintainer.

Once you have resolved the issues, comment on this request to be re-judged
This is an automated response, beep boop.
if you think there is a mistake, contact a maintainer

f218e00318e066af5831177e5d8e25f7dde40987

This PR has been idle for more than 24 hours, and will now be closed. Feel free to re-open.
This is an automated response, beep boop.
if you think there is a mistake, contact a maintainer

f218e00318e066af5831177e5d8e25f7dde40987

Your pull request seems good, but must be checked by a human maintainer for the following reason(s):

An error occured while marking your code. The error should be addressed by a maintainer eventually The error is: That language is not supported!.
These submissions must be checked manually because of the potential complexity of submissions, if you've reached this point in the process you're most likely a valid submission.

Please be patient until a maintainer has time to look over your contribution.
This is an automated response, beep boop.
if you think there is a mistake, contact a maintainer

f218e00318e066af5831177e5d8e25f7dde40987


Pixi Loader stops loading when loading more than 1 mp3's on UC Browser

Expected Behavior
When loading audio files they should load on all browsers.
Current Behavior
When loading more than 1 mp3 file on UC Browser iOS causes the loader to stop loading any subsequent files. No errors are thrown and error event never happens. Same build works fine on all other browsers/device pairs.
Possible Solution
Unknown at this time
Steps to Reproduce
Load more than 1 mp3 file through pixis loader on ios UC browser
Environment

pixi.js version: 4.8.1
Browser: UC v<IP_ADDRESS>4
Device: iphone x - iOS 11.4.1

Sorry for the description, but this also appears to happen with only 1 mp3 as well

Only iOS UC browser. I can get a link that you can reproduce this on a little later tonight when I get home.
I've been debugging our code today and I dont think it's in the middleware but it's still probable. I'm having a slow time with this as I cannot find a easy way to debug uc browser on iOS.
Currently using weinre to debug and can only use console logs and no breakpoints with it.
If it helps we are using howler for our sound api.

I don't have a device to debug this on, so I won't be able to help if it doesn't reproduce elsewhere.

Im not sure why it works on all other devices/ browser combos without this fix but adding this fixed the issue for me.
	PIXI.loaders.Resource.setExtensionLoadType( 'mp3', PIXI.loaders.Resource.LOAD_TYPE.XHR );
	PIXI.loaders.Resource.setExtensionXhrType( 'mp3', PIXI.loaders.Resource.XHR_RESPONSE_TYPE.BLOB );

Can close the issue

Likely has something to do with the <audio/> element implementation on that browser?


Docker cache is not being used

As can be seen for all latest builds:  docker cache is not being reused and images are always getting rebuild. This is due to the ccache change https://github.com/apache/incubator-mxnet/pull/11151
The problem is that due to multiheaded docker build the first build does not get a tag and is considered an intermediate layer.
The --cache-from parameter in build.py restricts the cache only to tagged images and that leads to rebuilds.

I don't have permissions to add labels, but I believe that this should be tagged with the CI label.

@ThomasDelteil it is indeed related to ccache, but is a different error

@sandeep-krishnamurthy could you add label "CI", "Docker" to this?

The issue should have been fixed by https://github.com/apache/incubator-mxnet/pull/11302


Change immutable class to struct

I noticed, after looking at the implementations, some places where classes can be changed to structs, because the objects are immutable.

Can't Levenshtein::Finder be a struct too?

@r00ster91 not sure, because of @best_entry. We have to check if it is passed by reference.

Is this for performance?
If so have you benchmarked this?

Yes, this is for performance, see: https://crystal-lang.org/reference/guides/performance.html#use-structs-when-possible.

I thought it might be.  I was just hoping to verify there was a performance benefit if that is what the change is for.

Yes, please provide benchmarks. Group is kind of huge, maybe copying that is slow.

I can provide benchmarks, there is likely little difference. It's not only about performance, but also to mark the immutability of the object.
Usually, I'm more confident when I see structs because there is little to no side effects involved, with often better performance/memory usage of course.

Hmm what about String? In the description it even says:

A String represents an immutable sequence of UTF-8 characters.

@r00ster91 String is a false immutable. It is immutable when using only safe methods, but can be mutated with to_unsafe.

Group Struct is slower?

1.01× slower usually means nothing and is just a coincidence. Often if you re-run the benchmark the other one is suddenly 1.01× slower.

Being immutable isnt the only matter. Transforming a small class into a struct can improve performance, but a large class with many ivars can involve lots of memcpy instead of just passing a pointer.
Your benchmark doesnt test copying because the method call will be inlined by LLVM.
Making Process::Status a struct makes perfect sense: it merely wraps a 32-bit integer, thus will be pased inside a register (no memcpy) and it's immutable.
Making System::User doesnt make sense: 6 string structs, most nilable. The class is huge. Passing it by value will require lots of memcpy.

I have to add @[NoInline] then, I guess.
A String struct? String is a class, so even if the object is a struct, the ivars would be passed as references (like Array, Hash, etc).

I understand performance is not the only reason why to make this change.  I just thought it would be the way.

Updated benchmark:
@[NoInline]
def another(s)
  s
end

@[NoInline]
def method(s)
  999.times { another s }
end

Results:
 Group class 212.98k (  4.70µs) (± 8.67%)  64.0B/op   1.04× slower
Group struct 222.26k (  4.50µs) (± 3.49%)  32.0B/op        fastest
 User class 208.78k (  4.79µs) (± 4.33%)  288B/op   1.01× slower
User struct 211.63k (  4.73µs) (± 3.65%)  224B/op        fastest

As I expected @r00ster91 , changing Levenshtein::Finder to a struct make the CI failing.

Any update?
As said previously, I have verified that changing the User and Group classes to structs doesn't degrade the performance.
If you still prefer, I can drop this changes.

Is it possible to move forward? I noticed other objects that can be changed from class to struct.
HTTP::Server, which is mainly immutable, except for HTTP::Server#bind, which adds an address to the @sockets array, which is a class passed by reference - so we are good.

Sorry, but this is not needed. This will cause breaking changes without real benefits.

For HTTP::Server, or others? For HTTP::Server, why not, because it is not expected to create a lot and pass them around.
For other objects, it can be beneficial.

For HTTP::Server I can see there's a property error_io so it's already not immutable.
But generally, how many http servers are created per app? One? It doesn't make a difference if it's a class or a struct. And a class is more versatile because you can inherit from it.

Yes I agree for HTTP::Server, even if it is strange to choose class for the only benefit of inheriting from it.

And property is only for testing, it is not supposed to be mutable otherwise. I drop the commit

The default for every instance type in Crystal API's should be class because it's more versatile and easier to use. General exceptions are only types for simple immutable value objects (typically using the record macro).
struct can also be considered when there's a definitive performance concern.
But just refactoring classes to structs because they're immutable types doesn't make sense. Classes can be immutable. That's perfectly fine and there's no inherent benefit to converting them to structs.

OAuth::RequestToken and Process::Status are types for value objects. IMO they should be refactored to structs.
Everything else should be left as is.

Here OAuth and Process modifications make sense, IMO. They can have an impact, since an application could easily use them a lot.
I don't know what do you mean by "inherently immutable", there is no golden rule for that. There are obvious simp'e examples, but we can just look at the implemantion and the public API to know if an object is mutable or not – and switching between class and struct will be transparent (except for inheritance).
The main questions are: is it mutable, and is inheritance needed?

Why not for the OAuth2 classes?

I don't know what do you mean by "inherently immutable", there is no golden rule for that.

By inherently immutable I mean value objects and similar concepts.

we can just look at the implementation and the public API to know if an object is mutable or not

This only covers the current implementation and API. Later changes adding mutable state would mean a break change from struct to class. And so does the current change from class to struct. Since there's no real benefit from doing that in the first place, we shouldn't even bother having this discussion.

and switching between class and struct will be transparent (except for inheritance).

It's not transparent but a breaking change affecting inheritance, reopening and instance behaviour.

Why not for the other OAuth classes?

Because they're behavioural models, not value objects.

I guess I can use memoization and a hah table to create a new OAuth2 client for each request

I guess I can use memoization and a hash table to avoid creating a new OAuth2 client for each request.

Extracting Oauth connections to a pool or whatnot may very well make sense from an efficiency standpoint (new connections are not free), but is this PR really a good place to do that kind of change?

I was only talking about my use case, on an efficiency point a view – not changes to make here.

In fact, in my app, a proxy, a lot of requests are processed – I was investigating ways to improve processing time.
For instance, I created an HTTP::Client before hand instead of using HTTP::Client.get for each request.

(My 3 last comments are not related to this PR, I explain the rationale from my point a view for those wondering why)

@j8r Please, change this PR title and description accordingly to your latests changes.

Just for the sake of argument: OAuth2::Client is currently super inefficient when it comes to high volumes because every single request initializes a new HTTP::Client and thus a new TCP connection. But that needs to be fixed in HTTP::Client to reuse existing connections.

Is to OK to merge now? Only OAuth::RequestToken and Process::Status are changed to structs at the end.


I want to add code for symmetric-tree in cpp inside a new folder trees

@king04aman

@king04aman see PR #68 and do mention the issues if found.


Fix RecursionError when edm authentication fails

_ensure_session calls _request which calls _ensure_session again:
2022-01-18 01:54:18,180 [INFO] [werkzeug] <IP_ADDRESS> - - [18/Jan/2022 01:54:18] "GET /api/v1/configuration/default/__bundle_setup HTTP/1.0" 500 -
Traceback (most recent call last):
  ...
  File "/usr/local/lib/python3.9/site-packages/flask_restx/resource.py", line 49, in dispatch_request
    resp = meth(*args, **kwargs)
  File "/code/app/modules/configuration/resources.py", line 132, in get
    data = current_app.edm.get_dict(
  File "/code/app/extensions/restManager/RestManager.py", line 342, in get_dict
    response = self._request(
  File "/code/app/extensions/restManager/RestManager.py", line 255, in _request
    self._ensure_initialized()
  File "/code/app/extensions/restManager/RestManager.py", line 225, in _ensure_initialized
    self._init_all_sessions()
  File "/code/app/extensions/restManager/RestManager.py", line 182, in _init_all_sessions
    self._ensure_session(target)
  File "/code/app/extensions/restManager/RestManager.py", line 204, in _ensure_session
    response = self._request(
  File "/code/app/extensions/restManager/RestManager.py", line 296, in _request
    self._ensure_session(target)
  File "/code/app/extensions/restManager/RestManager.py", line 204, in _ensure_session
    response = self._request(
  File "/code/app/extensions/restManager/RestManager.py", line 296, in _request
    self._ensure_session(target)
  ...
  File "/code/app/extensions/restManager/RestManager.py", line 204, in _ensure_session
    response = self._request(
  File "/code/app/extensions/restManager/RestManager.py", line 289, in _request
    response = request_func(endpoint_encoded, **passthrough_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 529, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 645, in send
    r = adapter.send(request, **kwargs)
  ...
RecursionError: maximum recursion depth exceeded while calling a Python object

Add reauthenticating to _ensure_session so _request knows when to stop
reauthenticating.

/rebase

/rebase


I can't open

I can't even open DevTools. The game doesn't crash. Even whenever it's enabled.

can you test on the latest version

can you test on the latest version

even on the latest version for me it doesn't work

Same issue kind of on android (nightly newest ver) it WIIL show up but in a line stacked and unusable


React text-mask not working with attributes

Hi! I'm trying to use text-mask in reactjs. But when I try to set attributes like value and onChange, I got an error:
Error:(106, 33) TS2339: Property 'name' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<MaskedInput> & Readonly<{ children?: ReactNode; }>...'.
I can only set a mask attribute and some others.
Why can't I set value to MaskedInput?
"react": "15.6.1" "react-text-mask": "^5.4.3"
I tried to use render property, but when i type, value doesn't change.
Here's my code:
<MaskedInput  mask={'(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
                                render={(ref, props) => (
                                    <input
                                        name="phone"
                                        className="form-control"
                                        placeholder="Номер телефона"
                                        required
                                        onChange={this.props.change}
                                        value={this.props.phone}
                                        ref={ref}
                                        {...props}
                                    />
                                )}
                            />

Help me please. Thank you!

My problem was so simple. @types/react library was absent


Amplify env checkout not working

Describe the bug
Since version 4.38.0 the amplify env checkout __env__ command is not working, downgrading to 4.37.1 works.
The error -
Could not initialize 'prod': The "path" argument must be of type string. Received an instance of Error

Amplify CLI Version
4.38.0
To Reproduce
While having multiple amplify environments, perform amplify env checkout __env__ to a different environment than the one you are in - receive error.
Expected behavior
Environment should switch with the env checkout command.

I was about to post the very bug @idanlo . Thanks for reporting.

Same thing is happening to me with amplify push, and amplify env pull --restore.
$ amplify push
✖ There was an error pulling the backend environment dev.
An error occurred during the push operation: The "path" argument must be of type string. Received an instance of Error

$ amplify env pull --restore
⠙ Fetching updates to backend environment: dev from the cloud.Could not initialize 'dev': The "path" argument must be of type string. Received an instance of Error

$ amplify --version
4.38.0

Only major change I've made to my Amplify setup is to import a Cognito User Pool and Identity Pool. I'll try downgrading to see if that helps.

I cannot delete or checkout an environment with the same error message. I also cannot open the admin ui for this environment in the Amplify console.

Will this be resolved soon? Getting the same error using amplify init with an existing environment. Currently on 4.38.2
Could not initialize 'envname': The "path" argument must be of type string. Received an instance of Error

@idanlo @dwamianm @jcf @hanna-becker it seems to be related to the setup of the project as I was not able to reproduce it. Could you provide exact repro steps for this?

Can confirm this regression exists on the latest version 4.39.0 and this is causing our CI deployments to fail. Downgrading to 4.37.1 like @jcf mentioned above seems to make it go away.
Output from our Jenkins node is shown below (project name and profile name redacted):
+ amplify init --amplify '{"projectName":"<project name>","envName":"dev","defaultEditor":"code"}' --providers '{"awscloudformation":{"configLevel":"project","useProfile":true,"profileName":"<profile name>"}}' --yes

Note: It is recommended to run this command from the root of your app directory

- Initializing your environment: dev

Could not initialize 'dev': The "path" argument must be of type string. Received an instance of Error

script returned exit code 1

This problem is currently affecting every single one of the Amplify projects at work, and not just on the CI server (macOS Catalina) but also on my Windows 10 work machine. Unfortunately, I could not reliably reproduce the problem after a couple hours of investigation. It seems to be pretty random, amplify init and amplify push throw this error when they have worked perfectly fine a few days ago. And when I install older version then install latest version again, it randomly starts working again. Also tried creating an Amplify project on my personal MacBook Pro (macOS Catalina) and it works perfectly fine on there, so I don't understand what can be causing this.
Is there any way we can enable verbose output? Looks like it's still an open ticket (#501) but I think this would be nice to have so I can figure out exactly what "path" is and why it messes up only sometimes.

update your npm version  exc command line:   sudo npm install -g npm
can fix "The "path" argument must be of type string. Received an instance of Error"

We started having this issue on one of our team member's mac recently. What fixed it for us was running amplify configure project again. Turns out. it wasn't able to find the AWS credentials in the system so we ended up creating and setting a new user profile on the system and it started working again.

Is anyone still seeing this issue after upgrading to version 4.40.0?

@jhockett Yes, still seeing the issue, 3 minor updates and still nothing changed

@idanlo Which updates are you referring to out here? Is the issue still tied to env checkout?

@idanlo Which updates are you referring to out here? Is the issue still tied to env checkout?


open tiles in new tabs?

First off, best new tab extension I've tried. Any chance for an option to open tiles in new tabs, right- or middle-click?

Hey beautypersoni, thanks for the kind words.
I've just pushed an update to NNTP on the Chrome Web Store that fixes this functionality (an update to Chrome broke it a while back).
Sorry that this took so long. I hope you haven't given up on NNTP.

Forgot to add: you can open shortcuts in a new tab by middle-clicking, ctrl-clicking, or cmd-clicking.


Missing Level1Waveblock

Seems like from wavemix import Level1Waveblock is used a lot, but I can't find where Level1Waveblock is supposed to be. Where is the code for this block?

Level1Waveblock comes from the wavemix library. you can install it using pip install wavemix.


Support for Keras 2.15 (or at least documentation of a working version)

I downgraded to Keras 2 hoping to use lwtnn after reading this issue: https://github.com/lwtnn/lwtnn/issues/175
Unfortunately it still doesn't work. The issue is that lwtnn expects a specific structure from the weights.h5 file (yes I did use model.save_weights as recommended here ) but v2.15 makes another.
Example file from a friend where keras2json.py works:

My v2.15 weights file (1 = biases, 0 = kernel):

Attempted-fix versions of keras2json.py and keras_v2_layer_converters.py are attached if that helps get things started :) (not making this a pull request since the changes would break earlier versions and I'm not sure how you want to deal with that
v2.15_attempted_fix.zip

Update: main branch works with v2.13


Linkable library?

Hi,
This is super cool. I'm a researcher in bioinformatics, and we frequently need to visualize large graphs involving genome assembly data. Is there a core layout method from your work that could be broken out into a reusable library? I'm familiar with Python and C++, but i'm terribly inexperienced with javascript, or any web interface language, so I'm having difficulty tracking down where the bulk of the computational methods are implemented, and if it is possible to port for non-web purposes.
Any advice or alternative recommendations for efficient large scale graph layout would also be appreciated. I'm currently relying on OGDF in C++ for everything.

Thanks @rlorigro!
Unfortunately there's no easy way to use Cosmos with other programming languages. We're thinking about creating a Jupyter widget for Python but there's no timeline for that yet.
Here's a great article about different visualization tools for large graph, I hope you'll be able to find something there. And if you have an Nvidia GPU, you can try using RAPIDS cuGraph which should be very fast too.

I see, thanks for the RAPIDS link, that looks promising.


How do you run tests locally?

I've cloned a fork of this repo locally, setup a virtualenv, installed the requirements.txt, but then I try to run runtests.py and some dependencies appear to be missing.  What is the appropriate way to run tests locally?

I had to also install djangorestframework and pyjwt before I could run the tests and linting.

We recommend testing with tox. Either way we try to stick to the same contribution guidelines and workflows as Django REST framework

Is it possible to add some documentation on how to run them? It seems
somewhat unclear.
On Feb 27, 2016 2:56 PM, "José Padilla"<EMAIL_ADDRESS>wrote:

We recommend testing with tox. Either way we try to stick to the same contribution
guidelines and workflows
http://www.django-rest-framework.org/topics/contributing/#development
as Django REST framework
—
Reply to this email directly or view it on GitHub
https://github.com/GetBlimp/django-rest-framework-jwt/issues/212#issuecomment-189714326
.

Yeah we should get some docs for this, but basically you can do:

Install tox: pip install tox
If you run tox on the root of the project it will run all tests in all our supported environments.
tox -l lists all supported environments
tox -e py27-django1.9-drf3.3 would run tests on Python 2.7 with Django 1.9 and DRF 3.3

@jpadilla I was gonna submit a pr but when I pulled the latest down, throw up a virtualenv, pip install tox, and run tox at root, I get mad errors...
summary __________________________________________________________________________________________________
  py27-flake8: commands succeeded
  py27-docs: commands succeeded
ERROR:   py27-django1.8-drf3.0: could not install deps [Django==1.8.7  # Should track maximum supported, djangorestframework==3.0.5  # Should track maximum supported, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.8-drf3.0/bin/pip install Django==1.8.7  # Should track maximum supported djangorestframework==3.0.5  # Should track maximum supported -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.8-drf3.0/log/py27-django1.8-drf3.0-1.log)', 1)
ERROR:   py27-django1.8-drf3.1: could not install deps [Django==1.8.7  # Should track maximum supported, djangorestframework==3.1.3  # Should track maximum supported, djangorestframework-oauth==1.0.1, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.8-drf3.1/bin/pip install Django==1.8.7  # Should track maximum supported djangorestframework==3.1.3  # Should track maximum supported djangorestframework-oauth==1.0.1 -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.8-drf3.1/log/py27-django1.8-drf3.1-1.log)', 1)
ERROR:   py27-django1.8-drf3.2: could not install deps [Django==1.8.7  # Should track maximum supported, djangorestframework==3.2.2  # Should track maximum supported, djangorestframework-oauth==1.0.1, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.8-drf3.2/bin/pip install Django==1.8.7  # Should track maximum supported djangorestframework==3.2.2  # Should track maximum supported djangorestframework-oauth==1.0.1 -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.8-drf3.2/log/py27-django1.8-drf3.2-1.log)', 1)

ERROR:   py27-django1.8-drf3.3: could not install deps [Django==1.8.7  # Should track maximum supported, djangorestframework==3.3.2  # Should track maximum supported, djangorestframework-oauth==1.0.1, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.8-drf3.3/bin/pip install Django==1.8.7  # Should track maximum supported djangorestframework==3.3.2  # Should track maximum supported djangorestframework-oauth==1.0.1 -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.8-drf3.3/log/py27-django1.8-drf3.3-1.log)', 1)
ERROR:   py27-django1.9-drf3.0: could not install deps [Django==1.9.0  # Should track maximum supported, djangorestframework==3.0.5  # Should track maximum supported, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.9-drf3.0/bin/pip install Django==1.9.0  # Should track maximum supported djangorestframework==3.0.5  # Should track maximum supported -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.9-drf3.0/log/py27-django1.9-drf3.0-1.log)', 1)
ERROR:   py27-django1.9-drf3.1: could not install deps [Django==1.9.0  # Should track maximum supported, djangorestframework==3.1.3  # Should track maximum supported, djangorestframework-oauth==1.0.1, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.9-drf3.1/bin/pip install Django==1.9.0  # Should track maximum supported djangorestframework==3.1.3  # Should track maximum supported djangorestframework-oauth==1.0.1 -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.9-drf3.1/log/py27-django1.9-drf3.1-1.log)', 1)
ERROR:   py27-django1.9-drf3.2: could not install deps [Django==1.9.0  # Should track maximum supported, djangorestframework==3.2.2  # Should track maximum supported, djangorestframework-oauth==1.0.1, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.9-drf3.2/bin/pip install Django==1.9.0  # Should track maximum supported djangorestframework==3.2.2  # Should track maximum supported djangorestframework-oauth==1.0.1 -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.9-drf3.2/log/py27-django1.9-drf3.2-1.log)', 1)
ERROR:   py27-django1.9-drf3.3: could not install deps [Django==1.9.0  # Should track maximum supported, djangorestframework==3.3.2  # Should track maximum supported, djangorestframework-oauth==1.0.1, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.9-drf3.3/bin/pip install Django==1.9.0  # Should track maximum supported djangorestframework==3.3.2  # Should track maximum supported djangorestframework-oauth==1.0.1 -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py27-django1.9-drf3.3/log/py27-django1.9-drf3.3-1.log)', 1)
ERROR:   py33-django1.8-drf3.0: InterpreterNotFound: python3.3
ERROR:   py33-django1.8-drf3.1: InterpreterNotFound: python3.3
ERROR:   py33-django1.8-drf3.2: InterpreterNotFound: python3.3
ERROR:   py33-django1.8-drf3.3: InterpreterNotFound: python3.3
ERROR:   py33-django1.9-drf3.0: InterpreterNotFound: python3.3
ERROR:   py33-django1.9-drf3.1: InterpreterNotFound: python3.3
ERROR:   py33-django1.9-drf3.2: InterpreterNotFound: python3.3
ERROR:   py33-django1.9-drf3.3: InterpreterNotFound: python3.3
ERROR:   py34-django1.8-drf3.0: could not install deps [Django==1.8.7  # Should track maximum supported, djangorestframework==3.0.5  # Should track maximum supported, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.8-drf3.0/bin/pip install Django==1.8.7  # Should track maximum supported djangorestframework==3.0.5  # Should track maximum supported -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.8-drf3.0/log/py34-django1.8-drf3.0-1.log)', 1)
ERROR:   py34-django1.8-drf3.1: could not install deps [Django==1.8.7  # Should track maximum supported, djangorestframework==3.1.3  # Should track maximum supported, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.8-drf3.1/bin/pip install Django==1.8.7  # Should track maximum supported djangorestframework==3.1.3  # Should track maximum supported -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.8-drf3.1/log/py34-django1.8-drf3.1-1.log)', 1)
ERROR:   py34-django1.8-drf3.2: could not install deps [Django==1.8.7  # Should track maximum supported, djangorestframework==3.2.2  # Should track maximum supported, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.8-drf3.2/bin/pip install Django==1.8.7  # Should track maximum supported djangorestframework==3.2.2  # Should track maximum supported -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.8-drf3.2/log/py34-django1.8-drf3.2-1.log)', 1)
ERROR:   py34-django1.8-drf3.3: could not install deps [Django==1.8.7  # Should track maximum supported, djangorestframework==3.3.2  # Should track maximum supported, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.8-drf3.3/bin/pip install Django==1.8.7  # Should track maximum supported djangorestframework==3.3.2  # Should track maximum supported -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.8-drf3.3/log/py34-django1.8-drf3.3-1.log)', 1)
ERROR:   py34-django1.9-drf3.0: could not install deps [Django==1.9.0  # Should track maximum supported, djangorestframework==3.0.5  # Should track maximum supported, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.9-drf3.0/bin/pip install Django==1.9.0  # Should track maximum supported djangorestframework==3.0.5  # Should track maximum supported -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.9-drf3.0/log/py34-django1.9-drf3.0-1.log)', 1)
ERROR:   py34-django1.9-drf3.1: could not install deps [Django==1.9.0  # Should track maximum supported, djangorestframework==3.1.3  # Should track maximum supported, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.9-drf3.1/bin/pip install Django==1.9.0  # Should track maximum supported djangorestframework==3.1.3  # Should track maximum supported -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.9-drf3.1/log/py34-django1.9-drf3.1-1.log)', 1)
ERROR:   py34-django1.9-drf3.2: could not install deps [Django==1.9.0  # Should track maximum supported, djangorestframework==3.2.2  # Should track maximum supported, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.9-drf3.2/bin/pip install Django==1.9.0  # Should track maximum supported djangorestframework==3.2.2  # Should track maximum supported -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.9-drf3.2/log/py34-django1.9-drf3.2-1.log)', 1)
ERROR:   py34-django1.9-drf3.3: could not install deps [Django==1.9.0  # Should track maximum supported, djangorestframework==3.3.2  # Should track maximum supported, -rrequirements/testing.txt]; v = InvocationError('/Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.9-drf3.3/bin/pip install Django==1.9.0  # Should track maximum supported djangorestframework==3.3.2  # Should track maximum supported -rrequirements/testing.txt (see /Users/eric/Projects/django/django-rest-framework-jwt/.tox/py34-django1.9-drf3.3/log/py34-django1.9-drf3.3-1.log)', 1)

@erichonkanen weird, maybe newer versions of tox don't like those # Should track... comments. Mind removing and trying again?


Why PopulateExistingItem() function was removed in Chapter 6?

Hi!
In ItemDetailsViewModel.cs, PopulateExistingItem() function was removed from the project in Chapter 6, which was present in Chapter 5. Now when one double-clicks an item, it navigates to the DetailsView without carrying any information from the database and we have to type whole new data for the item.
I have tried to Update the function according to asynchronous code as follow:
private async Task PopulateExistingItem(IDataService dataService)
{
    if (_selectedItemd > 0)
    {
        var item = await _dataService.GetItemAsync(_selectedItemId);

        Mediums.Clear();

        foreach (string medium in dataService.GetMediums(item.Type).Select(m => m.Name))
        {
            Mediums.Add(medium);
        }

        _itemId = item.Id;
        ItemName = item.Name;
        SelectedLocation = item.Location.ToString();
        SelectedItemType = item.Type.ToString();

        await Task.Delay(100);
        SelectedMedium = item.MediumInfo.Name;
    }
}

But without the line "await Task.Delay(100);", the SelectedMedium in the DetailsView is not shown. May be this is due to the [computed] tag used for MediumInfo property.
Can you please update and help on this?
Regards,
Naeem Ahmed.

It's a mistake. This PR has the corrected code for Chapter 6.

Ok, Thank you for the reply. But Why am I not getting SelectedMedium displayed in the ComboBox in the DetailsView without applying the Task.Dealy() option before updating the SelectedMedium inside the PopulateExistingItem() method?

Thank you for your prompt response, Alvin.

Ok, Thank you for the reply. But Why am I not getting SelectedMedium displayed in the ComboBox in the DetailsView without applying the Task.Dealy() option before updating the SelectedMedium inside the PopulateExistingItem() method?

I haven't seen that issue, but if you're still seeing it, there might be a timing issue where some code in OnSelectedItemTypeChanged is still executing after SelectedMedium is set. The init code is setting the public properties to take advantage of INotifyPropertyChange updating the View. The downside is that the On...Changed events are also firing. It's a bit of a hack, but you could create a private bool isInitializing field, set it true when the init starts and false when it's done. Then you can skip some of that OnChanged logic that's not needed during an init.


Add DependentLoadFlags description.

This field should be published for build system developers as it is useful as a defense against DLL planting attacks.

@0xbadfca11 : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Different default styles for taskgroup and task lines

Great plugin, thanks! It works perfectly, but I'd love to able to write more concisely with some extra defaults.
I would like to have a default style for the taskgroup lines and a different default style for the task lines.
For thicker blue taskgroup lines and thinner gray tasks, using your example:
Current:
#timeliney.timeline(
  show-grid: true,
  line-style: (stroke: 6pt + blue), // changes everything
  {
    ...
    taskgroup(title: [*Research*], {
      task("Research the market", (0, 2), style: (stroke: 2pt + gray))
      task("Conduct user surveys", (1, 3), style: (stroke: 2pt + gray))
    })

    taskgroup(title: [*Development*], {
      task("Create mock-ups", (2, 3), style: (stroke: 2pt + gray))
      task("Develop application", (3, 5), style: (stroke: 2pt + gray))
      task("QA", (3.5, 6), style: (stroke: 2pt + gray))
    })
    ...
  }
)

Proposed:
#timeliney.timeline(
  show-grid: true,
  taskgroup-line-style: (stroke: 6pt + blue),
  task-line-style: (stroke: 2pt + gray),
  {
    ...
    taskgroup(title: [*Research*], {
      task("Research the market", (0, 2))
      task("Conduct user surveys", (1, 3))
    })

    taskgroup(title: [*Development*], {
      task("Create mock-ups", (2, 3))
      task("Develop application", (3, 5))
      task("QA", (3.5, 6))
    })
    ...
  }
)

I assume that, like in your example, a fairly standard use would be to have a strong color for the taskgroup and a lighter colour and slightly thinner line for the tasks. You could then just define one colour in the taskgroup function call:
taskgroup(title: [*Research*], color: red {
    task("Research the market", (0, 2))
    ...
})

taskgroup(title: [*Development*], color: blue {
    ...
})

and you could even default to applying one of typst's colormaps down the gantt chart (i.e., evenly space each taskgroup along the color map and assign all the tasks in that group to that color).
All of this will make reading, writing, editing, and getting started easier with your plugin. Though it's already great!

Thanks for the suggestion! I am currently busy both with a new job and finishing my master's thesis proposal (in which I will most definitely need to use this :P) so as soon as I have the time to work on this I will. Just wanted to drop a comment to reassure you that I'll take care of this eventually though!