Rewrite modelviz module from method to class based processor.

This change will make changes to models graph easier.
For ex. to add model docstring into graph it is not needed to copy whole module any more.

Coverage increased (+0.5%) to 38.106% when pulling 7f36d1e12885f56e758d1e9c8a0ead690410bcff on GrivIN:graph-models-class into af9f78c5935b61afaaadd2a989df2bddfab58f0b on django-extensions:master.

Many Thanks !
May I ask you to look at the tests as well ? and maybe write some additional ones for better coverage.

sure, I will take a look, see you soon! ;)


Input images of varying size

In the examples, we hard-code in the image size. Is this uniformity a requirement of the algorithm, or is it possible for the algorithm to deal with images of varying size?

@michael-leece-st Hi!
The input image may be of any size, but before forwarding it through the net one needs to resize it to a fixed size. I believe, it is a common practice to do so.


Gotcha in time series content aggregation

If I do the following:

Add a csv file to a composite resource ODM2_One_Site_One_Series.csv
In edit mode convert to time series.  This results in a time series content aggregation comprising two files, the original csv file and an ODM2.sqlite file.
Right click to remove content type.  This results in the two files as plain files in the resource.
Delete the .csv file (not strictly necessary).
Right click on ODM2.sqlite file and convert to time series.
The following error results

It seems that if I create an ODM2.sqlite file in HydroShare, I should be able to use it as the basis for creating a resource in HydroShare.  The rules for the metadata to expect coming in a .sqlite file are more stringent than coming from a .csv file.  This may be a "feature" or a "bug"
@horsburgh please evaluate.

@dtarb When a csv file is uploaded, system creates an ODM2 SQLite file with mostly empty that it expects the user to populate. So if the user tries to create a time series content type from such a SQLite file it is expected to fail. The same failure happens when a user uploads a SQLite file that does not meet the minimum data it expects in that file.

As @pkdash describes - the SQLite file is blank and will fail if you remove the aggregation and then try to recreate it from the SQLite file. The content of the SQLite file is not actually created until the minimum time series metadata have been entered - even though the blank SQLite database is created in the folder. The uploaded CSV file contains no metadata.
@pkdash - would it be possible to delay the initial creation of the SQLite file until the minimum metadata requirements have been met by the user? In other words, the folder would only contain the CSV file until the minimum metadata requirements have been met and then the SQLite file would be generated.
@dtarb - the issue here is that we are allowing users to create time series content, which has a bunch of required metadata - from a CSV file that contains no metadata. We could also decide to force the user to input all required metadata when they upload a CSV file before the resource is created. This option would require more effort from users up front, but would prevent creation of resources that are in this "interim" state.

We may consider system deleting the SQLite file if it lacks minimum data when the user removes the time series content type.

@pkdash - That would be an easier fix. We would obviously only want to do that only for SQLite files that we know were created by the system.

I am happy for you guys to do what you think is best.  Certainly making public or publication of resources should not be allowed for resources holding incomplete .sqlite files.  However working with .sqlite files that are incomplete should be flexible as the HS interface is actually quite an effective interface for adding the needed metadata.  The question is, if a user has an incomplete .sqlite file, should they be able to add it to HydroShare and then use the HS interface to fill in the missing data.  This may actually be the case for some .sqlite files that come out of the CUAHSI data client that Dan tried to demo today and were non compliant.
This does not need to be a show stopper on 1.16 deploy (I deliberately did not put on 1.16 milestone), as it is probably inherited from similar behavior in current time series file type functionality, but does warrant thinking through.

@horsburgh Please comment or follow up as needed.

To resolve this issue, I suggest a check on the SQLite file when the Time Series content type is removed to see if the SQLite file would validate as a Time Series content type aggregation. If the answer is yes, remove the content type aggregation as the user has requested. If the answer is no, we should alert the user that they are removing the Time Series content type aggregation and that their SQLite file lacks the necessary metadata for that content type aggregation to be added back. The message should be something like this:

You have chosen to remove the Time Series Content Type from this file. Your file currently lacks the necessary metadata to convert it back to a Time Series Content Type aggregation. Are you sure you want to remove the content type from this file?

I don't think we should delete the SQLite file if it fails the content type validation check because the user may have a good reason for wanting to remove the aggregation and keep the file.

@horsburgh I am working on this issue. I came across another related issue. After removing the timeseries content type (which was originally created from an uploaded CSV file), if the user tries to again create a timeseries aggregation from the  CSV file, it will fail since there is already a SQLite file in the same directory.

I think may be we should consider deleting the SQLite file at the time of content type removal, if the SQLite file was system created - that should resolve the original issue as well this related issue.

@pkdash - If there's a way to know whether the SQLite file was created by the system, I think your suggestion works here. Is this only an issue if the SQLite file and the CSV file share the same name? In other words - how does adding the content type after removing it know to fail if there is an existing SQLite file? Is it based on file name?
I think there needs to be a warning (perhaps there is already?) when the user chooses to remove the content type aggregation that any metadata they have added to the aggregation will be destroyed.

@horsburgh This related issue is not due to the shared file name for CSV and SQLite. Since there is already a SQLIte.sqlite file created by the system when originally the timeseries aggregation was created, at the time of recreation of the content type from CSV system tries to create another SQLite.sqlite file in the same directory which obviously fails.
At the time of content type removal we would know if the SQLite file was created by the system or not. If the content type contains the CSV file then the SQLite file is system created.

@pkdash - OK. I think your approach seems fine. My concern about the SQLite file was that if there are other SQLite files hanging about they might get deleted by mistake, but from your explanation that would not be an issue. The message on the "Remove content type" dialog is what I wanted, so I think that covers my concerns.

@horsburgh This has been fixed as part of next release 1.48. You can test it on beta.

This has been fixed as per testing on prod.


Add Windows documentation

This has been a really fun setup to use and I want to help out. I will work on additional documentation for the Windows side of things

@nxion, that would be a great contribution to the repo!!! Looking forward to it!

@jcscottiii, figured I would let you know that I didn't forget about this :) Windows is proven to be much more difficult then I expected. Hopefully I will have something for you soon.

@nxion I appreciate all the hard work.
If it's not too much to ask, you should document the things you tried out. I think there's no real literature on it for Windows and would be great for everyone to learn from your experience.

Way ahead of you on that front. I have a running list of all my trial and errors with trying to get this going.

:+1:   :)


The "stats.wounds" bar and the "stats.strain" bar are not displayed by default in the system.

Hello Hello,
When starting a new world and creating actors ... you have to manually activate the "stats.wounds" bar and the "stats.strain" bar as they are not displayed by default in the system.
Is it possible to add default activation of the "stats.wounds" and "stats.strain" bars in the system?
Thank you for your help.
S.

Done. Thanks for the suggestion, will be released in 1.809.


NetVLAD effectiveness in Gazebo Environments

Hi @Relja,
NetVLAD is trained on real-world images, but I was wondering how effective your pre-trained models would work in simulation camera images (like in a Gazebo environment).  A sample camera image taken from my robot in the simulation is shown here:

To your knowledge, has anyone tried this out? If so, what do you think are the best pre-trained models to try out? I'm trying to avoid training a custom model since building a dataset is super tedious in my instance.
Thanks for your response!
Quest2GM

Hi,
Hmm, sorry but I don't know of any work that uses synthetic images. It's hard to tell as real vs synthetic is quite different so I can only speculate really, but I wouldn't be surprised if it still worked decently enough. Probably best is VGG-16 + NetVLAD + whitening trained on Pitts 30k. If I was you I'd actually start with the simplest thing possible, e.g. take a resnet50 trained on ImageNet and do average or max pool the final activations, L2 normalize, and see how well that works. It might already be good enough for simple (if they are simple) synthetic scenes, and only later progress to NetVLAD if you want to squeeze more performance out. Though also it would be great to actually train the network - it's surprising that making the dataset is tedious since usually that's the apeal of synthetic data - easy generation of lots of it with good ground truth.
Best,
Relja

Just wanted to inform that it does work pretty decently on the synthetic images, given that you tune the vector distance thresholds properly.

Thanks for the followup, I'm glad it worked out for you!


⚠ Bofrost.de has degraded performance

In c04af41, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1526 ms

Resolved: Bofrost.de performance has improved in da199bd after 11 minutes.


Possible undefined behaviour in matched_receive_vec

MatchedReceiveVec::matched_receive_vec currently allocates and fills the receive buffer via
let mut res = Vec::with_capacity(count);
unsafe {
    res.set_len(count);
}
let status = message.matched_receive_into(&mut res[..]);

where res: Vec<M> and hence &mut res[..]: &mut [M].
Even when it is assumed that the receive bytes form valid instances of M, i.e. ignoring #54, the uninitialized memory backing res could certainly contain arbitrary bit patterns which are invalid when e.g. M == bool. Therefore, the call to set_len and the creation of a mutable reference to the unformed instances of M is undefined behavior AFAIU.
Maybe this could be worked around by going for res: Vec<MaybeUninit<M>> and transmuting to Vec<M> only after the receive operation, but I guess this would require something along the lines of impl<M> Equivalence for MaybeUninit<M> where M: Equivalence?
More generally speaking and thinking about #54 again, the API could be changed so that receive operations generally handle only instances of MaybeUninit<M> instead of M so the required unsafety would be "concentrated" into calling assume_init in user code, at least in places where M: FromAnyBytes does not apply. Using MaybeUninit<M> could also steer user code towards avoiding the overhead of initializing memory beforing receive data into it which is required to produce a valid &mut M (as the API would take only &mut MaybeUninit<M> or even *mut M).

Yeah, you're totally right. That's unsound. However, I think it should be safe to instead just pass the uninitialized buffer directly into MPI_Mrecv and then call set_len.
At the very least,

impl<M> Equivalence for MaybeUninit<M> where M: Equivalence

I like the ideal conceptually, but I'm not sure what you're supposed to do with the, say MaybeUninit<bool> to validate it. Is there any safe way to validate the bool contained in the MaybeUninit before you unwrap it?

However, I think it should be safe to instead just pass the uninitialized buffer directly into MPI_Mrecv and then call set_len.

Yes, indeed. That would just mean not be able to calling to matched_receive_into but reproduce its implementation here, but it is probably the least intrusive fix. (But do note that the fact that MaybeUninit is used would not need to become part of the API here necessarily as that trait forwarding could be hidden via a private newtype wrapper, so it could be as unintrusive even if slightly more involved at the type system level.)

Is there any safe way to validate the bool contained in the MaybeUninit before you unwrap it?

I don't think so. I mean you could theoretically check the bit patterns by comparing with 0_u8 and 1_u8 before calling assume_init, but generally this would probably be considered an assertion of a correct implementation of the participating processes.
In my personal point of view, using MaybeUninit and a safe API for this crate would basically mean that this crate has properly wrapped the unsafey imposed by the C API, but the received data cannot be validated at this level. So it could be considered to separate the two reasons for unsafety here: Calling into the vendor-provided C API and respecting its invariants and making sure to respect types when matching sends and receives by the involved processes. Which seems nice considering that the second part would necessarily be unsafe even if the MPI implementation itself would be a completely safe Rust implementation as it is a direct consequence of pushing raw memory contents over the wire.

I think I'll try to prepare an MR investigating the use-maybeuninit-but-do-not-expose-it route...

Maybe adding
unsafe impl<T> FromAnyBytes for MaybeUninit<T> {}

in #79 would actually be all that is needed to make MaybeUninit work nicely with the proposed API?


bug report (rare items)

There is a problem with rare items.
For example, when I create a normal diadem and change it to rare and click save button, save file will not be created. There is no response.

Please check. Thank you.

#197

#197


Update DeepSpeed

What does this PR do?

This PR updates the DeepSpeed version to install to 1.6.1.
It also automatically sets use_fused_adam to False and use_habana_mixed_precision to True when DeepSpeed is used. This enables to keep the same Gaudi configs as without DeepSpeed.
Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[x] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Move important admonition from the heading Options to Remarks

The idea is to move the important admonitions found under the heading Options to the Remarks heading. E.g. for the command spo cdn get there is an important admonition under the heading options talking about permissions which feels a bit out of place there.
Commands that need to be updated:
When you filter in the docs on access the tenant admin site you'll already find 52 commands where this change can apply.
A few example commands: spo cdn get, spo knowledgehub get, spo site appcatalog add

Originates from: https://github.com/pnp/cli-microsoft365/pull/4521#discussion_r1110040388

@pnp/cli-for-microsoft-365-maintainers any thoughts regarding this change?

In my opinion the whole message with you can run this command if the user can access the tenant admin site is also very unclear to me, but let's leave it as is, we can't recheck all permissions for all these commands to make it more clear.
Let's definitely check which docs should be updated. We should probably build a script to check this because other admonitions with other messages can also be placed in a wrong position.
But looks good to me, let's open it up!

Does the remarks section show when we use the short help format? If it doesn't the moving this message means hiding it, which isn't a great idea. Perhaps it would be better to wait until we start working on adding permissions information to all commands and update it then ensuring that it will stay visible.

Does the remarks section show when we use the short help format? If it doesn't the moving this message means hiding it, which isn't a great idea. Perhaps it would be better to wait until we start working on adding permissions information to all commands and update it then ensuring that it will stay visible.

We're putting these admonitions under Remarks for months now, only for old commands it's still under Options. So in fact we are already doing this now.

Can I work on it?

Can I work on it?

All yours 👍


InterType dependencies

Could an InterType depend on another InterType outside of the file? For example, let's say I have the following directory structure:
proj/
  - shared.it
  - obj1/
    - obj1.it
  - obj2/
    - obj2.it

In this scenario, I'd want to be able to instantiate obj1.it and obj2.it in the same environment AND have them depend on the types defined in shared.it.

This is definitely an intended use case that should work. I think that this line https://github.com/AlgebraicJulia/ACSets.jl/blob/a7b19ffab6dc69afe4e7625f1dfb5f181e4ed65b/src/intertypes/InterTypes.jl#L77 introduces the imports field to allow an intertype module to refer to other intertype modules for exactly this purpose. It is an OrderedDict because Owen wants "last write wins" semantics for imports.

See: https://github.com/AlgebraicJulia/ACSets.jl/blob/146fa754f50eec128569eea0b6abfe9376610952/test/intertypes/InterTypes.jl#L44C1-L44C1.

It probably could be implemented more smoothly though.


[BEAM-2527] Test queries on unbounded PCollections with BeamSql dsl API

R: @xumingming @takidau

Changes Unknown when pulling 57c7e777cdc47975630c24b77ccf2c79381556c0 on XuMingmin:BEAM-2527 into ** on apache:DSL_SQL**.

Some thoughts here:
Do we have to enumerate all the cases in DSL test? I mean bounded vs bounded, unbounded vs unbounded etc. IMO we don't have to enumerate all the cases, just a happy test is enough, the DSL test is more like an integration test, all the cases should have already been covered by underlying UnitTest. Take JOIN for an example, all the join cases have covered by BeamJoinRelBoundedVsBoundedTest, BeamJoinRelUnboundedVsUnboundedTest, BeamJoinRelUnboundedVsBoundedTest,  we just need to make the JOIN feature integrates well the DSL methods, how do you think?

I would prefer to test both bounded and unbounded for each case, however it's not necessary to duplicate all for BeamSql and BeamSqlCli.

Changes Unknown when pulling 34b25d9c00a3171cfcddbfe11520d8a7e22f2f6c on XuMingmin:BEAM-2527 into ** on apache:DSL_SQL**.

Changes Unknown when pulling 34b25d9c00a3171cfcddbfe11520d8a7e22f2f6c on XuMingmin:BEAM-2527 into ** on apache:DSL_SQL**.

Changes Unknown when pulling 34b25d9c00a3171cfcddbfe11520d8a7e22f2f6c on XuMingmin:BEAM-2527 into ** on apache:DSL_SQL**.

rebase and split bounded/unbounded test cases.

Changes Unknown when pulling 01143a288e572b1d7bde993646c2ad6b51c67486 on XuMingmin:BEAM-2527 into ** on apache:DSL_SQL**.

Merged, feel free to close.

closed,
Thank you @takidau


Bug: inconsistent TLDs in compare URLs

Some of the compare links we put into issues, PR and comment bodies have a TLD in the URL, others don’t. Not having a TLD make sense in a self-hosted environment where the TLD isn’t github.com, but in GitHub’s notification emails, these then don‘t go anywhere.

Whoops, this was fixed ages ago.


Remove references to snowplow-emr-etl-runner.sh from EmrEtlRunner documentation

https://github.com/snowplow/snowplow/wiki/3-Scheduling-EmrEtlRunner links to the below URL:
https://github.com/snowplow/snowplow/blob/master/3-enrich/emr-etl-runner/bin/snowplow-emr-etl-runner.sh
But the shell script URL is a 404.

@alexanderdean - Updated all the EmrEtlRunner setup pages to reflect the end of support for Ruby based runner. Additionally, did the same on StorageLoader setup pages.


Standardise coding style conventions and enforce with pylint

I suggest we follow the coding conventions documented in PEP 8. I believe Pylint's default configuration checks code against this.

U mean rename functions from helloWorld() to hello_world()?

U mean rename functions from helloWorld() to hello_world()?

Yes, lower_snake_case for function names and variable names.


Introduce Attribute/ID to replace Participant/ID, etc

we have a bunch of IDs at different places.

Included in issue #12 in github repository hed-standard/hed-specification


Display the compiler details on startup

Add the "Built with GCC..." line on trace.

Code copied from µTest++.


Implement time-evolving dataset obects

setup of a collection class and a validate concat method

[ ] make a link in the readme to the examples


Document NetworkPolicy implementation

Describe how Antrea implement NetworkPolicy, including the internal API objects, how are they created in antrea-controller and transmitted to antrea-agent, and finally get enforced/updated.

I am planning to write something next week and submit a PR.


Prevent accidental image selection when editing collections/galleries

This prevents accidental highlighting of NFT preview images while in editing contexts, by adding user-select: none to three places:
Gallery editor
Here we add user-select: none and pointer-events: none to the individual images so that the user does not accidentally drag the image when they intend to drag the row.
https://user-images.githubusercontent.com/13339581/164994892-fa334480-57dd-46cf-a34e-5512ef77765a.mov
Collection sidebar
Here we add user-select: none to individual images so that a user who tries to drag images (thinking dragging is a functionality here, which it is not) do not see highlighting of the other NFTs:
https://user-images.githubusercontent.com/13339581/164995045-e38e6a48-76a7-4849-b924-ccc0565cee02.mov
Collection editor main view
Finally we add a user-select: none to each individual image so that the user does not accidentally select the inner text while trying to reorganize NFT order:
https://user-images.githubusercontent.com/13339581/164995181-60c94036-d0fe-4239-804b-5a9c47c411a7.mov

nice!
I still see the the sidebar icons highlighted on chrome, I wonder if user-select:none can be applied to the parent instead?


Getting 'APP_NOT_VERIFIED' when trying to sign in via phone number

GET /sendotp/{phone number} HTTP/1.1 logs the following error that it is getting from the remote server:
{
    "error": {
        "code": 400,
        "message": "APP_NOT_VERIFIED",
        "errors": [
            {
                "message": "APP_NOT_VERIFIED",
                "domain": "global",
                "reason": "invalid"
            }
        ]
    }
}

Do you know how to fix this? Is any environment variable or token missing that's required for the login?

+41 (Switzerland)

Might be some header issues, I pushed a new version could you try that?
Does https://toofake.vercel.app/ work with your swiss number?

I tried, but it doesn't work so far. Can you see something in the logs on vercel?

I don't have any logs for privacy reasons.
Is your phone number being imputed like this

I just tried a virtual swiss sms and it seemed to be working fine.

Yes the input was correct. I tried with the endpoint you provided, and this seems to work, it returned a token as session info.

I have no idea what's going on then tbh, the endpoint should be the exact same, maybe its how the phone number is being passed from my client to backend? I'll take another look at it soon

Hey, I don't think it's an issue with your client anymore as now I get a session info as expected instead of APP_NOT_VERIFIED. It behaves the same as the original app for that part. I'll close this issue then 👍🏽

did it fix itself somehow? are you able to view things as normal?

After I opened the issue, you committed a few things which I pulled and then it was working normally...


[yugabyte/yugabyyte-db#19811] Changes to support Publication and Replication slot

This PR contains changes needed to support Publication and Replication slot in the connector. The PR contains three major areas of changes.

Extracting the stream id from the Replication slot.
Extracting the table include list from the Publication.
Dynamically adding tables for streaming in case of ALTER PUBLICATION.

For all these changes we execute queries on the pg_replication_slots and pg_publication_tables views.

Have we checked that these changes work with the existing model as well? Is backward compatibility ensured?
Also, I remember you were talking about borrowing some code from Postgres connector, can we put a comment citing the source?

Yes, the changes work with existing model as well. All the existing unit tests are working fine. We have only copied the config declaration from Postgres connector. The YugabyteDBConnectorConfig file already cites the copyright


[Bug]: Movement stops at non-English accented letters

Bug Description
In normal mode, while the cursor is at the beginning of a word that has at least one accented letter in it, pressing w will jump to the character following that letter instead of to the next word.
Reproduction & Sample Text
before: |tükörfúrógép teszt
after: tü|körfúrógép teszt
expected: tükörfúrógép |teszt
In comparison, if the word has no accented letters in it (as in tukorfurogep teszt), pressing w works as expected.
neovim version
v0.9.0

Special Settings
No.

Make sure you have done the following

[X] In case I have an issue with using the motions in operater-pending mode (cw, de, …), I read the notes on operator-pending mode in the README.
[X] I have updated to the latest version of the plugin.

Looking at this part of the code tells me nvim-spider relies on regular Lua string patterns such as %u for uppercase letters.
To my knowledge, the reason accented letters are ignored in such patterns is because Neovim relies on LuaJIT, which is based on Lua 5.1, which doesn't support the UTF8 character set (unlike later versions of Lua).
One option could be to rewrite that part of the code in order to use the external library utf8, and distribute the library with the plugin. I'm not very familiar with plugin development at this point, so I'm not sure if this would be the 'right' way of doing it though.

good find. yeah, I assume that adding some library like that would be necessary. however, I am a bit short on time for the next couple of weeks, so feel free to submit a PR if you figure it out?

Hello and welcome!
I tried to make it, found some libraries that do it, but need to understand some things. First, I found the useful C library in github, which can be compiled by luarocks: starwing/luautf8.
But, as you know, it's not simple to add non-plugin for neovim lua library. That's make some complexity to install but I also find these things:

packer.nvim already have some functionality that installs non-plugin for neovim lua library (keyword use_rocks);
if user don't use the packer.nvim then he can install plugin theHamsta/nvim_rocks that also do.
In the second case, need put some code in dependencies. For example, in lazy.nvim:

return {
	"chrisgrieser/nvim-spider",
	dependencies = {
		"starwing/luautf8",
		{
			"theHamsta/nvim_rocks",
			event = "VeryLazy",
			build = "pip3 install --user hererocks && python3 -mhererocks . -j2.1.0-beta3 -r3.0.0 && cp nvim_rocks.lua lua",
			config = function()
				local rocks = require("nvim_rocks")
				rocks.ensure_installed("luautf8")
			end,
		},
	},
}

Finally, I've writed code for me and I've found nuances. col indexing will be deprecated in the method getNextPosition and firstMatchAfter because UTF-8 contains bytes that have different widths and need use offset instead of this. As you see, need rewrite some code. I don't know how you feel about this, so I'd like to know what you think about it, @chrisgrieser?

I've reimplemented the plugin and fixed the issue as well. neowords.nvim

added in the latest release, see readme for adding the required luarocks dependency for it


feat(NODE-3697): reduce serverSession allocation

Description
What is changing?

incrementTransactionNumber will no longer acquire a serverSession because it won't use the getter

What is the motivation for this change?
With this change our driver will only acquire a serverSession when the getter is used which is in applySession, used inside the Connection class. This limits the number of serverSession allocated to be bounded by at least the number of concurrent operations running and at best by the max number of connection in our connectionPool.
Double check the following

[x] Ran npm run check:lint script
[x] Self-review completed using the steps outlined here
[x] PR title follows the correct format: <type>(NODE-xxxx)<!>: <description>
[x] Changes are covered by tests
[x] New TODOs have a related JIRA ticket

I'm sorry I haven't gotten around to a review yet, but it's on my list to do Monday!


Don't complain about unknown cti

When starting mor1kx-generic, you always get a warning
                   0 : Illegal Wishbone B3 cycle type (xxx)

at the very beginning.  This is a bit unnerving (especially since there is no indication whether this is a fatal error or just a warning), and not really accurate anyway; if all bits of cti are unknown, then there is no way of knowing that it is illegal either.
This PR removes the warning from wb_is_lastwhen cti is completely unknown, and just gives a return value of "unknown" instead.

This makes sense. Thanks for your contribution!


Better file enumeration in Folder Extension

📝 Make use of Enumeration Options.
For a bit of cleanup (and probably also a speedup) I saw an optimation (PR #6600). .net standard has added a new overload for directoryInfo.EnumerateFileSystemInfos("", new EnumerationOptions());. In these EnumerationOptions we can specify if we want to skip UnauthorizedAccessException and add FileAttributes.Hidden in the query. This line https://github.com/microsoft/PowerToys/blob/b2c00b1e1a1a9bb2a283d43e8d698817131e98e6/src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Main.cs#L264 will be changed. (or when my PR #6600 is in it will be somewhere else).

If you'd like to see this feature implemented, add a 👍 reaction to this post.

I want to implement this if that is okay.

@P-Storm Of course you can implement this. Just change the files and make a Pull Request

Added in 0.25.  https://github.com/microsoft/PowerToys/releases/tag/v0.25.0


Added support for iterables to head

Coverage remained the same at 100.0% when pulling 101b0952a6b775d6a2d801632456e03ea1a0e8e3 on feature/head-isiterable into afc4bfac1e3ec4f2defe99c5e85f8ec0b2f18429 on master.

@HenriqueLimas can you also check out https://github.com/evilsoft/crocks/issues/29 this is the issue this originally came from. I am trying to think what I could do for the other functions

@dalefrancis88 I found it a great way to do without changing type. Do you have concerns about this solution in the other functions?

Yeah i this is fine but for something like map it'll either be mutating the object or changing returning an array right?


Automatically center on the content when connecting to a shared room

If you're joining a shared room, people might be drawing on parts of the canvas outside of the viewport. It would be nice to center the canvas on the drawing on page load so users don't get confused.

Center on content in general (as we currently do on load from file/url), or center on what the other user(s) are drawing?

i think centering on the content in general as we already do would be good enough. not sure though :)


Feature 95 doc db to io

Pull Request Testing

[x] Describe testing already performed for these changes:
Reviewed the files changed.

[x] Recommend testing for the reviewer(s) to perform, including the location of input datasets, and any additional instructions:
Review the files changed and suggest any necessary changes.

[x] Do these changes include sufficient documentation updates, ensuring that no errors or warnings exist in the build of the documentation? [Yes]

[x] Do these changes include sufficient testing updates? [Yes]

[x] Will this PR result in changes to the test suite? [No]
If yes, describe the new output and/or changes to the existing output:

[x] Please complete this pull request review by [07/20/22].

Pull Request Checklist
See the METplus Workflow for details.

[x] Review the source issue metadata (required labels, projects, and milestone).
[x] Complete the PR definition above.
[x] Ensure the PR title matches the feature or bugfix branch name.
[x] Define the PR metadata, as permissions allow.
Select: Reviewer(s)
Select: Organization level software support Project or Repository level development cycle Project
Select: Milestone as the version that will include these changes
[x] After submitting the PR, select Linked issues with the original issue number.
[ ] After the PR is approved, merge your changes. If permissions do not allow this, request that the reviewer do the merge.
[ ] Close the linked issue and delete your feature or bugfix branch from GitHub.

The changes to the docs look good, thank you!


Updated React.PropTypes - replaced with the "prop-types" library to support React 16

Fixes #5

I've also added an "npm run clean" & "npm run build" scripts to support building on windows. (didn't touch the existing build scripts)

@miadwang - It seems the latest version is still not published to npm.
Can you publish 0.1.5 so everyone will have support for latest react versions?
Thanks.

@miadwang - Any chance of running "npm publish"? :)
I'm still using this with a github link but npm doesn't like it. If you can't publish it I can publish it under a different name to npm if you won't express opposition.

Thank you for your suggestion.
I’ll make it work in a couple of days.

I’ll make it work in a couple of days.

Any progress with the publish? 😃

Thank you!


Added Sky Detection

Description
Air Detection Objects
Fixes #2324

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
[x] New Script
[ ] Documentation Update

Checklist:

[x] My code follows the style guidelines(Clean Code) of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have created a helpful and easy to understand README.md
[x] My documentation follows Template for README.md
[x] I have added the project meta data in the PR template.
[x] I have created the requirements.txt file if needed.

Project Metadata
If there is no-file/nothing to fill the below fields with, then type: none
Example: If no requirements.txt needed/present, then type none in Requirments.
Category:

[ ] Calculators
[ ] AI/ML
[ ] Scrappers
[ ] Social_Media
[ ] PDF
[ ] Image_Processing
[x] Video_Processing
[ ] Games
[ ] Networking
[ ] OS_Utilities
[ ] Automation
[ ] Cryptography
[ ] Computer_Vision
[ ] Fun
[x] Detection
[ ] Others

Title: <write script title here>
Folder: AirObject
Requirements: cv2
Script: air.py
Contributor: SyedImtiyaz-1

Hello @avinashkranjan ,kindly review this.

@avinashkranjan ,
Please review this.

@avinashkranjan Please check this.

@avinashkranjan Please review this.

@avinashkranjan , I have added the README.md

@avinashkranjan Thanks. 👍🏻


What is the license?

What license have you released this under? Can you please include something in the repo to clarify?

@cliffmcc - thanks; I just added MIT. That shall be the license.


Request:  Restriction on on claimany/claimmod

Would be nice if these commands (and related commands) excluded souvenir, turn the key, and turn the keys (modules that can't be actively worked on by players, and would just eat up a claim slot)

Since PR #82 is merged, this can be closed.


Does not build with Cordova Android 6.4.0

BUILD FAILED in 40s
(node:15804) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: cmd: Command failed with exit code 1 Error output:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
\cordova\platforms\android\src\com\neutrinos\ocrplugin\Textocr.java:89: error: cannot find symbol
bitmap = MediaStore.Images.Media.getBitmap(cordova.getContext().getContentResolver(), uri);
^
symbol: method getContext()
location: variable cordova of type CordovaInterface
\cordova\platforms\android\src\com\neutrinos\ocrplugin\Textocr.java:93: error: cannot find symbol
bitmap = decodeBitmapUri(cordova.getContext(), uri);
^
symbol: method getContext()
location: variable cordova of type CordovaInterface
l\cordova\platforms\android\src\com\neutrinos\ocrplugin\Textocr.java:133: error: cannot find symbol
detector = new TextRecognizer.Builder(cordova.getContext()).build();
^
symbol: method getContext()
location: variable cordova of type CordovaInterface
FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':compileDebugJavaWithJavac'.

Compilation failed; see the compiler error output for details.

Thank you for raising this issue. Tested it and can confirm the build is failing in cordova android 6.4.0. However it does work for cordova android 7.0.0+. Just tested it again to confirm.
I am working on this issue. Will let you know once a fix is available.
Cheers,
Chris
Neutrinos

This issue has been fixed and tested. Cordova android 6.4.0 builds are successfully running. Let me know if you run into any more trouble. Closing this issue for now.
Have a nice day.
Cheers,
Chris
Neutrinos

Thank you for fixing it @ChrisTomAlx !


Feature request: Compute cross-correlation (similar to pd.Series.corr()) of gridded data

As a earth scientist regularly dealing with 3D data (time, latitude, longitude), I believe it would be great to be able to perform cross-correlation on DataArrays by specifying the axis. It's usage could look like: a.corr(b, axis = 0). It would be even more useful if the two arrays need not have the same dimensions (e.g. 'b' could be a time series).
Currently, the only way to compute this that I am aware of, is by looping through each grid, converting the time series to pd.Series(), and then computing the correlation. This takes a long time.
Would also appreciate suggestions to a faster algorithm.

The first step here is to find a library that implements the desired functionality on pure NumPy arrays, ideally in a vectorized fashion. Then it should be pretty straightforward to wrap in xarray.

I agree this would be very useful. But it is also feature creep. There is an extremely wide range of such functions that could hypothetically be put into the xarray package. (all of scipy.signal for example) At some point the community should decide what is the intended scope of xarray itself vs. packages built on top of xarray.

I agree with @rabernat in the sense that it could be part of another package (e.g., signal processing). This would also allow the computation of statistical test to assess the significance of the correlation (which is useful since correlation may often be misinterpreted without statistical tests).

That said, correlation coefficients are a pretty fundamental operation for working with data. I could see implementing a basic corr in xarray and referring to a separate signal processing package for more options in the docstring.

To be clear, I am not say that this does not belong in xarray.
I'm saying that we lack clear general guidelines for how to determine whether a particular function belongs in xarray. The criterion of a "pretty fundamental operation for working with data" is a good starting point. I would add:

used across a wide range of scientific disciplines
clear, unambiguous / uncontroversial definition
numpy implementation already exists

corr meets all of these criteria. Many others (e.g. interpolation, convolution, curve fitting) do as well. Expanding xarray beyond the numpy ufuncs opens the door to supporting these things. I'm just saying it should be conscious, deliberate decision, given the limits on developer time.
Many of these things will be pretty trivial once .apply() is here. So perhaps it's not a big deal.

I'll chime in here to ask a usage question: what is the recommended way to compute correlation maps with xarray. I.e. I have a dataarray of dims (time, lat, lon) and I'd like to correlate every single grid point with a timeseries of dim (time) to get a correlation map of dim (lat, lon). My current strategy is a wonderfully unpythonic double loop over lons and lats, and I wonder if there's better way?

FYI @shoyer @fmaussion , I had to revisit the problem and ended up writing a function to compute vectorized cross-correlation, covariance, regression calculations (along with p-value and standard error) for xr.DataArrays. Essentially, I tried to mimic scipy.stats.linregress() but for multi-dimensional data, and included the ability to compute lagged relationships. Here's the function and its demonstration; please feel free to incorporate it in xarray if deemed useful: https://hrishichandanpurkar.blogspot.com/2017/09/vectorized-functions-for-correlation.html

@hrishikeshac I was just looking for a function doing a regression between two datasets (x, y, time), so thanks for your function! However, I'm still wondering whether there is a much faster C (or Cython) implementation doing these kind of things?

I'm up for adding .corr to xarray
What do want this to look like? It's a bit different from most xarray functions, which either return the same shape or reduce one dimension.

The basic case here would take a n x m array and return an m x m correlation matrix. We could easily wrap https://docs.scipy.org/doc/numpy/reference/generated/numpy.corrcoef.html
Another case would be take two similarly sized arrays (with the option of broadcasting) and return an array with one dimension reduced. For example 200 x 10 and 200, return a 10 array.
I need to think about how those extrapolate to multiple dimensions

Should I start with the first case and then we can expand as needed?

I tend to view the second case as a generalization of the first case. I would also hesitate to implement the n x m array -> m x m correlation matrix version because xarray doesn't handle repeated dimensions well.
I think the basic implementation of this looks quite similar to what I wrote here for calculating the Pearson correlation as a NumPy gufunc:
http://xarray.pydata.org/en/stable/dask.html#automatic-parallelization
The main difference is that we might naturally want to support summing over multiple dimensions at once via the dim argument, e.g., something like:
# untested!
def covariance(x, y, dim=None):
    return xarray.dot(x - x.mean(dim), y - y.mean(dim), dim=dim)

def corrrelation(x, y, dim=None):
    # dim should default to the intersection of x.dims and y.dims
    return covariance(x, y, dim) / (x.std(dim) * y.std(dim))

If you want to achieve the equivalent of np.corr on an array with dimensions ('n', 'm') with this, you just write something like correlation(x, x.rename({'m': 'm2'}), dim='n').

Sometime back I wrote a package based on xarray regarding this. I would be happy to be involved in implementing it in xarray as well, but I am new to contributing to such a large-scale project and it looks a bit intimidating!

@hrishikeshac if you'd like to contribute, we can help you along - xarray is a v welcoming project!
And from mvstats it looks like you're already up to speed
Let us know

@max-sixty thanks!
Then I will start with testing @shoyer 's suggestion and mvstats for the basic implementation.

Great! Ping me / the issues with any questions at all!

For posterity, I made a small adjustment to @shoyer 's draft:
# untested!
def covariance(x, y, dim=None):
    # need to ensure the dim lengths are the same - i.e. no auto-aligning
    # could use count-1 for sample
    return xr.dot(x - x.mean(dim), y - y.mean(dim), dims=dim) / x.count(dim)

def correlation(x, y, dim=None):
    # dim should default to the intersection of x.dims and y.dims
    return covariance(x, y, dim) / (x.std(dim) * y.std(dim))

And one that handles NaNs:
# untested!
def covariance(x, y, dim=None):
    valid_values = x.notnull() & y.notnull()
    valid_count = valid_values.sum(dim)

    demeaned_x = (x - x.mean(dim)).fillna(0)
    demeaned_y = (y - y.mean(dim)).fillna(0)

    return xr.dot(demeaned_x, demeaned_y, dims=dim) / valid_count

def correlation(x, y, dim=None):
    # dim should default to the intersection of x.dims and y.dims
    return covariance(x, y, dim) / (x.std(dim) * y.std(dim))

Hey @hrishikeshac -- any progress on this? Need any help / advice from xarray devs?

Sorry for the radio silence- I will work on this next week. Thanks @max-sixty  for the updates,  @rabernat for reaching out, will let you know if I need help.
Should we keep it simple following @max-sixty , or should I also add the functionality to handle lagged correlations?

I think lagged correlations would be a useful feature.

Yes for useful, but not sure whether they should be on the same method. They're also fairly easy for a user to construct (call correlation on a .shift copy of the array).
And increments are easy to build on! I'm the worst offender, but don't let completeness get in the way of incremental improvement
(OK, I'll go and finish the fill_value branch...)

Okay. I am writing the simultaneous correlation and covariance functions on dataxarray.py instead of dataset.py- following the pd.Series.corr(self, other, dim) style.

Okay. Here's what I have come up with. I have tested it against two 1-d dataarrays, 2 N-D dataarrays, and one 1-D, and another N-D dataarrays, all cases having misaligned and having missing values.
Before going forward,

What do you think of it? Any improvements?
Steps 1 and 2 (broadcasting and ignoring common missing values) are identical in both cov() and corr(). Is there a better way to reduce the duplication while still retaining both functions as standalone?

def cov(self, other, dim = None):
    """Compute covariance between two DataArray objects along a shared dimension.

    Parameters
    ----------
    other: DataArray
        The other array with which the covariance will be computed
    dim: The dimension along which the covariance will be computed

    Returns
    -------
    covariance: DataArray
    """
    # 1. Broadcast the two arrays
    self, other     = xr.broadcast(self, other)

    # 2. Ignore the nans
    valid_values    = self.notnull() & other.notnull()
    self            = self.where(valid_values, drop=True)
    other           = other.where(valid_values, drop=True)
    valid_count     = valid_values.sum(dim)

    #3. Compute mean and standard deviation along the given dim
    demeaned_self   = self - self.mean(dim = dim)
    demeaned_other  = other - other.mean(dim = dim)

    #4. Compute  covariance along the given dim
    if dim:
        axis = self.get_axis_num(dim = dim)
    else:
        axis = None
    cov             =  np.sum(demeaned_self*demeaned_other, axis=axis)/(valid_count)

    return cov

def corr(self, other, dim = None):
    """Compute correlation between two DataArray objects along a shared dimension.

    Parameters
    ----------
    other: DataArray
        The other array with which the correlation will be computed
    dim: The dimension along which the correlation will be computed

    Returns
    -------
    correlation: DataArray
    """
    # 1. Broadcast the two arrays
    self, other     = xr.broadcast(self, other)

    # 2. Ignore the nans
    valid_values    = self.notnull() & other.notnull()
    self            = self.where(valid_values, drop=True)
    other           = other.where(valid_values, drop=True)

    # 3. Compute correlation based on standard deviations and cov()
    self_std        = self.std(dim=dim)
    other_std       = other.std(dim=dim)

    return cov(self, other, dim = dim)/(self_std*other_std)

@hrishikeshac that looks great! Well done for getting an MVP running.
Do you want to do a PR from this? Should be v close from here.
Others can comment from there. I'd suggest we get something close to this in and iterate from there. How abstract do we want the dimensions to be (i.e. currently we can only pass one dimension in, which is fine, but potentially we could enable multiple).
One nit - no need to use np.sum - that may cause issues with dask arrays - .sum will work fine

PR done!
Changed np.sum() to dataarray.sum()

I see that this PR never made it through and there is a somewhat similar PR finished here: https://github.com/pydata/xarray/pull/2350 though it doesn't do exactly what was proposed in this PR. Is there a suggested approach for performing cross-correlation on multiple DataArray?

Would be great to get this in, if anyone wants to have a go. A small, focused, PR would be a good start.
In the meantime you can use one of the solutions above...

Guys sorry for dropping the ball on this one. I made some changes to the PR based on the feedback I got, but I couldn't figure out the tests. Would anyone like to take this over?

I am also highly interested in this function and in contributing to xarray in general!
If I understand correctly, https://github.com/pydata/xarray/pull/2350 does not solve this PR, does it?
How can I help you finishing these PRs?

@r-beer would be great to finish this off! I think this would be a popular feature. You could take @hrishikeshac 's code (which is close!) and make the final changes.

@r-beer would be great to finish this off! I think this would be a popular feature. You could take @hrishikeshac 's code (which is close!) and make the final changes.

OK, that means to make #2652 pass, right?
I downloaded the respective branch from @hrishikeshac, and ran the tests locally.
See respective discussion in #2652.

@r-beer I checked back on this and realized I didn't reply to your question: yes re completing #2652, if you're up for giving this a push


Plugin Status

Hi,
I just wanted to know is this project is obsolete , Any plans for up up-gradation or we should now use in latest projects.
Thanks

don't think so. I did fork and uploaded new nuget based on my changes that works with AndroidX
https://www.nuget.org/packages/Kosvo.Plugin.FileUploader/

Wonderfull.


Customize socket location through DUSTY_SOCKET_PATH

@jsingle Don't think this is particularly worth integration testing, thoughts?

I agree not worth an integration test :+1:


Feedback link UI inconsistencies, icon inconsistency

System Information (please complete the following information):

Model Builder Version: <IP_ADDRESS>8102
Visual Studio Version

Describe the bug

The feedback icon (Blue Theme) appears to be filled with blue color. It should be exactly how the main feedback icon on top-right of VS is.

The 'Suggest a feature' icon inside the dropdown appears to be filled (blue theme). It should be exactly how the main feedback dropdown is on the top-right of VS.

The dropdown for Give Feedback isn't themed. It should use the same theming as the feedback dropdown (top-right of VS).

To Reproduce
Steps to reproduce the behavior:

Go to Machine Learning Model Builder

Expected behavior
Described above.
Screenshots

Additional context
Add any other context about the problem here.

I've taken a look at items 1&2. We pull our icons from this list http://glyphlist.azurewebsites.net/knownmonikers/

I'm not sure why the feedback icon is blue. In other themes it matches the same as the upper right icon. VS is automatically updating it to a dark background. This is light theme, and it matches the upper right.

I don't see an "MessageBubbleOutline" icon or similar.

It seems like the icons we have access to, and the ones being used in the upper right are different. Is there another place we should be getting icons from?

On item 3.  Here are the two menus open side by side

They seem to be the same size. A few differences...

Icons are slightly smaller on our side. We can increase the size.
Background color is different. This appears to me to be because ours launches from the white background area of the code page, and the menu launches from the gray/tan of the menu area. They are matching their parent background colors.

We can increase the icon size, but is there something else we should do to improve this?

Hi Becca,

Can we ensure that the icons are the same size as the ones on the global feedback button in VS, as well as the distance between icon and text?
The blue color of the icon is a weird issue. I will check with the icons team to see if there's any other moniker to use.
Is the problem with the "Suggest a feature" icon the same as above?
To keep it consistent with the global feedback flyout, could we make these changes?
Title case and ellipses at the end.
"Report a Bug (GitHub)..."
"Suggest a Feature (GitHub)..."

Hi Rohan!

Yes we can ensure icons size and spacing is the same.
Would be great if you can check on the blue icon moniker
Suggest a feature icon is similar. We are using the MessageBubble moniker and that is how it looks. This is the only one I see that looks correct:

Yes we can make those rename changes.

Devs:

[ ] Ensure that the icons are the same size as the ones on the global feedback button in VS, as well as the distance between icon and text
[ ] Change strings. Title case and ellipses at the end.
"Report a Bug (GitHub)..."
"Suggest a Feature (GitHub)..."

Design:

[ ] Check on which monikers we should be using for the problem icons.

@romalpani I think the monikers are correct.

Blue feedback icon: This is because ImageThemingUtilities.ImageBackgroundColor is not set and not reflecting the actual background.

Bubble icon:

The global command bar is using Comment moniker

The MessageBubble moniker looks like this in the old icon style

But we've consolidated the two monikers to have the same design in the new icon style.

You can keep your current moniker reference as MessageBubble. It'll look good once we fully deprecate the old image catalog.

I also noticed the other card images also have issues when switching themes:

@beccamc ^^ does that help?
Seems like, for the message bubble icon, we just need to wait.

Yes, thanks for the assistance here Cherry!

I am not sure what documentation this particular issue would need. May be the “Needs docs” label was attached by mistake, but I don’t see one right now on the issue.
From: Luis Quintanilla @.>
Date: Wednesday, September 1, 2021 at 2:07 PM
To: dotnet/machinelearning-modelbuilder @.>
Cc: Rohan Malpani @.>, Mention @.>
Subject: Re: [dotnet/machinelearning-modelbuilder] Feedback link UI inconsistencies, icon inconsistency (#925)
@romalpanihttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fromalpani&data=04|01|Rohan.Malpani%40microsoft.com|00bc4b33f93847807fc708d96d8c85e9|72f988bf86f141af91ab2d7cd011db47|1|0|637661272584335908|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=XPcmWuu3wt1upzCArkvdzo8zZbHHaMN5PCopX8p2Xro%3D&reserved=0 I have this as needing docs. Is there anything needed from our end?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fdotnet%2Fmachinelearning-modelbuilder%2Fissues%2F925%23issuecomment-910755639&data=04|01|Rohan.Malpani%40microsoft.com|00bc4b33f93847807fc708d96d8c85e9|72f988bf86f141af91ab2d7cd011db47|1|0|637661272584345901|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=%2BqoO%2B9W1AJzDePEqtP%2FHNGpBAOl8%2F6j4L80kRRNFA1E%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FALVJHSRY75WSNITHPPBYCNDT72IZPANCNFSM4PQ6KPYQ&data=04|01|Rohan.Malpani%40microsoft.com|00bc4b33f93847807fc708d96d8c85e9|72f988bf86f141af91ab2d7cd011db47|1|0|637661272584345901|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=v6WmdIg2l1E2ZAdXUThA1N1nsGEC3GHzf2XmCAV3NDU%3D&reserved=0.
Triage notifications on the go with GitHub Mobile for iOShttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04|01|Rohan.Malpani%40microsoft.com|00bc4b33f93847807fc708d96d8c85e9|72f988bf86f141af91ab2d7cd011db47|1|0|637661272584355894|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=ibmaeWs3s2XgnY3Y%2FwBJAmm1GP%2BanFzfNnWxv3UFqmo%3D&reserved=0 or Androidhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04|01|Rohan.Malpani%40microsoft.com|00bc4b33f93847807fc708d96d8c85e9|72f988bf86f141af91ab2d7cd011db47|1|0|637661272584355894|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=4ntyIBJpjinELvX17kAO3WpN25Q22wFgF961ThJEWaE%3D&reserved=0.

[x] Icons are larger
[x] Message icon is outline instead of filled
[x] Title case and ellipses at the end of text
[x] Smaller spacing between text and icon

Thanks @beccamc ! I forwarded this to UX team.

[x]  Icons are larger
[x]  Message icon is outline instead of filled
[x]  Title case and ellipses at the end of text
[x]  Smaller spacing between text and icon


About data management in aor

In my opinion, aor is a SPA, is a UI library of data management.
So the data module of aor is importent, need we think seriously.
Following thinking is just my opinion:

The data in the client should be synchronized with the server.

The client's data is just a snapshot of the server at a certain point in time. The traditional CGI HTML     page is generated by the server program is a reflection of the data at that time, the data displayed in the page is consistent. SPA should also like so, the data displayed on the page needs to be loaded at the same time. For example, data in the toolbar, sidebar, main content area needs to be consistent, need to synchronize with the server as much as possible in real time. However, we often get some part of the data in the SPA program, the lack of considering the associated data. On the client side, we do not know how the server side of the data is changing, we must also get all the relevant data. A small change in the client may change data of others table in server.
2.On the client side, do not attempt to manage and maintain relationships with different data.
Maintaining data relationships will only bring complexity and difficult to meet the point of view 1. Managing data is the responsibility of server-side programs, let server to send you what you need. So do not use one to many, many to many models in the client,  let server program to pack data.

About data in Redux

Redux can be used to store data snapshots, query conditions, etc.. And in the react program, Redux can also optimize the render.
Sorry for my poor english.

Thanks for sharing your opinion. I don't understand it all, and it is not all actionable. But as explained in your previous issue, this is not in the scope of admin-on-rest. I advise you to develop your ideas in your own SPA.

Load all data that whole page need at same time. After loaded, the data of component  has been in single data structure, not relative to others resource. If create, edit, delete .. in a record, reload all data.

For example, a data of customer in APPBar, user edit her orders, server may change some data in others table. we need reload all data.

It is too difficult to express in english.:(

Stop using one to many, many to many models in the client, there are JOIN in SQL, Populate in mongoose ...
Define the relations with every resource each other, once a resource been changes, reload relative others resource.

WangLarry I could not agree more. I have extracted all of the crud many or reference / reference many actions out of a version of aor and the core native complexity is slowly becoming manageable.
I also have removed Admin/ Layout and the complexity of jsonserverrestclient ( which is overwrought and unnecessarily complex   here is my verision below (i call it goFetch ) This is a great project in concept but needs a bit of editorial to get right.
  const   goFetch = (apiUrl= defaultURL ) => { return (type, resource, params) =>   {
        let url = '' ;
        const queryParameters = data => Object.keys(data).map(key => [key, data[key]].map(encodeURIComponent).join('=')).join('&')

        if  (type == 'GET_LIST'){
                            resource                 = {   'sensors' : 'sensors' , 'temp' : 'sensors'  }[resource] || resource
                            const { page, perPage }  =      params.pagination;
                            const { field, order  }  =      params.sort;
                            const query              = { ...params.filter, _sort: field, _order: order, _start: (page - 1) * perPage, _end: page * perPage, }
                            url                      =      `${apiUrl}/${resource}?${queryParameters(query)}`
       }
        const options   =   (type == 'UPDATE')       ? {    method : 'PUT' , body :  JSON.stringify(params.data)}
                        :   (type == 'CREATE')       ? {    method : 'POST', body :  JSON.stringify(params.data) }
                        :   (type == 'DELETE')       ? {    method : 'PUT' , }
                        :   {}

               url      =  (type == 'GET_ONE')       ?     `${apiUrl}/${resource}/${params.id}/one`
                        :  (type == 'UPDATE')        ?     `${apiUrl}/${resource}/${params.id}/update`
                        :  (type == 'CREATE')        ?     `${apiUrl}/${resource}/add`
                        :  (type == 'DELETE')        ?     `${apiUrl}/${resource}/${params.id}/delete` : url

      const   rHeaders  =  new Headers({ Accept: 'application/json',  });

      if (!   (options && options.body && options.body instanceof FormData))
                          rHeaders.set('Content-Type', 'application/json');
      if      (options.user && options.user.authenticated && options.user.token)
                          rHeaders.set('Authorization', options.user.token);

            return        fetch(url, { ...options, headers: rHeaders }).then( response => response.text().then( body => { let json;
                          try {  json = JSON.parse(body);  } catch (e) {}
                              return (response.status < 200  || response.status >= 300)
                               ?     Promise.reject(new Error((json && json.message) || response.statusText))
                               :     (type == 'GET_LIST')  ? {   data: (json && json.length) ? json.map(x => x) : '',   total: parseInt(response.headers.get('x-total-count').split('/').pop(), 10),   }
                               :     (type == 'CREATE' )   ? { ...params.data, id: json.id }
                               :     json } ) )
         }

Truly this entire library can be reduced down to about 750 loc of useful code.


Image sizes for editorial and other content pages

Provide desired/recommended image sizes for small/medium/large content pages (including editorial essays) so we can take advantage of wagtail resizing and image srcset attribute to provide appropriate files for different devices.
You may want to look at the Wagtail image template tag documentation. I'm guessing we'll probably want to use the max option to handle both landscape and portrait images well.

Sorry, since I just saw this, thought to reply as you might need this soon. I have put the sizes on Zeplin in the notes section of the editorial detail pages right after you asked. They are written on the desktop, tablet, and mobile designs. Please let me know if they make sense.

Wonderful, thank you @gissoo ! I see it now - I did look in Zeplin, but I don't think we've used the notes field before.


Adding fit SNAP example

"fit_snap_example.jl":

Uses the GaN data in the data folder
Generate surrogate DFT data based on the GaN model presented here: https://iopscience.iop.org/article/10.1088/1361-648X/ab6cbe
Uses snap.jl and 80% of the GaN data to create the A matrix. The matrix is generated only with the energy block.
Uses 80% of the GaN data to create the vector b
Uses GalacticOptim.jl to fit the parameters β, thus, solves A β = b
Uses 20% of the GaN data and the bispectrum components provided by snap.jl to validate the fitting.
The relative error computed during the validation is < ~2%.

ToDo:

Check if the Gan model is correct
Check ill-conditioned system

@vchuravy suggestions are welcome :-D


(#1982) Publish Spark Operator image for multiple Spark versions on r…

…elease
🛑 Important:
Please open an issue to discuss significant work before you start. We appreciate your contributions and don't want your efforts to go to waste!
For guidelines on how to contribute, please review the CONTRIBUTING.md document.
Purpose of this PR
Support multiple versions of Spark with our release process.
Proposed changes:

Builds and pushes Spark Operator built on Sparks 3.5.1, 3.4.3, and 3.3.4 as part of the release process.

Change Category
Indicate the type of change by marking the applicable boxes:

[ ] Bugfix (non-breaking change which fixes an issue)
[X] Feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that could affect existing functionality)
[ ] Documentation update

Rationale

See #1982
Checklist
Before submitting your PR, please review the following:

[X] I have conducted a self-review of my own code.
[X] I have updated documentation accordingly.
[X] I have added tests that prove my changes are effective or that my feature works.
[X] Existing unit tests pass locally with my changes.

Additional Notes

Not sure of the best way to validate this action works prior to merging.  Would be eager for feedback on testing it.

@peter-mcclonski Please resolve conflicts. Will review and merge the PR

The PR itself looks good. But I wonder if there really is a use case for building a separate image for each version. @peter-mcclonski Have you run into cases where, for example, operator built with Spark 3.4.3 and 3.5.1 result in difference behaviors?

I actually have never tried it-- internally, we've always made a habit of aligning our Operator version to whatever version of spark we're using. If it doesn't actually need to be aligned (which I recall you mentioning in the first community call), then you're right, this may not be a value-add.

Let's keep this open and see if users show interest in this feature. If we receive more thumbs up, we can maintain it; otherwise, we may consider de-scoping it.

This is great! @peter-mcclonski I think we should update the version matrix here: https://github.com/kubeflow/spark-operator?tab=readme-ov-file#version-matrix


Build against system deps, Python test fixes

Add mode to build against system versions of dependencies.
Use right Python interpreter, port Python tests to Python 2.

@axxel did you get a chance to look into using an unpatched stb version?

I totally forgot about it...
If you feel like it, please feel free to look into the possibility to treat stb_image similar to the other external dependencies. I.e. fetch it directly from github in case it is not provided by the system libraries. Then we can completely remove the copy from the repo, I believe.

Hmm, I thought the upstream version caused a big slowdown in the tests,
which was the reason for keeping the modified copy? You mentioned above
a more elaborate change which should fix that though?
The Debian package of libstb-dev contains all the stb headers used, so
once the slowdown issue is fixed, the same approach as now used for the
other dependencies should work for stb too.
A cmake patch for switching from the modified copy to the upstream and
system stb would be fairly easy, but it should probably only get merged
after fixing the slowdown.
Perhaps the right way forward would be to keep the patch modifying stb,
but delete the embedded stb copy, then auto-download stb from GitHub
and when the download happens, apply the patch modifying stb before
building against the modified stb. Then when using the system
libraries, have a separate option to build against the modified stb,
for the people who mostly want system libs but still want the speedup.
I've implemented this approach and am filing a new pull request.
--
bye,
pabs
https://bonedaddy.net/pabs3/


[Feature request] Allow ignore breakes when some apps are working

It would be nice to have option, that when some app(game runs) do not turn breaks. Or time window when breaks are just not shown. Sure it could be solve other way, but for not advanced users this seems like simplest solution. So I think adding blacklist of apps that when running not turn on breaks.
Expected behavior: When added process is running not activate breaks.
Actual behavior: Breaks run no matter what process is running.
Reproduces how often: always
Additional Information
This might require some knowledge of what is working, but it should not be problem(similar mechanism I saw in f.lux)
version 1.5.0

https://github.com/hovancik/stretchly#pauseresume-breaks-only-when-specific-command-is-running

note: windows version is currently broken but fix will be out this weekend


Explain that npm run styles is designed to be a background process

Signed-off-by: tpmccallum<EMAIL_ADDRESS>

It would also be nice to mention that it is not necessary unless editing the scss file as the css files are already checked in.


Mismatch in query results in the local machine

When I run the sqllogictests on my computer, all query results including a NaN value give an error in scalar.slt file. Some examples:
External error: query result mismatch:
[SQL] select round(ln(a), 5), round(ln(b), 5), round(ln(c), 5) from signed_integers;
[Diff] (-expected|+actual)
-   -NaN 4.60517 -NaN
-   -NaN 9.21034 -NaN
-   0.69315 -NaN 4.81218
-   1.38629 NULL NULL
+   0.69315 NaN 4.81218
+   1.38629 NULL NULL
+   NaN 4.60517 NaN
+   NaN 9.21034 NaN
at test_files/scalar.slt:543

External error: query result mismatch:
[SQL] select log(a, 64) a, log(b), log(10, b) from signed_integers;
[Diff] (-expected|+actual)
-   -NaN 2 2
-   -NaN 4 4
    3 NULL NULL
-   6 -NaN -NaN
+   6 NaN NaN
+   NaN 2 2
+   NaN 4 4
at test_files/scalar.slt:595

Rows with NaN values are somehow listed towards the end of the table. So the tests don't pass in my local but in CI I don't get an error. Do you have any opinion about this problem?

Expected -NaN results in the query outputs become NaN in my local tests. What could be the reason for this? As far as I know, there is no -NaN in IEEE 754.

I encountered the same error on my ARM MacBook.
Running "scalar.slt"
External error: query result mismatch:
[SQL] select round(ln(a), 5), round(ln(b), 5), round(ln(c), 5) from signed_integers;
[Diff] (-expected|+actual)
-   -NaN 4.60517 -NaN
-   -NaN 9.21034 -NaN
-   0.69315 -NaN 4.81218
-   1.38629 NULL NULL
+   0.69315 NaN 4.81218
+   1.38629 NULL NULL
+   NaN 4.60517 NaN
+   NaN 9.21034 NaN
at test_files/scalar.slt:543

Error: Execution("1 failures")
error: test failed, to rerun pass `-p datafusion-sqllogictest --test sqllogictests`

I encountered the same error on my ARM MacBook.
Running "scalar.slt"
External error: query result mismatch:
[SQL] select round(ln(a), 5), round(ln(b), 5), round(ln(c), 5) from signed_integers;
[Diff] (-expected|+actual)
-   -NaN 4.60517 -NaN
-   -NaN 9.21034 -NaN
-   0.69315 -NaN 4.81218
-   1.38629 NULL NULL
+   0.69315 NaN 4.81218
+   1.38629 NULL NULL
+   NaN 4.60517 NaN
+   NaN 9.21034 NaN
at test_files/scalar.slt:543

Error: Execution("1 failures")
error: test failed, to rerun pass `-p datafusion-sqllogictest --test sqllogictests`

Same.

Expected -NaN results in the query outputs become NaN in my local tests. What could be the reason for this? As far as I know, there is no -NaN in IEEE 754.

I also think so.
We can accept +NAN and -NAN as inputs just like PostgreSQL does. However, when outputting, it should no longer differentiate them because NAN represents an exception and the sign is no longer meaningful.
postgres=# select '+NAN'::float,'+NAN'::float;
 float8 | float8
--------+--------
    NaN |    NaN
(1 row)


Create an integration module for Pivotal Reactor

Support
Flux
Mono

https://github.com/aol/cyclops/pull/195


Migrate: ESLint configuration

Migrate ESLint configuration from .eslintrc.js to eslint.config.js.
From ESLint v9.0.0, the default configuration file is now eslint.config.js. Linting app/trench fails with the old configuration file.

Please make sure existing tests pass, and I'll be happy to review.

Test and build run successfully on my machine.
Looks like the errors in the GitHub workflow are TypeScript errors from ../../node_modules. The tsconfig.json includes an exclusion for node_modules. Maybe this should be changed to **/node_modules/**?
https://github.com/FrigadeHQ/trench/blob/6c276c3fa28a05961c650a37e24dba56d6dfea82/tsconfig.json#L36

Test and build run successfully on my machine.
Looks like the errors in the GitHub workflow are TypeScript errors from ../../node_modules. The tsconfig.json includes an exclusion for node_modules. Maybe this should be changed to **/node_modules/**?
https://github.com/FrigadeHQ/trench/blob/6c276c3fa28a05961c650a37e24dba56d6dfea82/tsconfig.json#L36

@esadek could you try updating it to **/node_modules/** to see if this solves the build errors? Once resolved we should be good to merge.


Make WebAssembly bundling work with wasm-bindgen

Clear and concise description of the problem
Hey! This is a feature request to add support for wasm-bindgen, a library to facilitate high-level interactions between Wasm modules and JavaScript for Rust.
wasm-bindgen has several output formats for generating Wasm <-> JS glue code, which most notably are web and bundler. I was hoping that the bundlertarger would be compatible with Vitejs, but unfortunately it's not. The output for the bundler target roughly looks like this:
// app.js
import * as wasm from "./app_bg.wasm";
export * from "./app_bg.js";

// app_bg.js
import * as wasm from './app_bg.wasm';
// ...
export function myWasmFunction() {
    wasm.myWasmFunction();
}

for this code:
async function main() {
  const wasmModule = await import('./app');
  wasmModule.myWasmFunction();

Suggested solution
There should be an alternative way to bundle Wasm files, which also supports dynamic import function. Probably add this as an option to the serve and build command or if possible auto detect.
Alternative
No response
Additional context
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

This might be a similar issue to #4551. One thing is clear not all wasm files are importable by vite as described in the docs. I had to struggle a lot before managing to get rust compiled wasm files to work with vite. Will be great to at least produce some guidance on expected wasm format.

This might be a similar issue to #3847. One thing is clear not all wasm files are importable by vite as described in the docs. I had to struggle a lot before managing to get rust compiled wasm files to work with vite. Will be great to at least produce some guidance on expected wasm format.

I agree. I tried using a wasm-markdown packages for a while, had headaches for days trying to solve it, but in the end i gave up when I could not get it to work.

Just a quick info, if somebody else is looking here for a solution to load wasm modules generated by wasm pack (with target web, not bundler):
This didn't work for me
import init, { myMethod } from 'myWasmPackage'
init().then(() => console.log(myMethod ))

But importing the url with vite works:
import init, { myMethod } from 'myWasmPackage'
import wasmUrl from 'myWasmPackage/my_wasm_package_bg.wasm?url'
init(wasmUrl).then(() => console.log(myMethod())

Just a quick info, if somebody else is looking here for a solution to load wasm modules generated by wasm pack (with target web, not bundler):
This didn't work for me
import init, { myMethod } from 'myWasmPackage'
init().then(() => console.log(myMethod ))

But importing the url with vite works:
import init, { myMethod } from 'myWasmPackage'
import wasmUrl from 'myWasmPackage/my_wasm_package_bg.wasm?url'
init(wasmUrl).then(() => console.log(myMethod())

But getting the bundler target to work with vite would be even better :)

what exactly does the init refer to?

The init function is generated by wasm-pack automatically when using the web target (more info). It loads the actual wasm file so you have to call it before you can use your wasm functions.

I found the problem is that the wrapper module .wasm?import generated by Vite does NOT exported the named-exports from the WebAssembly exports object. Instead it export the exports object as the default.
If we change the import statement in wasm-bindgen's JS file from a star import, which imports all named-exports as an object, to a default import, which properly imports Vite's wrapper's exported object:
-import * as wasm from './syntect_bg.wasm';
+import wasm from './syntect_bg.wasm';

It works.

I changed the wasm plugin to match the behavior of Webpack 5's asyncWebAssembly and WebAssembly's esm-integration proposal.
Only simple named/default imports/exports of functions are supported at this time. I tested my module syntect-js and it's working as expected (just like in Webpack 5).
My patch is here: https://github.com/Menci/vite/commit/1a19965b2247b6a10b9711470fe0fcbaf5fb93ee

I have published my solution as a plugin: https://github.com/Menci/vite-plugin-wasm. This works for both modern and legacy browsers.

ESM Integration proposal for Wasm is now stage 3 and the related PR in HTML spec (https://github.com/whatwg/html/pull/10380) has been merged.
I think we can have it builtin.
Although, I guess it will require top-level-await support and might encounter a bug in rollup (https://github.com/rollup/rollup/issues/4708).


[BUG] Docs - Helmets and swords in Vegetation list

Details:  Items placed in wrong category
Jotunn Version: latest
Jotunn Submodule(if applicable): doc generator
Repeatability(Consistent(100%), Inconsistent(50%), Rare(1%), Unknown(==1)): current
Problem Description:
Looking at "https://valheim-modding.github.io/Jotunn/data/zones/vegetation-list.html" that uses Jotunn Docs modules items like:

giant_helmet1
giant_helmet2
giant_sword1
giant_sword2

are in the Vegetation
Expected Behaviour:
Should be in Locations list together with:

Mistlands_Swords1
Mistlands_Swords2
Mistlands_Swords3

Actual Behaviour:
What actually occurs
Link to your server's and client's LogOutput.log
Upload to https://pastebin.com or simliar service

It's actually how the devs implemented it. There are locations and vegetation for those swords and giants. The locations you listed as examples are in the location list. Just double checked in the rip.


ADM-OSC "mode" On any DAW plugin's

Hi everyone,
I'm continuing my exploration of multi-brand user ideas around ADM-OSC. The goal is to allow the adaptation of OSC parameters written in automation within a DAW to ADM OSC.
To avoid going through gateways, wouldn't it be interesting to switch the manufacturers' proprietary syntax plugins to the values decided by ADM-OSC?
This could even become an ADM-OSC PANNER directly recognized by the DAW with an interface.
We agree that for now it would only be about validated parameters, but it would allow us to keep the same working session in direct communication but with universal parameters.

The workflow you suggest is implemented in Nuendo for example.
For cartesian coordinates at least 🙂
You can select Atmos Renderers, MPEG-H renderers, or external renderers. In the last case, ADM-OSC is used.
My personal belief is that all DAWs should be able to natively share the objects coordinates properties via ADM-OSC, without the need for a plugin.
Some lobbying needed for other DAWs to follow what the Nuendo team has done!

From: JPagnier @.>
Sent: 04 June 2024 16:22
To: immersive-audio-live/ADM-OSC @.>
Cc: Subscribed @.***>
Subject: [immersive-audio-live/ADM-OSC] ADM-OSC "mode" On any DAW plugin's (Issue #28)
Hi everyone,
I'm continuing my exploration of multi-brand user ideas around ADM-OSC. The goal is to allow the adaptation of OSC parameters written in automation within a DAW to ADM OSC.
To avoid going through gateways, wouldn't it be interesting to switch the manufacturers' proprietary syntax plugins to the values decided by ADM-OSC?
This could even become an ADM-OSC PANNER directly recognized by the DAW with an interface.
We agree that for now it would only be about validated parameters, but it would allow us to keep the same working session in direct communication but with universal parameters.
—
Reply to this email directly, view it on GitHubhttps://github.com/immersive-audio-live/ADM-OSC/issues/28, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAPEOR6DM2SEHQNACTRA4NTZFXLTXAVCNFSM6AAAAABIYYBLI2VHI2DSMVQWIX3LMV43ASLTON2WKOZSGMZTGOBQHE2TONY.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

Hi Guillaume !
Interesting thoughts, what would be the use case to connect several DAW by OSC ? As I come from live applications, I cannot really figure this out... but it reminds me the OMF initiative when I was student 20 years ago, seeking for perfect production workflow for sound editing and mixing with the new Dolby Digital :-) https://fr.wikipedia.org/wiki/Open_Media_Framework_Interchange?wprov=sfti1

@JPagnier here we can exchange on how to push ADM over OSC, to bridge real-time (live!) applications to broadcast and posts. Not sure we can be a lobby on DAW features, but yes, we would all dream to see objects based surrounds planners in every DAWs ;-)

@GuillaumeLeNost Thank you Guillaume for your response. Indeed, I already use a lot this little miracle of the Surround Panner in Nuendo with its adjustable syntax.
But I really suggest not to confine an artist with their production made with a Spat revolution or a Soundscape with an external bridge when we could directly change the syntax of the plugin to ADM-OSC

On its way as Nuendo, Avid Protools, Reaper and Sequoia at least already implemented ADM/MPEG-H and surround panning

@madees  Ok cool but how do you tranform your d&b Soundscape production to an ADM/MPEG-H panning on this DAW list...
only dolby atmos can do that today

If I get right this topic, you asked for plugins that can output ADM-OSC to/from panner ? Like auto pan, Leslie, virtual instruments, effects etc but object based outputs to send to renderer ?
Having a common OSC grammar should help this also

This issue is the same as here: https://github.com/immersive-audio-live/ADM-OSC/issues/10


Ripple not working inside recyclerview

Ripple effects is not activated when we use this inside of the recyclerview.
Initially when the view is loaded then it shows the ripple animation but when scroll to the bottom and then scroll back up , many of the view don't have the ripples activated.
This is my basic initialization of the ripple view
ripple = (ShapeRipple) view.findViewById(R.id.ripple);
ripple.setRippleShape(new Circle());
ripple.setEnableStrokeStyle(false);
ripple.setRippleColor(Color.parseColor("#f9005f"));
ripple.setRippleDuration(1000);
ripple.setRippleCount(5);

You can always start the ripple with ripple.startRipple() every time the recyclerview view holder is rendered in the list.

I tried the above said implementation. On the BindViewHolder method I added the code to start the ripple.
But there seems to be some problem with the fling action. Whenever I fling to the bottom and scroll back up , some of the ripples don't animate. Not really sure what is causing this.
Can this be because of the LifeCycleManager class which is stopping and restarting the ripples ?

I also activated the debug mode of the shape ripple and it keeps giving me these logs

D/ShapeRipple: There are no ripple entries that was created!!
E/ShapeRipple: The view dimensions was not calculated!!

Can you help me understand what is going wrong here ??


panic: move cursor value is out of bounds after any command with ANSI escape sequences

I get the following panic when trying to use termshot -- pfetch and termshot -- "./simple-go-cli-program", the latter just prints plain text, it's a tiny go program I wrote to test.
I think this has to do with color handling in my terminal? Though, I'm not sure why my Go program (only using log.Printf) would have any color escapes in the output.
panic: move cursor value is out of bounds

goroutine 1 [running]:
github.com/gonvenience/bunt.ParseStream.func4()
	github.com/gonvenience/bunt@v1.3.5/parse.go:144 +0x1a8
github.com/gonvenience/bunt.ParseStream({0x102456738?, 0x1400016ac00?}, {0x0, 0x0, 0x1400033f000?})
	github.com/gonvenience/bunt@v1.3.5/parse.go:225 +0x3b0
github.com/homeport/termshot/internal/img.(*Scaffold).AddContent(0x14000123bb8, {0x102456738?, 0x1400016ac00?})
	github.com/homeport/termshot/internal/img/output.go:118 +0x3c
github.com/homeport/termshot/internal/cmd.glob..func1(0x1026eca80?, {0x1400016aba0?, 0x1, 0x3})
	github.com/homeport/termshot/internal/cmd/root.go:120 +0x39c
github.com/spf13/cobra.(*Command).execute(0x1026eca80, {0x14000132050, 0x3, 0x3})
	github.com/spf13/cobra@v1.7.0/command.go:940 +0x5c8
github.com/spf13/cobra.(*Command).ExecuteC(0x1026eca80)
	github.com/spf13/cobra@v1.7.0/command.go:1068 +0x35c
github.com/spf13/cobra.(*Command).Execute(...)
	github.com/spf13/cobra@v1.7.0/command.go:992
github.com/homeport/termshot/internal/cmd.Execute()
	github.com/homeport/termshot/internal/cmd/root.go:162 +0x64
main.main()
	./main.go:26 +0x1c

Using the following answer from StackoverFlow with pfetch does indeed work as expected, though without and color or formatting.
Terminal info:

If there's any other info I can help provide, please let me know.

Okay I can't repro the issue with my Go CLI program anymore, idk what's up, pfetch does still reproduce this every time.

I have the same error :
Saving session...completed.
panic: move cursor value is out of bounds

goroutine 1 [running]:
github.com/gonvenience/bunt.ParseStream.func4()
	github.com/gonvenience/bunt@v1.3.5/parse.go:144 +0x1a8
github.com/gonvenience/bunt.ParseStream({0x1047ba738?, 0x140000e8ba0?}, {0x0, 0x0, 0x140002d7000?})
	github.com/gonvenience/bunt@v1.3.5/parse.go:225 +0x3b0
github.com/homeport/termshot/internal/img.(*Scaffold).AddContent(0x140000abbb8, {0x1047ba738?, 0x140000e8ba0?})
	github.com/homeport/termshot/internal/img/output.go:118 +0x3c
github.com/homeport/termshot/internal/cmd.glob..func1(0x104a50a80?, {0x14000099470?, 0x1, 0x1})
	github.com/homeport/termshot/internal/cmd/root.go:120 +0x39c
github.com/spf13/cobra.(*Command).execute(0x104a50a80, {0x140000be010, 0x1, 0x1})
	github.com/spf13/cobra@v1.7.0/command.go:940 +0x5c8
github.com/spf13/cobra.(*Command).ExecuteC(0x104a50a80)
	github.com/spf13/cobra@v1.7.0/command.go:1068 +0x35c
github.com/spf13/cobra.(*Command).Execute(...)
	github.com/spf13/cobra@v1.7.0/command.go:992
github.com/homeport/termshot/internal/cmd.Execute()
	github.com/homeport/termshot/internal/cmd/root.go:162 +0x64
main.main()
	./main.go:26 +0x1c

It's working with bash but not with zsh

I don't have oh my zsh at all. my entire zshrc: https://github.com/homeport/termshot/issues/177
cmds and env are just defined functions that don't interact with anything else

I have the same with a symfony/console based output, in my case "composer install":
termshot -- composer require cweagans/composer-patches:2.0.0-beta2 --no-scripts --no-ansi -n

leading to crash:
github.com/gonvenience/bunt.ParseStream.func6(...)
        github.com/gonvenience/bunt@v1.3.5/parse.go:191
github.com/gonvenience/bunt.ParseStream({0x103303958?, 0x1400014ecc0?}, {0x0, 0x0, 0x1400038a808?})
        github.com/gonvenience/bunt@v1.3.5/parse.go:234 +0x66c
github.com/homeport/termshot/internal/img.(*Scaffold).AddContent(0x14000163aa8, {0x103303958?, 0x1400014ecc0?})
        github.com/homeport/termshot/internal/img/output.go:118 +0x3c
github.com/homeport/termshot/internal/cmd.init.func1(0x1035da620, {0x1400012a240, 0x5, 0x6})
        github.com/homeport/termshot/internal/cmd/root.go:120 +0x450
github.com/spf13/cobra.(*Command).execute(0x1035da620, {0x14000136010, 0x6, 0x6})
        github.com/spf13/cobra@v1.8.1/command.go:985 +0x834
github.com/spf13/cobra.(*Command).ExecuteC(0x1035da620)
        github.com/spf13/cobra@v1.8.1/command.go:1117 +0x344
github.com/spf13/cobra.(*Command).Execute(...)
        github.com/spf13/cobra@v1.8.1/command.go:1041
github.com/homeport/termshot/internal/cmd.Execute()
        github.com/homeport/termshot/internal/cmd/root.go:161 +0x58
main.main()
        ./main.go:26 +0x1c


MosekSolver not defined

Hi, I am using Convex.jl along with Mosek.jl to solve an optimization problem.
When I try to run the following:
using Convex;
using Mosek;
problem = Convex.minimize(cost, constraints);
solve!(problem, MosekSolver());
it keep says "MosekSolver not defined". However, when I do Pkg.test("Mosek") it successfully passes all issues.
Can someone please help me on this... I've installed Mosek 9.0. I've already seen previous issue on this and it seems it does not resolve mine.
I even tried: Pkg.add(Pkg.PackageSpec(name="Mosek", rev="master"))
and still I cannot resolve this issue... Thanks.

The support for MathProgBase was removed:
https://github.com/JuliaOpt/Mosek.jl/blob/f727e24a146ebf35f766db252b27ba09fb375ed2/src/Mosek.jl#L288-L295
Use either an older version of Mosek.jl or using the MathOptInterface:
https://github.com/JuliaOpt/MosekTools.jl
that can be used with JuMP v0.19 and later.
@ericphanson is working on the transition of Convex.jl to MathOptInterface

Ok Thanks. Does that mean Convex.jl cannot use the newer version of Mosek.jl along with Mosek 9.0? I wonder this because my problem involes with exponential cone problem which older version of Mosek cannot solve...
Also, can you help me how to use older version of Mosek.jl?
I tried Pkg.add("Mosek", v"0.8.0")  but it seems not working.
Thanks alot!

Does that mean Convex.jl cannot use the newer version of Mosek.jl along with Mosek 9.0?

Yes, looking at the code it seems like the versions of Mosek.jl compatible with Mosek 9.0 removed MathProgBase support which Convex relies on to send the problems to the solver.
If you're willing to try something a bit more work-in-progress, you can try using Convex with MathOptInterface (which is compatible with Mosek 9.0) already (or you can wait until we release it as part of Convex.jl proper). First, you need to add my branch of Convex, and MosekTools
]add https://github.com/ericphanson/Convex.jl#MathOptInterface
]add MosekTools

and then use it just as before, with Mosek.Optimizer() replacing MosekSolver():
using Convex, MosekTools
...
solve!(problem, Mosek.Optimizer())

With SCS, this branch passes almost all of Convex's tests; just a few things fail which weren't implemented yet. I also didn't implement getting dual variables for constraints yet. That being said, there definitely could be bugs; if use this branch and find any bugs, please report them on the usual Convex.jl repo (https://github.com/JuliaOpt/Convex.jl) and mention you're using my MOI branch. That would be very helpful!

Thanks for the comment. However, I tried following:
Pkg.add(PackageSpec(url="https://github.com/ericphanson/Convex.jl") )
Pkg.add("MosekTools) )
and try
using Convex, MosekTools
...
solve!(problem, Mosek.Optimizer())
but it still gives me error
MethodError: no method matching solve!(::Problem, ::MosekModel)
Closest candidates are:
solve!(::Problem; warmstart, check_vexity, verbose) at /Users/jongho/.julia/packages/Convex/cow0j/src/solution.jl:21
solve!(::Problem, !Matched::MathProgBase.SolverInterface.AbstractMathProgSolver; kwargs...) at /Users/jongho/.julia/packages/Convex/cow0j/src/solution.jl:12
I guess the problem is Convex.jl with MathOptInterface not working well.
When I try
Pkg.add(PackageSpec(url="https://github.com/ericphanson/Convex.jl#MathOptInterface") )
it gives error:
failed to clone from https://github.com/ericphanson/Convex.jl#MathOptInterface
Is the branch of Convex correct..? Thanks.

I see, I tried using Convex with MathOptInterface and MosekTools and it works.
Thanks.

Oh One more thing...
I got the following error:
Cannot convert an object of type MathOptInterface.ZeroOne to an object of type MathOptInterface.AbstractVectorSet
I guess it is issue with MathOptInterface... right?

It looks like Convex with MathOptInterface and MosekTools cannot work with mixed integer (e.g. Boolean) problem?
I tried following toy example and it gives the same error:
Data taken from http://people.sc.fsu.edu/~jburkardt/datasets/knapsack_01/knapsack_01.html
w = [23; 31; 29; 44; 53; 38; 63; 85; 89; 82]
C = 165
p =  [92; 57; 49; 68; 60; 43; 67; 84; 87; 72];
n = length(w)
using Convex, MosekTools
x = Variable(n, :Bin)
problem = maximize(dot(p, x), dot(w, x) <= C)
solve!(problem, Mosek.Optimizer())
MethodError: Cannot convert an object of type MathOptInterface.ZeroOne to an object of type MathOptInterface.AbstractVectorSet

Ah, thanks for the report! That's my fault; I just pushed a fix, so if you do ] up Convex it should pull it down. Note that it seems MosekTools needs MathOptInterface version 0.8 while the latest is version 0.9 it seems; to get it to run, I had to do
]rm MosekTools
]add<EMAIL_ADDRESS>MosekTools

otherwise it gave errors about ambiguous methods. It turns out also I wasn't testing as much as I thought I was, and it turns out one of the tests for matrixfrac is failing on my branch; I'll try to get that fixed soon.

otherwise it gave errors about ambiguous methods

MosekTools v0.9 should work with MOI v0.9, could you file a bug report to MosekTools with the error you get ?

Looking at it again, I think it's not an error with MosekTools but rather with my MOI branch:
ERROR: MethodError: MathOptInterface.supports_constraint(::Convex.MOIModel{Float64}, ::Type{MathOptInterface.SingleVariable}, ::Type{MathOptInterface.ZeroOne}) is ambiguous. Candidates:
  supports_constraint(model::Convex.MOIModel{#156#T}, ::Type{#s110} where #s110<:Union{SingleVariable, ScalarAffineFunction{#156#T}}, ::Type{#s108} where #s108<:Union{Integer, ZeroOne}) where #156#T in Convex at /Users/eh540/.julia/packages/MathOptInterface/mvlGI/src/Utilities/model.jl:997
  supports_constraint(::MathOptInterface.Utilities.AbstractModel{T}, ::Type{MathOptInterface.SingleVariable}, ::Type{#s176} where #s176<:Union{Integer, ZeroOne, EqualTo{T}, GreaterThan{T}, Interval{T}, LessThan{T}}) where T in MathOptInterface.Utilities at /Users/eh540/.julia/packages/MathOptInterface/mvlGI/src/Utilities/model.jl:469
Possible fix, define
  supports_constraint(::Convex.MOIModel{T}, ::Type{MathOptInterface.SingleVariable}, ::Type{#s176} where #s176<:Union{Integer, ZeroOne})

Sorry for blaming MosekTools!

@ericphanson No problem ;) You can fix it with the hint given by the first bullet here: https://github.com/JuliaOpt/MathOptInterface.jl/issues/736

Hi,
I am using following package versions
"Convex"           => v"0.12.2"
"Mosek"            => v"1.0.4"
"MathOptInterface" => v"0.8.4"
and tried this problem:
Data taken from http://people.sc.fsu.edu/~jburkardt/datasets/knapsack_01/knapsack_01.html
w = [23; 31; 29; 44; 53; 38; 63; 85; 89; 82]
C = 165
p =  [92; 57; 49; 68; 60; 43; 67; 84; 87; 72];
n = length(w)
using Convex, MosekTools
x = Variable(n, :Bin)
problem = maximize(dot(p, x), dot(w, x) <= C)
solve!(problem, Mosek.Optimizer())
Although it seems work, I realized that all values of x's are NaN.
problem.optval = 309.0
x
Variable of
size: (10, 1)
sign: NoSign()
vexity: AffineVexity()
value: [NaN; NaN; NaN; NaN; NaN; NaN; NaN; NaN; NaN; NaN]
Since there is no error in MosekTools, I guess it is issue with Convex.jl ??

Yup, another bug, thanks again! That is now fixed, as is the incompatability with MathOptInterface 0.9. I also added MathOptInterface v0.9 to the compat entry, which means you shouldn't have to specify a version yourself (and if you have pinned it to 0.8 like I suggested earlier, you'll need to remove it with ]rm MathOptInterface first, and then update to the latest version of my branch with ]up Convex).
I also rewrote much of the interface with MOI so it should be more performant (we no longer generate the old MathProgBase standard form first and then send it to MOI, instead sending it a bit more directly).

Thanks, I think it now works (meaning Convex.jl along with MosekTools v0.9)
Is it possible to set time limit for Mosek.Optimizer() ??
when I try
Mosek.Optimizer(TimeLimit=1000)

it gives me
MOSEK error 1207: The parameter name 'MSK_IPAR_TimeLimit' is invalid for an int parameter.