HC-363: catch errors copying additional paths for triage

This PR adds more robust exception handling in the triage post-processor function and prevents jobs from failing when there are issues accessing additional file/directory globs. A new unit test was also added to test this feature.

@mcayanan: sorry pushed one more update for HC-358. Can you re-review?


Login fails since firmware AR<IP_ADDRESS>_082720_711.SIP.10

Since firmware version AR<IP_ADDRESS>_082720_711.SIP.10 login fails with HTTP 403 Forbidden.
Changing the ajaxSet_Password.php request from PUT to POST fixes the issue.
https://github.com/diveflo/arris-tg3442-reboot/blob/7b1e76f2af922ccb7c447b54040e60d314c385bf/arris-tg3442-reboot.py#L52

Thanks a million! IPV6 host exposure is now available ...

Since firmware version AR<IP_ADDRESS>_082720_711.SIP.10 login fails with HTTP 403 Forbidden.
Changing the ajaxSet_Password.php request from PUT to POST fixes the issue.
https://github.com/diveflo/arris-tg3442-reboot/blob/7b1e76f2af922ccb7c447b54040e60d314c385bf/arris-tg3442-reboot.py#L52

The restart request also needs to be changed from PUT to POST. Else it will silently fail with a 403.
https://github.com/diveflo/arris-tg3442-reboot/blob/master/arris-tg3442-reboot.py#L93

Hi,
I'm working on adding support for this firmware (and the similarly working firmware <IP_ADDRESS>.EURO.PC20) - thanks for figuring out the fix!
Could you tell me what the "short name" for the firmware is? Unfortunately I only have <IP_ADDRESS>.EURO.PC20 currently.
You should be able to see it on the login page written at the bottom and as the property _ga.swVersion if you check the page source.

_ga.swVersion = '<IP_ADDRESS>.EURO.SIP';

I've forked the latest version and implemented the two adaptions from here + some quality of life changes. https://github.com/Mershl/arris-tg3442-reboot
It's working perfectly with <IP_ADDRESS>.EURO.SIP

I'd like to still support the old versions as I've actually had Vodafone roll-back my firmware more than once ¯_(ツ)_/¯
Your quality changes sound good though - if you have the time feel free to open up a pull request 👍
I'll push the support for the new firmware in a minute, would be great if you could give it a try:)

@Mershl Thanks for the pull request:)
You've tested it with your firmware, right? So we should be able to close this.
@debfx if it doesn't work for you for some reason please reopen this!

@diveflo Yes. Working perfectly on <IP_ADDRESS>.EURO.SIP.


Allow for Creation of Child Contexts, with Inheritance

One nice feature to have would be the ability to make contexts that can produce child contexts.
One existing implementation of this idea can be found here: https://github.com/Wolfy87/venturi
The use cases for this feature include:

setting up overrides for testing
setting up different contexts for different sections of an application

ok, I know it's a year later, but I found this email in my inbox again and it got me thinking about it. Would the ideal solution just be to have your test suite store a copy of the stubbed infectable objects and then write a small function to "restore" their state to the copies? As I see it, your main issue is that your test may mutate your objects, maybe I'm misunderstanding your issue though.


[WIP] Proposal for storing database wide metadata

This is a proposal for adding a extensible but static format for storing data outside of a transaction.
The rationale is have a file that can store a dictionary of values. The values of the dictionary can be all types that have a type code, meaning all that are covered by the basic serializer/materializer. These don't need a behavior registry and do not interfer with the inner workings of the database.
The format is extensible as it is a method that defines it like:
format
	^ {
		{ #lastOpened . [ DateAndTime now ] . 33  } .
		{ #lastModified . [ DateAndTime now ] . 33  } .
		{ #foo . [ 0 ] . 8 } }

The definition is:

the name of the property to store (here lastOpened, etc.)
a block that returns the initial value for the property and therefor the type of the value
the fixed size needed for the storage of the value. In the example above this is 33 for DateAndTime (32 contents + 1 size byte), 8 for Integer (this is written via length encoded integer so no overhead). The resulting storage sizes computed are 34 for DateAndTime (33 + 1 type code) and 9 for Integer (8 for contents and 1 type code)

As long as we make the class registerable a user of the database can created a subclass and register that which allows to have custom formats per use case

The serialization of DateAndTime to string is just a short cut for now. This is likely to be changed


Increase the currency：netm

TEAM:
Steven Golestani
Co-Founder of Distilled Analytics
Masters in Computer at Northeastern University
Software Engineer in Google 2015
Vincent Sinofsky
Director of Web Applications, CSM
VP of Engineering at Pliralsight
Sr. Technical Product Manager at Amazon
Anna Feinberg
Territory Manager at Lawson Products
Sales Director at Platinum Recruiting
Dmitry Shevelenko
Business Advisor at marcus evans Group
Website: www.netmchain.com
White paper：https://www.netmchain.com/NETM white paper.pdf
Twitter: https://twitter.com/MofficialNet
Telegram channel: https://t.me/NetmChain
Email<EMAIL_ADDRESS>Bitcointalk: https://bitcointalk.org/index.php?topic=5025736.msg45488878#msg45488878
github：https://github.com/netmofficial
Smart contract address: 0xe30a76ec9168639f09061e602924ae601d341066
ICO：1ETH=200,000NETM
GAS:60000

Please submit a transparent background logo

请提交透明背景标志
已经重新提交，麻烦看一下#2514

你好，以及合并#2514


DF Manual Rolls: Initiative rolls doesn't prompt for input

Module
DF Manual Rolls 2.0.0
Describe the issue
Rolling initiative from the Combat tracker doesn't prompt for inputs.
To Reproduce
Steps to reproduce the behavior:
Roll from Combat tracker, either "Roll NPCs", "Roll All" or individually. Neither produces a Manual Rolls dialog.
(No other modules active, FVTT 0.8.6)

Yeah this looks like foundry is still using Sync Rolls for initiative. I'll try patching the foundry core functions for this and see if I can get it working.

I was able to get it working :+1:


Filters for individual columns

I'm submitting a ...  (check one with "x")
[ ] bug report => search github for a similar issue or PR before submitting
[x] feature request
[ ] support request => Please do not submit support request here, post on Stackoverflow or Gitter

Current behavior
There is no option for column filters inside ngx datatable
Expected behavior
It would be very useful if filters for every column are implemented as option.
Reproduction of the problem

What is the motivation / use case for changing the behavior?

Please tell us about your environment:

Table version: 0.8.x

Angular version: 2.0.x

Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]

Language: [all | TypeScript X.X | ES6/7 | ES5]

My client has been asking for this for also. Any chance we can bump this or let us know if it'll be considered at some point?

Its very easy to implement your own filtering with templates. This is one of these features that we do not plan to implement because of the degree of variations and cases it can involve. I want the table to focus on displaying the data you give it, not making opinions about your data and what controls and how you get it.
See for more info: https://swimlane.gitbooks.io/ngx-datatable/content/introduction/architecture.html

@saeedjassani  not sure what happened to the plunker. I am no longer able to view it. Will try creating one and post once its done. Sorting is also possible.

NP. I created my own and it's working properly. Thanks!
On 20 April 2018 at 03:55, Minu Francis<EMAIL_ADDRESS>wrote:

@saeedjassani https://github.com/saeedjassani not sure what happened to
the plunker. I am no longer able to view it. Will try creating one and post
once its done. Sorting is also possible.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/swimlane/ngx-datatable/issues/1085#issuecomment-382899521,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ALTh8IItLCZ1Egdiy5PJu8A621W9EwtCks5tqQ7jgaJpZM4QJGxy
.

--
Thanks and Regards,
Saeed Jassani.

@saeedjassani Can you please provide the working example ?

@yirony199 can you share your working case?

@yirony199 @saeedjassani @francisminu Is it possible for any of you to share your working case via plunker or some other method? I haven't been able to figure this out.

For some weird reason, my plunks are not running as expected. Please try the below:
.HTML file:
<ngx-datatable
#myTable
class='material'
[rows]='createdTicketRows'
[columnMode]="'force'"
[headerHeight]="50"
[footerHeight]="50"
[rowHeight]="30"

<ngx-datatable-column prop="PropertyName" [minWidth]="200" height="100">
PropertyName
<input
type='text'
id="PropertyName"
style='width:100%;height:30px;border:1px;'
placeholder='Filter..'
(keyup)='FilterData($event)'
/>
.TS file:
@ViewChild(DatatableComponent) myTable: DatatableComponent;
tempData = actualData;
FilterData(event) {
let columnName = event.currentTarget.id;
const val = event.target.value.toLowerCase();
const filteredData = this.tempData.filter(function(d) {
return d[columnName].toLowerCase().indexOf(val) !== -1 || !val;
});
this.actualData= filteredData;
this.myTable.offset = 0;
}
Let me know if this works.

@COLTstreet Hey, did you get a chance to try this?

Based on the question, I was under the impression it would be individual column filters. I believe your solution is a one input global filter (which works). But not quite what I was looking for. I've moved away from this to agGrid since it has what I'm looking for. I appreciate the follow-up response though. Thanks!

@COLTstreet
For example, I use (keyup)="updateFilter($event, column.prop)"
And then in my function
return d[propName].toLowerCase().indexOf(val) !== -1 || !val;
So its working for every filter for his column 👍

https://codesandbox.io/s/swimlane-filter-table-frtzd

https://codesandbox.io/s/swimlane-filter-table-lldho


Massive memory (100GB) used by dask-scheduler

Using rapids 0.14 with dask 2.17.0 python 3.6, conda, Ubuntu 16.04
I'm running xgboost using dask on GPUs.  I do:

convert in-memory numpy frame -> dask distributed frame using from_array()
chunk the frames sufficiently for every worker (here 3 nodes, 2 GPUs/node each) has data as required so xgboost does not hang
Run dataset like 5M rows x 10 columns of airlines data

Notes:

Every time 1-3 is done it is in an isolate fork that dies at end of the fit.  So whatever instances of client etc. are destroyed.  Nothing remains on GPU, nothing remains in a process since it's gone.  So I don't believe I need a client.close() call.
Even though these forks are gone, within the code I'm always using client as a context manager within a with statement.  So again shouldn't need a client.close() call or something like that.

I see my application use reasonable amount of memory based upon that dataset.  I see workers using not much memory at all, like 2-3%.
However, the dask-scheduler is using 70% of my 128GB system!  I don't understand how/why since the scheduler shouldn't hold data as far as I understand.  Perhaps the above sequence of sending dask frame to xgboost is a problem, but it would be odd that task graph is forced to hold data.
Even if a single graph held data, which is already a problem, there's no way 90GB are needed to hold the data involved, so it's like there is repeatedly old data being stored.

I don't have code to share to repro since it's not easy to extract, but I'm hoping still for ideas.  I will work on a repro, but any fixes/ideas would be good.

maps.txt
Here is output of sudo cat /proc/32193/maps > maps.txt

Apart from being all odd, is there a way to ask scheduler for its memory usage?

I'm guessing I'm misunderstanding a user's responsibility when using dask.

I assume that if I did not persist the data, then when a process closes that data is gone

I assume data is distributed, not sitting on a single node's scheduler.  That would defeat the purpose of distribution.

I assume from_array() is taking the numpy array and distributing that on the cluster, not just storing it within the scheduler.    That would defeat the purpose of distribution as well.

Here's a code fragment, but it's obvious from my description:
with client_manager as client:
    import xgboost as xgb

                import dask.dataframe as dd
                chunksize = self.get_chunksize(client, X)
                X = dd.from_array(X.to_numpy(), columns=columns, chunksize=chunksize)
                y = dd.from_array(y, chunksize=chunksize)
                model = xgb.dask.DaskXGBClassifier(**params)
                model.fit(X, y, **kwargs_dask)

This is done in a fork that dies every fit.
I expect the dask-scheduler memory should never be large or hold data and certainly now keep growing.

FYI before posting I googled and search around and didn't find exactly the same scale of problem.  Mostly stack overflow stuff was misuses or misinterpretations AFAIK.
I'm also not clear if I should post to dask or dask/distributed.

This question may be a better fit for dask/distributed, but I can try to offer some thoughts...

I assume that if I did not persist the data, then when a process closes that data is gone

I assume that it is definitely better to explicitly close your client (and maybe even cancel futures).  Although your client process is dying, I don't think the relevent data will be immediately deleted from the cluster.

I assume data is distributed, not sitting on a single node's scheduler. That would defeat the purpose of distribution.

The data will be distributed for processing.  However, since your data is being generated with numpy, the initial data has to originate on a single process.

I assume from_array() is taking the numpy array and distributing that on the cluster, not just storing it within the scheduler. That would defeat the purpose of distribution as well.

Same answer as above - To perform a truely "data-distributed" workflow, you will need a parallel read, or to use from_delayed to allow the data to be generated in parallel.  When you are using a single numpy array as the source data, it is indeed likely that the entirity of your data will be stored in the graph.

This question may be a better fit for dask/distributed, but I can try to offer some thoughts...

I assume that if I did not persist the data, then when a process closes that data is gone

I assume that it is definitely better to explicitly close your client (and maybe even cancel futures). Although your client process is dying, I don't think the relevent data will be immediately deleted from the cluster.

I assume data is distributed, not sitting on a single node's scheduler. That would defeat the purpose of distribution.

The data will be distributed for processing. However, since your data is being generated with numpy, the initial data has to originate on a single process.

I assume from_array() is taking the numpy array and distributing that on the cluster, not just storing it within the scheduler. That would defeat the purpose of distribution as well.

Same answer as above - To perform a truely "data-distributed" workflow, you will need a parallel read, or to use from_delayed to allow the data to be generated in parallel. When you are using a single numpy array as the source data, it is indeed likely that the entirity of your data will be stored in the graph.

I understand that the initial numpy data is on the single server, but this is not on the dask-scheduler.  Also, it's relatively small amount of data, only 200MB of numpy data.
I understand to get a fully distributed experience I need to start from get-go with dask, but I'm far from that if even simple uses are showing massive use by the scheduler.

Right - I understand that your data is small, and I agree that it shouldn't be taking up a lot of space in the graph.   When I say "the entirity of your data will be stored in the graph", I am just saying that the very first task in the graph will include the entire array as input.  If you call X.persist() after the from_array call, your data will become distributed (you are correct that compute is not what you want).

Also, why does the data keep accumulating? Every fit adds 200MB to scheduler. Why are (I guess) the old graphs still there after xgboost is done and all forks related to the client are gone?

This is where someone with better distributed knowledge my have more intuition than me (cc @quasiben ).  Perhaps you can try to be explicit about cleaning up collections before you let the client die (e.g. client.cancel(X))?

Will use of dd.from_array(X).persist() bypass the scheduler or must it go through it?
It seems a bit odd of a design if all in-memory dask distributed data operations have to go from the client process -> scheduler -> workers.  Then the scheduler always ends up holding all the data meant for the cluster of workers for from_pandas, from_array, etc.  How can one just get the data in memory on the cluster?
I understand read_csv or other url/file operations can lazily slice data and use it to distribute, and there the lazy thing stored is just the file name or link.  Of course, read_csv does not work unless disk is shared.  And connectors that read data from cloud require special other infrastructure.  The simplest mode should be in-memory and be optimal by itself IMHO.

It seems a bit odd of a design if all in-memory dask distributed data operations have to go from the client process -> scheduler -> workers. Then the scheduler always ends up holding all the data meant for the cluster of workers for from_pandas, from_array, etc. How can one just get the data in memory on the cluster?

I see - If you are starting with a literal numpy array or pandas DataFrame, you are correct that the data will flow client process -> scheduler -> workers.  There is really no way around this, since the starting point is an in-memory data structure.  If you don't want to read from disk, you may be looking for something like dask.delayed for the generation of your data (where you can supply a user-defined function to generate in in-memory numpy array for each initial chunk).

But why can't the scheduler and task just keep track of the client having the memory?  Of course, one can't del the object, but one can't rm the file for read_csv anyways.  So it's the same issue, no new issue.

Looking at https://distributed.dask.org/en/latest/memory.html I see no reason why there is accumulation.  The fork goes away, the future held should be deleted.  I would think I don't have to cancel the future myself.
However, perhaps I'm uncleanly shutting down the fork.  Maybe then the future isn't entirely removed?  That is, while in-memory stuff is clearly gone after a fork is gone, any distributed off-memory things are not.

I added more details and repros at: https://github.com/dmlc/xgboost/issues/6388#issuecomment-726589459
There are some things mentioned in the issue that seem to be xgboost's fault, like excessive memory usage on CPU before ask is even used.
However, the fact that the scheduler and worker both keep growing in memory use every completed python script, despite having client.cancel(X) and client.cancel(y) even (and a clean exit of the script) seems to be a problem with dask.
In the context I originally posted about, only the scheduler seems to grow in memory use, but excessively so.  cancels didn't help there either.

Eventually the worker gets killed and restarts due to the OOM accumulated.
distributed.nanny - INFO - Worker process 29371 was killed by signal 9
distributed.nanny - WARNING - Restarting worker

This keeps happening over and over.
Everytime thi s happens, the new worker starts again with less memory but again accumulating after each iteration in the loop.  Again it gets killed, etc.
Meanwhile the scheduler continues itself to grow in memory use.

Maybe related: https://github.com/dask/distributed/issues/3898

Moved discussion to: https://github.com/dask/distributed/issues/4243 since seems to be dask.distributed problem only perhaps.

Moving discussion from xgboost to here (or distributed if preferred).  Here is a minimum reproducible example:
import pandas as pd
import dask.dataframe as dd
import distributed

def main():
    colnames = ['label'] + ['feature-%02d' % i for i in range(1, 29)]
    df = pd.read_csv('HIGGS.csv',
                     names=colnames)

    y = df['label']
    X = df[df.columns.difference(['label'])]
    print('X.shape', X.shape)

    for i in range(0, 100):
        from dask.distributed import Client
        with Client(scheduler_file='scheduler.json') as client:
            chunksize = 50000
            dX = dd.from_array(X.values, chunksize=chunksize)
            dy = dd.from_array(y.values, chunksize=chunksize)

            dX = client.persist(dX)
            dy = client.persist(dy)
            distributed.wait(dX)

if __name__ == '__main__':
    main()

Spec:
dask.__version__: 2.30.0
distributed.__version__: 2.30.0
Workers: 2
Memory budget for each worker: ~32 GB
Total memory on system: 64GB + 8GB swap
X.shape: (11000000, 28)
Data file size: 7.5G

Can you also provide how you started the cluster ?  In the above, you are connecting with scheduler.json which does not show how many workers, memory limits, etc.

I think it would be good to read through https://github.com/dask/distributed/issues/3032 as it outlines some problems when using from_array with data already loaded in memory.  As @rjzamora has noted, the data is included in task graph which is going to run through the scheduler.  Instead, I would suggest rewriting things with dask throughout the workflow:
ddf = dd.read_csv('/datasets/bzaitlen/GitRepos/HIGGS.csv', names=colnames)
y = ddf['label']
dy = y.to_dask_array()
dy = dy.persist()

X = ddf[ddf.columns.difference(['label'])]
dX = X.to_dask_array()
dX = dX.persist()

@quasiben  Thanks for the reply!  I believe the your example should be the right way of loading data.  But for a small dataset like HIGGS, the in memory size with double is about 2.5 GB (11000000 rows * 29 cols * 8 bytes / 1024^3).  To fill out 60 GB of memory there has to be at least 24 copies of data.  That seems to be something worth looking into?

I would expect this to actually have more memory consumption in the scheduler as you've laid it out.  With 11000000 rows and a chunksize of 50000, you end up with 220 nodes in the graph all of which will be 2.5 GBs so you should have 550GBs in the scheduler.  If instead you have have a chunksize of 5500000, there will be 2 nodes and ~5GBs on the scheduler.
If you are curious, you can look at what the scheduler is holding onto with something like:
In [32]: keys = client.run_on_scheduler(lambda dask_scheduler: list(dask_scheduler.tasks.keys()))

In [33]: client.run_on_scheduler(lambda dask_scheduler: dask_scheduler.tasks[keys[0]].nbytes)
Out[33]:<PHONE_NUMBER>

So, I don't think there is anything wrong here per-se.  As said in https://github.com/dask/distributed/issues/3032, there are policy decisions here and it's not obvious what dask should do here to make the experience "better".  Instead, try to avoid loading data from memory and if they have to quick process those tasks.  So instead of persisting the array, it would be better to move onto the next computation and persist that allowing the scheduler to release those tasks

But why is there accumulation if one repeats the fit in a loop?  Once a task is done, why does the task graph continue to hold the arrays?

The other point I made earlier. The task graph should never contain data, it can just contain a reference to the clients data.
Same with files actually.   read_csv should be possible on the client alone, in the context of multinode with no shared disk, the client should be possible as a reference for where the file is, and any operations on the task graph should be able to keep that as a reference.  Currently the file has to be common to all nodes via shared disk.

The other point I made earlier. The task graph should never contain data, it can just contain a reference to the clients data.

This seems straightforward on a local cluster, but a bit complicated when the cluster is distributed.  In the case of IO, all workers have access to a shared file system with a established API for accessing the data by its path.  Accessing remote data by memory reference seems less reliable.  Won't this require rmda support in both the software and hardware?   Note that I don't know much about this at all :)

Ya I'm thinking of distributed case too.  Both a file or in-memory object could be modified after read_csv or from_array() type operations are done.  So both have reliability issues but the API can be made robust to make it clear how things should function, e.g. shallow reference or deep copy.  But in any case, no need to store data on graph.

But why is there accumulation if one repeats the fit in a loop? Once a task is done, why does the task graph continue to hold the arrays?

In the case of a chunksize of 5500000 I don't see total memory exceeding 5.1GBs.
for i in range(0, 20):
    chunksize = 5500000
    dX = dd.from_array(X.values, chunksize=chunksize)
    dy = dd.from_array(y.values, chunksize=chunksize)

    dX = dX.persist()
    dy = dy.persist()
    wait([dX, dy])

The scheduler should (and does) clean up after futures which no longer are being held onto by worker or client.  This can be made more aggressive .
Backing out for a minute, I think we've identified what is happening with the original issue.  It seems like now we are moving towards a discussion around whether Dask should support a new model for handling in memory data for from_array.  If that is the case, then I would suggest we close this issue and begin anew.
If I am incorrect, apologies, what remaining issues are there ?

I believe dask xgboost runs the coordinator for all the xgboost workers ON the scheduler.  But @jameslamb would know more

I was thinking again about this last night and I think you can avoid long term storage on scheduler all together with what I think you are doing.
Typically, the first response to folks who have a large numpy array in memory and then want to move some dask collection is naively, don't do that.  Here, the assumption is that the data is loaded directly from disk and instead, the dask collection (array/dataframe) should be responsible for loading that data.  Perhaps in your case the data is loaded from disk, some processing happens locally then you end up with some NumPy array which you then want to combine with dask/xgboost
In this case, you could scatter the data the first then create a dask array:
future = client.scatter(arr)
x = da.from_delayed(future, shape=arr.shape, dtype=arr.dtype)

The data will temporarily flow through the scheduler but end up on the workers.  All of this is nicely summarized in a stackoverflow post:
https://stackoverflow.com/questions/45941528/how-to-efficiently-send-a-large-numpy-array-to-the-cluster-with-dask-array
Again, if you think there are better ways of managing in-memory data from the client then we could continue that discussion in a separate issue

Those are useful references.  I think it might be best for xgboost to list some of these discussions in its doc.

In the original xgboost script the accumulation was ongoing and futures were never cleaned up.  I would continuously hit OOM killer over periods of time.  Client process being done didn't matter, scheduler/worker still persist the data uncleaned.
So maybe you found way around the attempt at a repro by @trivialfis , but the original issue cannot be explained then.

@pseudotensor can you link to or rewrite the reproducer.  https://github.com/dask/dask/issues/6833#issuecomment-726492018 is a good start but I'd like to have X and y explicitly stated.  It's best if it can be can be reproduced without downloading a file (using random data or dask.datasets.timeseries()) but using HIGGS.csv or some other canonical dataset would be ok.

Following the appearance of high-level-graphs in the scheduler, there is a good chance that this issue has been mitigated. I suggest closing.


Chain MMR and note consumption

This is a tricky problem, found by @igamigo while working on the client. I'm going try to lay down the problems:

A block's MMR does not include itself, this is because
a. The MMR is build with blocks as leaves
b. Self reference does not work with hashing
A note must be at least 1 block old for it to be consumed, this is because:
a. To consume a note, an inclusion proof is required
b. The inclusion proof is done against the MMR
c. Because of 2.b. and 1. a transaction consuming a note can not use its creation block as a reference
A note returned in a sync request can not be consumed without a subsequent request, this is because:
a. The request return block which produces a note of interested
b. Because of 2. this note can not be consumed and a new request to fetch a new block is necessary
A block returned by sync can not be tracked, this is because
a. The PartialMMR requires a valid merkle path to track an item
b. Because of 2. to run a transaction the block's MMR must be known, so that is returned by sync
c. Because of 1. 4.a and 4.b the block can not be tracked

A block's MMR does not include itself, this is because
a. The MMR is build with blocks as leaves
b. Self reference does not work with hashing
A note must be at least 1 block old for it to be consumed, this is because:
a. To consume a note, an inclusion proof is required
b. The inclusion proof is done against the MMR
c. Because of 2.b. and 1. a transaction consuming a note can not use its creation block as a reference
A note returned in a sync request can not be consumed without a subsequent request, this is because:
a. The request return block which produces a note of interested
b. Because of 2. this note can not be consumed and a new request to fetch a new block is necessary

I think we can solve these in the transaction kernel. Specifically, in the prologue we can add the block header of the latest block to the MMR peaks, and treat the results as the MMR against which we need to authenticate the notes (this is also described in https://github.com/0xPolygonMiden/miden-base/issues/305#issuecomment-1794267314, I think).

One possible fix, we could redefine the leaf values of a MMR, instead of the MMR's leaves being BlockHeaders, the MMR leaves could be just the hash of the chain state:
// It may be interesting to have other fields, here is just a sketch
pub struct State {
    // I think the block number is not necessary, since it is easily derived from the leaf pos
    block_num: u32,

    account_root: Digest,
    nullifier_root: Digest,
    note_root: Digest,

    // sub_hash may no longer be necessary, since the this is much smaller than BlockHeader
    sub_hash: Digest,
}

Note About the tracking of the latest block:
At first I thought the API should return the MMR delta up-to-including the block itself, that would mean the MMR with the block itself already included. This is possible because the store has the block header, and it can create the up-to-date MMR, with the downside of this MMR may not being in a block yet (in the case the node is being synced to the chain tip). This is however odd, and would create the problem that the transaction can not be executed, because the tx kernel needs to chain mmr as referenced by the block

Note About the tracking of the latest block:
At first I thought the API should return the MMR delta up-to-including the block itself, that would mean the MMR with the block itself already included. This is possible because the store has the block header, and it can create the up-to-date MMR, with the downside of this MMR may not being in a block yet (in the case the node is being synced to the chain tip). This is however odd, and would create the problem that the transaction can not be executed, because the tx kernel needs to chain mmr as referenced by the block

When feeding transaction inputs to the executor, could we not build the Chain MMR with the latest update we got + manually adding the block hash with the merkle path? I'm not sure whether the merkle path includes all nodes needed to the peak. If that's possible no changes to the kernel would have to be made but we would have to revert to how the node returned deltas a couple weeks ago.

A block's MMR does not include itself, this is because
a. The MMR is build with blocks as leaves
b. Self reference does not work with hashing
A note must be at least 1 block old for it to be consumed, this is because:
a. To consume a note, an inclusion proof is required
b. The inclusion proof is done against the MMR
c. Because of 2.b. and 1. a transaction consuming a note can not use its creation block as a reference
A note returned in a sync request can not be consumed without a subsequent request, this is because:
a. The request return block which produces a note of interested
b. Because of 2. this note can not be consumed and a new request to fetch a new block is necessary

I think we can solve these in the transaction kernel. Specifically, in the prologue we can add the block header of the latest block to the MMR peaks, and treat the results as the MMR against which we need to authenticate the notes (this is also described in 0xPolygonMiden/miden-base#305 (comment), I think).
The cost of doing this is a single extra MMR update, which I think may be as high as a few hundred cycles. Not great, not terrible :)

I am not sure but I think this would also entail some changes to how PartialMmr allows to be constructed right now: If I want to consume a note from block $N$, I have to construct the PartialMmr from the peaks that I got as a response from the node, which are the ones related to PartialMmr from block $N-1$. I have no way of adding and tracking the block as a leaf to the Chain/PartialMmr that I feed to the executor because the block hash belongs to a forest which is higher than the PartialMmr that I have

Possible approach to fix the tracking of a block:
We could change the definition of state_sync, instead of returning the block which contains notes of interest, to return the next block. That is to say, if block n create notes with a tag requested by the client, then the server would return the block header of n+1, and a merkle path for block n. This has two issues:

To bootstrap a client, it would not only need all the data of the genesis https://github.com/0xPolygonMiden/miden-node/issues/153 , but also the block header 1
If there is a note that matches the tag at the chain tip, it can not be returned, because there is no next block to use in the reply

When feeding transaction inputs to the executor, could we not build the Chain MMR with the latest update we got + manually adding the block hash with the merkle path? I'm not sure whether the merkle path includes all nodes needed to the peak. If that's possible no changes to the kernel would have to be made but we would have to revert to how the node returned deltas a couple weeks ago.

Lets see, by definition, the returned block header is the right most in the MMR, since it is the latest block added to it, and the MMR is append-only. We can learn a few things from the merkle path:

If the path is empty, then we have an odd number of block headers, and the block height must be even (because it is 0-indexed).
If the path is non-empty, then the merkle path must contain only left siblings. And these are by definition the previous peaks.

So I think you're right, we can reconstruct the MMR peaks for n-1 from the peaks of n + its merkle path. Not sure if this is the easiest approach, but to me it seems it works (would still write quite a few tests though :) )

I think we can solve these in the transaction kernel. Specifically, in the prologue we can add the block header of the latest block to the MMR peaks, and treat the results as the MMR against which we need to authenticate the notes (this is also described in https://github.com/0xPolygonMiden/miden-base/issues/305#issuecomment-1794267314, I think).

Just to clarify, you mean computing the MMR which includes the current block header in the prologue, and using it instead of the block's chain root?

Assuming we don't modify the structure of chain MMR as @hackaugusto suggested in https://github.com/0xPolygonMiden/miden-node/issues/152#issuecomment-1894522614 (this may have its own merits, but I'll need time to think it through). The transaction kernel would work as follows:

The inputs into the transaction would be block header $N$ and chain MMR with $N$ leaves. That is block_header.chain_root==chain_mmr.hash_peaks().
In the prologue, we would take the block header and add it to the chain MMR getting chain MMR with $N + 1$ leaves. That is, the block header $N$ would be the rightmost leaf.
a. This would allow us authenticating notes created in block $N$ against this chain MMR.
For 2 to work, we'd need to make sure that the advice provider contains all the right paths for chain MMR with $N+1$ leaves - but I think that should be pretty straight forward: we add the new block to chain MMR outside of the VM, and use authentication paths from this chain MMR in the advice provider.
a. We probably will need to add a new method on PartialMmr which would allow adding a single leaf to it - something that does the work equivalent to Mmr::add().

From transaction kernel standpoint, I think this should all work. Still thinking through the sync aspect of it.

Just to clarify, you mean computing the MMR which includes the current block header in the prologue, and using it instead of the block's chain root?

Yes, exactly. One question that I have is whether this update will naturally result in updated authentication paths in the advice provider (probably not?), or we'd need to update the Chain MMR outside of the VM as well to get the authentication paths for the new chain MMR (this is what I described in the previous comment).

Here are a few thoughts on syncing:
First, when the client starts out, we should probably insert the block header of the genesis block into its database. In the future, we could do it via config files, but for now I think the simplest thing is to make a GetBlockHeaderByNumber(0) request. At this point, chain MMR tracked by the client would be empty.
Then, the client would start making sync requests to the node. The first request would have block_num=0, and in general, the client should make requests with the last known block number.
Let's say the node is currently on block 5 (i.e., there are 6 blocks in the chain). It would respond with MMR delta with forest values (request.block_num, last_block.block_num) - or in our example (0, 5). This is actually what we do now. However, for block_path, the node would respond with a path for request.block_num at chain MMR forest value set to last_block.block_num - in our example this is also (0, 5). This is different fro what we do now.
The client, upon receiving this response would do the following:

Apply the received MMR delta to the local chain MMR. In our example, this will bring it to forest=5.
If the block for the requested block_num had notes the client is interested in, the client would also add the received block_path to the chain MMR.

The last point is different from how it works now. Specifically, the client would need to track info about whether a given block contains notes of interest. One way to do this could be to add has_notes field to the block_headers table. This field would be set at the time when the block header is inserted into the table.
For the second sync request, the client would use block_num=5, and the above process would be repeated. For example, if the node is now at block 6 (i.e., there are 7 blocks in the chain), the node would return:

block header for block 6.
MMR delta for (5, 6).
block_path for (5, 6).

If I thought this through correctly, this will ensure that the client always has consistent view of the chain - i.e., for block $N$, the local chain MMR will have forest set to $N$ as well. That is, block_header.chain_root==chain_mmr.hash_peaks(). And assuming the modification to the transaction kernel I mentioned in https://github.com/0xPolygonMiden/miden-node/issues/152#issuecomment-1894635292, the client should be able to execute transactions against the latest block.

The kernel changes described above are in https://github.com/0xPolygonMiden/miden-base/pull/421.

A potentially better approach is to get rid of block_path entirely. The process would then work as follows:
The node builds the MMR delta as (request.block_num + 1, last_block.block_num) rather than (request.block_num, last_block.block_num) as suggested in one of the above comments. This will require special handling for cases when request.block_num == last_block.block_num - but I don't think that's a big problem (and we should probably have this check anyway).
Then, the client does the following:

First, add the the current block header to the local MMR.
Then, apply the MMR delta from the node's response.

For the first point, we'd use something similar to ChainMmr::add_block(), which might be a good thing to have on PartialMmr anyway.


was_destroyed was a highly misleading function name.

Related: https://github.com/taikoxyz/raiko/pull/395
https://github.com/bluealloy/revm/blob/dad766d4949191a7368360e1b7dc1f3a45040b2c/crates/database/src/states/account_status.rs#L44-L51
DestroyedChanged doesn't mean the Account has been deleted. Is it designed like this?

Hm I see that it can be misleading, maybe better naming is ChangedAfterDestruction or DestroyedThanChanged, wdyt?

Hm I see that it can be misleading, maybe better naming is ChangedAfterDestruction or DestroyedThanChanged, wdyt?

Breaking down the DestroyedChanged status into more detailed segments is always preferable!


Passing Python Kwargs to Godot Envrionment

As Ivan wonderfully put it into words:
custom arguments for launching the Godot env without calling a function, e.g. to set a different difficulty or do anything else with the env from Godot

This time it should work. I tested the flows locally before the commit 😅

I’m working on one, though it’s not yet published.
I want to use the arguments to change the starting level such that people can skip those that the agent is too good on.

Oh right, sure, I get it now. I’ll make the change tomorrow 👍

I've added some info, hope it makes sense. I'm a bit rusty when it comes to writing docs as I don't exactly know who's the target audience 😅

hey @edbeeching 👋 sure, tho I can't promise to keep it at this pase 😆


Make test runs robust against a non-"master" defaultBranch

Summary
This is a tiny fix related to my contribution at #1270 .
When running the tests locally they were failing because my init.defaultBranch is set to main (was a requirement for some other work). Some of the tests make assumption about the branch name, and will fail if it's not master.
This tiny change makes the test runs more robust by specifying the initial branch name explicitly. This will also shield against any future changes in the default value of the property. This may very well happen, see git docs:

Can we change it to main instead?

Can we change it to main instead?

We sure can, but that requires changing the tests that mention master to main. I can do that if you'd like me to.

Sorry, this has become stale. A similar fix will be included in https://github.com/okonet/lint-staged/pull/1303 so closing this.
We can change everything from master to main at some point, but let's do it separately.


Fixed the broken Docker Installation Link

fixes #547
Fixed the broken Docker Installation link in the README.rst file under the 'Setting up VulnerableCode' section

We should entirely separate the RTD Readme file from the GitHub project readme.

Maybe it's better to have full RTD links instead of having file links?
I.e. here link directly to: https://vulnerablecode.readthedocs.io/en/latest/getting-started/docker_installation.html

@Hritik14, So instead of linking the file, should I link https://vulnerablecode.readthedocs.io/en/latest/getting-started/docker_installation.html as suggested by @AyanSinhaMahapatra

We could to do that for now but hard coding a url doesn’t feel right to me (for eg: it’s pinned on the latest version via the url)
I’m writing a fresh documentation anyway so absolute url wouldn’t be a problem for the time being.

@Hritik14 I have made the changes (including the DCO), can you review them?

lgtm, thanks for the contribution.


make sure npm test returns with a non 0 exit code

fixes #21 by making sure that we separate running the tests from
checking the coverage and therefore failing the run as expected when
there are test failures

@demmer @welch fixing the issue @welch found with the test failures not being detected by travis due to us no returning the non 0 exit code.

+1


[RFC] Configurable Cache

Background
Currently swr cache (0.4.x by the time) is a kind of hidden functionality, which exposed one experimental cache but not really fully documented with guaranteed. swr will leverage cache to store the states of keys, and mutate API can also manipulate states and cache at the same time.
We received few issues/Q&A about how to manipulate the cache directly and make its value aligned with swr's state, which confuse users sometimes.
Goals

Be able to store cache data elsewhere outside of swr, adaptive to different kinds of data presistence layer
Be able to declare initial value for cache of swr context

Proposal
Add a new property cache to swr context and let user be able to customize their cache. Fiting one cache API contract, and could be able to switch the underlayer providers like localstorage, RN AsyncStorage, any global state, etc. Note: cache is not available for swr hook
type CacheProvider = {
   initialData?: any;
  set?: (key: string, value: any) => void;
}

const localStorageCacheProvider = {
  initialData: {},
  set(key, value) {
    window.localStorage.setItem('_swr_cache_' + key, JSON.stringify(value))
  }
}

<SWRConfig value={{cache: localStorageCacheProvider}}>

Discussion
This is just a draft or an idea, won't be happened immediantely or break the current swr usage. Any comments or suggestions please let us hear from you. Thanks

Might be better to use the Cache API instead of local storage because it persists the data to apps installed locally on mobile devices, and it works inside WebWorkers https://developer.mozilla.org/en-US/docs/Web/API/Cache
https://caniuse.com/?search=cache


Accept pretrained_model path for demos

It is convenient to have this when a user wants to run a model trained by the train script.

LGTM


Add metrics reference to tuning guide

Signed-off-by: Andy Grove<EMAIL_ADDRESS>I thought it would be useful to document what our metrics mean. It would be nice to automate this as we do with the configuration options but we can do that later.

build

Moving to branch-21.08 after @Salonijain27 confirmed with the PR author.

I'm not sure why or how this got closed after I force-pushed, so will open a new PR for this.


Weapon not work on Range 0

Player can't hit enemy using weapon if Range=0
wrestling is ok
also all monsters go to range 0 and hit player :)

wrestling is NOT ok if next to attacker.
also NPC with bare hands does not attack


ORION-1455: fix issue with fsoc solution download passing tag incorrectly

Description
Renato caught a bug related to fsoc solution download when trying to download a solution with a dev tag.  This is the fix for that.  I have validated it on my machine.
Type of Change

[X] Bug Fix
[ ] New Feature
[ ] Breaking Change
[ ] Refactor
[ ] Documentation
[ ] Other (please describe)

Checklist

[ ] I have read the contributing guidelines
[ ] Existing issues have been referenced (where applicable)
[ ] I have verified this change is not present in other open pull requests
[ ] Functionality is documented
[ ] All code style checks pass
[ ] New code contribution is covered by automated tests
[ ] All new and existing tests pass

Codecov Report

Merging #116 (d844d3f) into main (aff14d6) will not change coverage.
The diff coverage is n/a.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@           Coverage Diff           @@
##             main     #116   +/-   ##
=======================================
  Coverage   32.34%   32.34%
=======================================
  Files          27       27
  Lines        3568     3568
=======================================
  Hits         1154     1154
  Misses       2323     2323
  Partials       91       91


make the CN worlds and DCs Chinese

This should correspond to the actual language switch in the future, but I'm not going to set that up right now.


adding class to stop deployments

Summary
PR is adding class to stop running deployments:
export API_KEY=<your_cloud_key>
mvn exec:java -Dexec.mainClass=org.kibanaLoadTest.deploy.DeleteAll -Dexec.classpathScope=test -Dscope=all will stop all running deployments:
21:48:44.724 [INFO ] httpClient - Search for running deployments
21:48:45.957 [INFO ] deploy:DeleteAll - Found 1 running deployments
21:48:45.957 [INFO ] deploy:DeleteAll - Deleting all deployments
21:48:45.958 [INFO ] deploy:DeleteAll - Got 1 deployments to delete
21:48:45.958 [INFO ] httpClient - deleteDeployment: Deployment bdcfa757001e41e883b60f373e43500c
21:48:47.308 [INFO ] httpClient - deleteDeployment: Finished with status code 200
21:49:09.311 [INFO ] httpClient - Search for running deployments
21:49:10.062 [INFO ] deploy:DeleteAll - Found 0 deployments after cleanup

Without -Dscope=all class will look only for load-testing-<timestamp> deployments and delete them (default use case)
With -Denv=prod class will run on production env, make sure to specify correct API_KEY
It will search for deployments, stop it 1 by 1 and later search for deployments again to confirm all were deleted
Checklist
Delete any items that are not applicable to this PR.

[ ] Branch is successfully tested on Kibana CI
[ ] Unit tests are added

@wayneseymour Thank you for the review, I did changes. Another look?


Code comment problem

Type: Bug
After entering vscode at first, do nothing, use ctrl+/ to comment the line of code, it cannot be commented, do other operations such as deleting characters or it is OK again
VS Code version: Code 1.87.2 (863d2581ecda6849923a2118d93a088b0745d9d6, 2024-03-08T15:20:17.278Z)
OS version: Windows_NT x64 10.0.22621
Modes:

System Info

Item
Value

CPUs
AMD Ryzen 5 5600H with Radeon Graphics          (12 x 3294)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: enabled_ondirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_graphite: disabled_offvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: enabled

Load (avg)
undefined

Memory (System)
15.37GB (2.67GB free)

Process Argv
--crash-reporter-id 511113a2-e84f-43e7-a933-686d5c345c0f

Screen Reader
no

VM
67%

Extensions (11)

Extension
Author (truncated)
Version

icons-carbon
ant
0.2.6

vscode-html-css
ecm
2.0.9

file-icons
fil
1.1.0

auto-close-tag
for
0.5.15

code-runner
for
0.12.1

vue-alias-skip
lih
0.0.25

vscode-language-pack-zh-hans
MS-
1.87.2024031309

vetur
oct
0.37.3

LiveServer
rit
5.7.9

open-in-browser
tec
2.0.0

markdown-all-in-one
yzh
3.6.2

(1 theme extensions excluded)

A/B Experiments
vsliv368:30146709
vspor879:30202332
vspor708:30202333
vspor363:30204092
vscoreces:30445986
vscod805cf:30301675
binariesv615:30325510
vsaa593:30376534
py29gd2263:30899288
vscaat:30438848
c4g48928:30535728
azure-dev_surveyone:30548225
a9j8j154:30646983
962ge761:30959799
pythongtdpath:30769146
pythonidxpt:30866567
pythonnoceb:30805159
asynctok:30898717
pythontestfixt:30902429
pythonregdiag2:30936856
pyreplss1:30897532
pythonmypyd1:30879173
pythoncet0:30885854
h48ei257:30992801
pythontbext0:30879054
dsvsc016:30899300
dsvsc017:30899301
dsvsc018:30899302
pydisww1:30991133
cppperfcontrol:30979541
d34g3935:30971562
fegfb526:30981948
bg6jg535:30979843
ccp2r3:30993541
dsvsc020:30976470
gee8j676:30988843

What code language is the editor set to use? See the indicator at the right-hand end of the status bar.

Write front-end code in a.vue file, even if you don't do anything else after opening the editor, you can't comment the code by using ctrl+/ first, and you can change lines or do other editing operations

I can't do single line comments inside .vue pages either, and after I disabled all the plugins, the single line comment feature still doesn't work correctly

The version number is 1.87.2

@gjsjohnmurray  Also, the single line comment feature works fine on .html pages, but it doesn't work on .vue pages

What code language is the editor set to use? See the indicator at the right-hand end of the status bar.

I haven't seen an answer to this yet.

What code language is the editor set to use? See the indicator at the right-hand end of the status bar.

I haven't seen an answer to this yet.

he say:Write front-end code in a.vue file, even if you don't do anything else after opening the editor, you can't comment the code by using ctrl+/ first, and you can change lines or do other editing operations

What code language is the editor set to use? See the indicator at the right-hand end of the status bar.

I haven't seen an answer to this yet.

Write front-end code in a.vue file, even if you don't do anything else after opening the editor, you can't comment the code by using ctrl+/ first, and you can change lines or do other editing operations

Write front-end code in a.vue file, even if you don't do anything else after opening the editor, you can't comment the code by using ctrl+/ first, and you can change lines or do other editing operations
@gjsjohnmurray  he said this


PowerToys Run - Unit Conversion: Preserve all significant figures from the integer part of the result

Description of the new feature / enhancement
Currently, the unit conversion plugin in PowerToys Run forces the rounding of results to 5 significant figures (UnitHandler.cs:107). Even though it seems that this behavior is by design (UnitHandlerTest.cs:106), I believe it can cause trouble for results that do have more significant figures in their integer part.
For example, it can be expected for queries %% 1234567 m to cm and %% 1 MiB to Bytes to produce results 123456700 cm and 1048576 Bytes respectively. But the actual results from the tool are rounded to 123460000 cm and 1048600 Bytes, which is especially unfortunate for the latter case.
Therefore, I propose that we preserve at least all significant figures from the integer part of the result, and then probably more from the decimal part. Alternatively, a switch or query parameter can be implemented to skip the rounding all together. It can also be desirable to be able to configure how many significant figures to preserve when rounding does happen (maybe I'm asking for too much here).
Scenario when this would be used?
All unit conversions with a result having a lot of significant digits in the integer part will benefit from this change. Especially for binary (1024-based) data volume conversions, whose results tend to be this way.
Supporting information
No response

go for it @PesBandi !

I agree with the author here that we should "preserve at least all significant figures from the integer part of the result" plus minimum maybe 2 decimals.
Additionally, for irrational numbers, or results that would exceed the number of characters we would typically show (say 14 for example), then we should include an ellipses.
The copy action should attempt to be as accurate as possible within the bounds of not copying infinitely long numbers, again here maybe limited to a certain character amount.
At minimum here, I would like to get rid of mis-leading behavior around rounding and instead show ellipses and/or additional sig figs.


[Question] Does this plugin support the IDFA message part of the admob sdk?

In admob privacy and messages section, you can setup the IDFA message.
Does this package support that functionality or I have to do it manually?
The admob UI tells me to only add the "NSUserTrackingUsageDescription" key to Info.plist with my custom message.
is there any other setup i need to do to get this working?

Hi @YazeedAlKhalaf, Thanks for filing the issue. I couldn't find more info about IDFA for google mobile ads plugin, I am labeling this issue for further insights from the team. Additionally, Please see if this docs  helps answer your question https://developers.google.com/admob/ump/ios/quick-start
cc: @jjliu15

Hi @YazeedAlKhalaf, the latest version added support for the UMP SDK, which can be used to display the IDFDA message. More information can found here: https://developers.google.com/admob/flutter/eu-consent#app_tracking_transparency_ios_only

thanks

Hi @YazeedAlKhalaf, have you managed to display the IDFA message? Following the instructions from https://developers.google.com/admob/flutter/eu-consent#app_tracking_transparency_ios_only, it only teaches you to show the GDPR message, but the IDFA message is not shown. Is there any specific code to display this message?


Black Document Window

Title: Black Document Window

Short Description
Attempting to join a remote document results in a black window containing only
a title bar.
Steps to Reproduce the Issue

Connect to a remote document.
Owner of remote document admits you for editing.

It makes no difference how step (1) is initiated, whether by explicitly opening
a remote URL or by accepting an invitation to join the document.
No changes in network environment seem to make any difference.
Expected Result
A window opens containing the remote document for editing.
Actual Result
A window opens that is entirely black except for the title bar and close button.
The remote document owner sees that you are in the document as an editor.
When you close the black window, there is an extremely brief flash of another
window, too fast to read, which might possibly be the expected editing window.
The remote document owner sees that you have left the document.
Environment

SubEthaEdit: Version 5.1.2 (9656)
System: Version 10.15.4 (Build 19E234g)
Language: English

Hardware:
Hardware Overview:

  Model Name: MacBook Pro
  Model Identifier: MacBookPro10,1
  Processor Name: Quad-Core Intel Core i7
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 4
  L2 Cache (per Core): 256 KB
  L3 Cache: 8 MB
  Hyper-Threading Technology: Enabled
  Memory: 16 GB
  Boot ROM Version: 2<IP_ADDRESS>.0
  SMC Version (system): 2.3f36
  Serial Number (system): C02JH22ZDKQ5
  Hardware UUID: 582B824B-708E-5F73-836B-7E5974CE5A3D

This issue is still unresolved.

Sadly I'm not able to reproduce this here, therefore tentative fixes would be scary rummaging in that timing base.  Does it only happen to you on macOS 10.15.x or also on older or newer versions of macOS? (I'm asking to narrow down the reproduction steps/environment somehow)


[bug]: Error: Wrong assertion encountered: "useEntityAdapter must be used within a CanvasRasterLayerAdapterGate"

Is there an existing issue for this problem?

[X] I have searched the existing issues

Operating system
macOS
GPU vendor
Apple Silicon (MPS)
GPU model
M1 MacBook Air 2020
GPU VRAM
16GB
Version number
5.0.0at
Browser
Safari 17.6
Python dependencies
{
"accelerate": "0.30.1",
"compel": "2.0.2",
"cuda": null,
"diffusers": "0.27.2",
"numpy": "1.26.4",
"opencv": "<IP_ADDRESS>",
"onnx": "1.15.0",
"pillow": "10.4.0",
"python": "3.11.6",
"torch": "2.2.2",
"torchvision": "0.17.2",
"transformers": "4.41.1",
"xformers": null
}
What happened
I was trying to add an image to an IP Adapter from the Image Viewer. I clicked "Close Viewer" and it died. Unfortunately, I hadn't saved my progress and I lost a lot of (useless) work. :(
What you expected to happen
Not crash
How to reproduce the problem
I tried to reproduce it but couldn't.
Additional context
No response
Discord username
magnusviri

This will be fixed in a6. Sorry you lost some work!
For future reference, when you get a big error like that, it's worth refreshing - I think it would have recovered in this case.

I do this for fun so it wasn't a big deal for me. It is an alpha release. I said that more to indicate someone else might hit it and get upset. I love the changes!


Feature/settings support

@raoularavel I worked on the support message page as requested

Good job. Victor
For codacy error:
Remember, before you push the code online , do:
yarn run lint:fix then
yarn run build
This too command will help you fix codacy errors.
Create a pull request only if the command "yarn rn build" runs successfully.
Also remember to remove all unused variables and functions.


Allow HomePages to be created anywhere

Currently HomePages can only be created at the site root. We want themto be able to exist elsewhere for better multi-language support. This commit removes this restriction to allow for creation of HomePages at any location in the page tree.
See platform#4103 for additional context.
Checklist

[x] PR has an informative and human-readable title
[x] Changes are limited to a single goal (no scope creep)
[x] Code follows the standards laid out in the CFPB development guidelines

@anselmbradford thanks. I'm thinking we may run into this as we iterate on homepage implementation, for example if we want to keep the existing design on some pages and move to a new one on others, we may need to split out the Wagtail page types. I'm inclined to punt on any renaming until that path is a little clearer - plus such a change would necessitate additional code changes / potential migrations.


feat: Improve credential support for URL signing.

Closes #8413

Draft for now, because snippet changes and possibly tests are missing.
Also the companion Google.Apis.Auth PR will be coming after, but that only has to make ComputeCredential an IBlobSigner.
This is mostly to agree on surface, etc.

Requirement PR: https://github.com/googleapis/google-api-dotnet-client/pull/2308

@jskeet this now includes all method deprecations and alternatives. PTAL just before I make any changes in tests due to deprecation, as those are a lot.
Also, some factory methods are now async given that the Compute service account ID fetch operation is async.
(Of course this PR won't build until we have merged and release https://github.com/googleapis/google-api-dotnet-client/pull/2308)

And ignore the first commit marked temp.

I'm slightly nervous about the use of Task.Run in the signer factory, but we can revisit that later if we want to (as everything is private).

@jskeet see the last commit and let me know if that looks better. I haven't addressed the rest of your comments yet, I'll do that before merging if you are OK with this one.


CI setup

This issue will track all changes made to the repository in order to take advantage of github actions and know if a PR could be merged without breaking something:

[x] Add action to run build for iOS, android https://github.com/la-haus/iterable-flutter/pull/24
[x] Add action to run tests:

[x] Flutter tests https://github.com/la-haus/iterable-flutter/pull/10
[ ] Android plugin implementation tests https://github.com/la-haus/iterable-flutter/pull/18 and https://github.com/la-haus/iterable-flutter/issues/22
[ ] iOS plugin implementation tests

[ ] Add action to check linter issues
[ ] Add some linter styling setup so the structure of the project remains stable over time

Maybe linter with some custom rules

[ ] Add Danger to check that each PR name is following convetional commits

hi @danielgomezrico ,
seen your SO question and ended up here.
Have you been able to address the running native tests problem? We're struggling with exactly the same issue.

hi @blelump nope, we haven't found any solution at the moment but it may be related to not been on this feature at the moment.
If you find a solution it would be very cool if you could share it with us


Can not get namespaces from MavenReference org.mustangproject:validator

Hi,
i am strugling to get this work with the org.mustangproject:validator project.
Here is my csproj file:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="IKVM.Image.JDK" Version="8.10.1" />
    <PackageReference Include="IKVM.Image.JRE" Version="8.10.1" />
    <PackageReference Include="IKVM.Maven.Sdk" Version="1.8.2" />
  </ItemGroup>

	<ItemGroup>
		<MavenReference Include="org.mustangproject:validator" Version="2.13.0" />
	</ItemGroup>

</Project>

The org.mustangproject:validator project should have a namespace/package org.mustangproject.validator but that is not shown to me.
There is no error message at buildtime.
Do you have any advice for me on this matter?
Thanks in advance.
Kind regards,
David

warning :     (class format error "55.0") is output for most of the class files. So I'm pretty sure this is beyond JDK8.

Hi,
thanks for the quick answer.
Kind regards,
David


Rename Handler types

"Handler" is overloaded with the Function's handler field and the core and knative runtime Handler types.
Proposal:

Handler.core.projectriff.io -> Deployer.core.projectriff.io
Handler.knative.projectriff.io -> Configurer.knative.projectriff.io ?

Don't these CRDs do the same thing? Launch an app with a way to invoke it? Why different names?

Landed on Deployer.(core|knative).projectriff.io with short names to distinguish in kubectl


FileNotFoundError: [WinError 2] The system cannot find the file specified

py-solc Version: 2.1.0
solc Version:  0.4.17
Python Version: 3.6
OS: win

What was wrong?
I try to compile a contract like this:
import json
import web3
import sys

from solc import compile_standard,compile_source,compile_files, link_code
from web3.contract import ConciseContract

compile_standard({'language': 'Solidity','sources': 'MetaCoin.sol'})

Executing this function returns an error:
Traceback (most recent call last):
  File "C:/Users/com/PycharmProjects/test/testCompile.py", line 35, in <module>
    compiled_sol = compile_source(contract_source_code)
  File "C:\Users\com\PycharmProjects\test\venv\lib\site-packages\solc\main.py", line 106, in compile_source
    stdoutdata, stderrdata, command, proc = solc_wrapper(**compiler_kwargs)
  File "C:\Users\com\PycharmProjects\test\venv\lib\site-packages\solc\utils\string.py", line 85, in inner
    return force_obj_to_text(fn(*args, **kwargs))
  File "C:\Users\com\PycharmProjects\test\venv\lib\site-packages\solc\wrapper.py", line 155, in solc_wrapper
    stderr=subprocess.PIPE)
  File "D:\Anaconda3\lib\subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "D:\Anaconda3\lib\subprocess.py", line 997, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

How can I fix it?
Cute Animal Picture

put a cute animal picture here.

Can you add some checks for the solc executable and the path file? e.g.:
import os
source_path = 'MetaCoin.sol'
if not os.path.exists(source_path):
    raise FileNotFoundError("No solidity file at path: {0}".format(os.path.realpath(source_path))
if not os.path.exists('solc'):
    raise FileNotFoundError("solc executable not found.  Is solc installed?")

Thanks for reply!
It returns error:
Traceback (most recent call last):
  File "C:/Users/com/PycharmProjects/test/testCompile.py", line 17, in <module>
    raise FileNotFoundError("solc executable not found.  Is solc installed?")
FileNotFoundError: solc executable not found.  Is solc installed?

I am still confused because the solc compiler was installed and it does work in commandline:
C:\Users\com>solcjs --help
Usage: AppData\Roaming\npm\node_modules\solc\solcjs [options] [input_file...]

Options:
  --version         Show version number                                [boolean]

  --optimize        Enable bytecode optimizer.                         [boolean]

  --bin             Binary of the contracts in hex.                    [boolean]

  --abi             ABI of the contracts.                              [boolean]

  --standard-json   Turn on Standard JSON Input / Output mode.         [boolean]

  --output-dir, -o  Output directory for the contracts.                 [string]

  --help            Show help                                          [boolean]

the solcjs package only gives the solc binary embedded in a js file behind js bindings.  It wont work for py-solc, which requires the solc binary to be in the executable path.
Unfortunately the handy py-solc installer helper does not work on windows:
$ python -m solc.install v0.4.19

You can download a compiled binary from https://github.com/ethereum/solidity/releases.  Then either place the binary in you executable path, or set the SOLC_BINARY environmental variable with the path of the solc executable.

im a robot

#48

I was trying to convert pdf to image and I also faced a similar error:
from pdf2image import convert_from_path, convert_from_bytes
import os
import tempfile
with tempfile.TemporaryDirectory() as path:
images_from_path = convert_from_path('C:/Users/Intern4/Desktop/.pdf', output_folder=path)
FileNotFoundError                         Traceback (most recent call last)
 in ()
2
3 with tempfile.TemporaryDirectory() as path:
----> 4      images_from_path = convert_from_path('C:/Users/Intern4/Desktop/.pdf', output_folder=path)
C:\ProgramData\Anaconda3\lib\site-packages\pdf2image\pdf2image.py in convert_from_path(pdf_path, dpi, output_folder, first_page, last_page, fmt, thread_count)
26     """
27
---> 28     page_count = __page_count(pdf_path)
29
30     if thread_count < 1:
C:\ProgramData\Anaconda3\lib\site-packages\pdf2image\pdf2image.py in __page_count(pdf_path)
148
149 def __page_count(pdf_path):
--> 150     proc = Popen(["pdfinfo", pdf_path], stdout=PIPE, stderr=PIPE)
151     out, _ = proc.communicate()
152     try:
C:\ProgramData\Anaconda3\lib\subprocess.py in init(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors)
707                                 c2pread, c2pwrite,
708                                 errread, errwrite,
--> 709                                 restore_signals, start_new_session)
710         except:
711             # Cleanup if the child failed starting.
C:\ProgramData\Anaconda3\lib\subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)
995                                          env,
996                                          os.fspath(cwd) if cwd is not None else None,
--> 997                                          startupinfo)
998             finally:
999                 # Child is launched. Close the parent's copy of those pipe
FileNotFoundError: [WinError 2] The system cannot find the file specified
What is going wrong?

Same issue. solc is available in the commond line , but throws exceptions by this snippet  :
if not os.path.exists('solc'):
    raise FileNotFoundError("solc executable not found.  Is solc installed?")


Incorrect sequence for the asynchronous redirection

According to the https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d7601fe1-9728-4185-bca5-05874a6ffa1f/fwpscompleteclassify-not-working?forum=wfp the sequence for the asynchronous redirection is not correct.
FwpsAcquireWritableLayerDataPointer must be called from the worker function, not from classifyFn!

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 4a3e4808-0c6b-8848-6270-8f5e8b810223
Version Independent ID: d38592f5-3ca4-3d2a-20fd-c8cfd28b58d6
Content: Using Bind or Connect Redirection
Content Source: windows-driver-docs-pr/network/using-bind-or-connect-redirection.md
Service: unspecified
GitHub Login: @tedhudek
Microsoft Alias: windowsdriverdev

Hi @SerusDev , thanks for the feedback. I'll investigate the answer to this and get back to you shortly.

Hi again @SerusDev , after confirming the answer I've updated the page to have the correct order for the steps. The changes should be live shortly. Thanks so much for your feedback in improving the docs!


Logging improvements

Description
Improved logging and fixes some instances where variables where incorrectly set in loops...

Release required?

[ ] No release
[x] Patch release (x.x.X)
[ ] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content

Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

For mergers

Use a conventional commit message to set the release level. Follow the guidelines.
Include information that users need to know about the PR in the commit message. The commit message becomes part of the GitHub release notes.
Use the Squash and merge option.

/run pipeline

/run pipeline

/run pipeline

/run pipeline

:tada: This PR is included in version 1.31.9 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Automatic session close

Imagine a handler written like that:
function (Request $request, Response $response) {
    $session = yield (new Session($request))->open();
    // do something
    yield $session->close();
}

In case // do something throws, the lock won't be freed. And as long as the Aerys worker stays alive, it will continue to renew the lock and prevent it from being detected as stale.
A finally could help here, but I think it's something Aerys should handle. In case a request opens a session, Aerys should ensure it's closed after the request handlers have finished running.
I guess we have to add special behavior for usage in WebSocket handlers then.

Closing, as that happens now with the new middleware.


MeshBoundary class

Added two a mesh boundary interface with implementation for TriangularMesh. The class provides function to check if points, lines or triangles lie on the mesh boundary given their indices. The behaviour is:

A line connection two points contained in only one triangle lies on the mesh boundary.

A line connection two points contained in either none or two triangles lies on the boundary.

Both points of a line which lies on the boundary, are part of the boundary.

Triangles with one of the sides lying on the boundary is part of the boundary.

A triangle with only one point on the boundary is not part of the boundary.

Tests are provided and may help to get started.

I think this is very useful. I just have two comments:

implementation with CSCMatrix seems not optimal for me, maybe use a Map? or build the matrix more efficiently
I think line is confusing, rather use edge as it always refers to an edge between two vertices, whereas lines can be more general

Renamed line as suggested to edges.
CSCMatrix is actually faster than using a map for the used test example. During the build the CSCMatrix.Builder is now used and the built matrix is reduced to contain only non-zero entries. This improves the building of the index structure.

look good


Query - User's are missing in CC send delivery report | refer issues/1579

This is regarding to user's are missing in CC send delivery report refer issues/1579
As we have already performed the work around shared by you and run the below query successfully for all user's whom the message did not getting delivered.
We found that the provided work around worked for very first company communicator dispatch after sent message again to all user's whom message were not delivered earlier and they able to  able to receive the new message successfully.
But after each subsequent new dispatch, we observed that again there is shortfall of user's whom the message is did not getting delivered and the count is getting increase in each new send delivery report.
We analyze the send delivery report, and observed that, Before we implement the workaround shared by you the total number of users  whom message were did not delivered count was 1037.
But when we compare Nov and Dec month send delivery reports we observed there are total 306 user missing in Nov month and 374 users missing in Dec month report (Message did not delivered users).
Then again we compare 1037 users (initial count before implement the workaround) with latest Dec month send delivery report and observed that there are 318 users are common in both the report whom message did not delivered.
Please clarify below details:
i) We already performed the fix to the all missing user still why still issue again appeared for 318 users? Please clarify the reasons.
ii) Can you confirm, is there is any permanent fix for this problem?
iii) If no permanent solution then does it mean we need to perform this activity regularly before each new dispatch? As this will be time consuming.
If you requires any more details please do let me know. Thanks
Refer below earlier case:
https://github.com/OfficeDev/microsoft-teams-apps-company-communicator/issues/1579
And the Query: PartitionKey eq 'UserData' and RowKey eq 'UserId' or RowKey eq 'UserId

@SachinWandale111 ,
Thanks for reaching out to us!
We will check on the above queries and get back to you with proper response soon.

Thanks for your response.

Hello @v-jaygupta ,
Do we have any further updates on above queries please?

Hello @SachinWandale111 ,

We are not sure of the reasons for now, could you please help us with the message sent logs from application insights so that we can check the failure reasons. Also, could you please checked and compare the app setup and permission policy assigned to the users who are getting receiving the message vs those aren't receiving the message.
Currently, this is the only workaround in place to overcome the issue, we have a backlog item created for this which will be worked upon in future sprints.
It would be better to perform this activity before sending the message to ensure there are no further failures as seens historically in your case for the month of Nov and Dec.

Hi @v-jaygupta,
Thanks for providing your feedback.
Please share the details step by step process to download application insight logs.

Hello @SachinWandale111,
Regarding the step to go to application insights and share the logs, please follow the below steps:
Go to resource group where CC app is deployed--> Go to Application Insight resource type --> Under Investigate --> Click on failures --> share the screenshot and stack trace for top 3 response codes.
You need to share the stack trace and error screenshot by following the below suggested operation.
Here is the reference:


Can I build a two dimensional table?

I am struggling to build a two dimensional table. The data has depend not only on columns, but on rows also (see attachment). Can I do this with your library?
Or can I switch rows and columns? So I set data depending on row value.

It's just data - your first column would just have the text in it you want to display with an empty header.
If you mean that the first column is like a frozen column and you are going to add more data columns to the right and you want them to be scrollable while the left side stays fixed...... No - not possible with the current version of React Table.

Closing due to issue age. If this issue was a question, please ask it again on https://spectrum.chat/react-table. If you think this issue needs to be reopened or if it should be turned into a pull-request, please check the latest version of React-Table for the issue or feature once more and reopen or create a PR if appropriate. Thanks!


Remove cookie consent

A cookie consent is only needed in the EU for the following reasons (beware, simplification ahead):

Third-party tracking cookies are used (eg Facebook)
User behavior is tracked or analyzed by or data sent to a third-party (eg Google Analytics)

In these cases, this tracking is not allowed to start or do anything without the explicit user consent. A user needs to have an easy option to say no. So only if a user has a choice and then clicks on "Yes", the tracking is allowed to start.
As JuiceShop does not utilize any measures that make it require a consent, and the current implementation is not compliant with EU regulation anyways, I recommend to simply remove the consent. This makes it easier to use for both users and administrators.
Vendors who want to add tracking to their page will need their own solution to manage the opt-in anyways.
This development has been sponsored by Panasonic Information Systems Company.

Did you read any of the cookie consent banner texts or click on the link in the default banner? It sends you to YouTube to a music video with Cookie Monster from Sesame Street... so it should be obvious that the banner does not try to be serious... 😁

I did, but I think most people use it to add a real text (eg see the mozilla.yml) and try to use it for perceived compliance reasons. If it is considered a joke feature, I think it would make sense to have a flag to disable it (or is there?) - what do you think?

For the Mozilla example config I just didn't come up with anything funny... :-D
The whole banner was actually considered a place for a challenge of some kind, but I never came up with a good one so far.

Embed some fake tracking code and ask which company the shop leaks data to in an incompliant way?


Failed to start netbird on armv7l GNU/Linux

Describe the problem
When I installed the compiled netbird in liunx with armv7 kernel, it failed to start and reported an error.
The error message is:
  root@GL-AX1800:/usr/bin# netbird service start
  "service" failed: exec: "service": executable file not found in $PATH
  Error: "service" failed: exec: "service": executable file not found in $PATH

To Reproduce
Steps to reproduce the behavior:

Compile for armv7

  env GOOS=linux GOARCH=arm GOARM=7 go build -o netbird

Move the built files into liunx and grant relevant permissions
Use netbird to install and run

  sudo netbird service install
  sudo netbird service start

NetBird version
latest code
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
The kernel information of linux is:
 root@GL-AX1800:/usr/bin# uname -a
 Linux GL-AX1800 4.4.60 #0 SMP PREEMPT Tue Jan 23 11:46:53 2024 armv7l GNU/Linux

Also tried to use netbird_0.26.3_linux_armv6.tar.gz to install and start, and got the same error message

After some research, the /etc/init.d/netbird file was added to the system after I executed netbird service install. Through this executable file, the netbied service can be started

@debin-ge 老哥, https://github.com/netbirdio/netbird/releases/download/v0.26.3/netbird_0.26.3_linux_armv6.tar.gz 能在GL-AX1800用吗？

可以的，但存在部分兼容性问题。同时需要关注一下openwrt的版本，例如我发现 ebpf存在不兼容的情况
具体的还需要详细观察


[SPARK-46400][CORE][SQL] When there are corrupted files in the local maven repo, skip this cache and try again

What changes were proposed in this pull request?
The pr aims to fix potential bug and enhance user experience.
ie: https://github.com/apache/spark/pull/44208
Why are the changes needed?
We use the local maven repo as the first-level cache in ivy.  The original intention was to reduce the time required to parse and obtain the ar, but when there are corrupted files in the local maven repo,The above mechanism will be directly interrupted and the prompt is very unfriendly, which will greatly confuse the user.  Based on the original intention, we should skip the cache directly in similar situations.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
Manually test.
Was this patch authored or co-authored using generative AI tooling?
No.

friendly ping @vsevolodstep-db @hvanhovell
If you have time, could you take some time to help review this PR?

friendly ping @HyukjinKwon, do you know who would be a good fit to review this PR together?

@srowen Do you have any suggestions on this pr? As far as I remember, the current maven daily test still can't test HiveExternalCatalogVersionsSuite due to this issue. Thanks ~

If this fixes the issue, great! any downside?

+CC @shardulm94

If this fixes the issue, great! any downside?

The advantage: when there is a corrupted jar in Local Maven, it will retry in the skip Local Maven cache and will no longer fail to exit due to this reason.
The disadvantage: during the second retry, local Maven will no longer be used as the cache, which will increase some download time.

Merged to master

@panbingkun Could you submit a fix for branch-3.5 and branch-3.4 respectively? When testing HiveExternalCatalogVersionsSuite  using maven, it requires downloading Spark-3.5 and Spark-3.4 with this fix in order to complete the creation of the data table.

@panbingkun Could you submit a fix for branch-3.5 and branch-3.4 respectively? When testing HiveExternalCatalogVersionsSuite  using maven, it requires downloading Spark-3.5 and Spark-3.4 with this fix in order to complete the creation of the data table.

Okay, let me do it.

Thank you, @panbingkun and ll!


Composer usage

Hi,
You're better off combining Step 1 and Step 2 into a single Step in your Readme.md file by just adding line below.
composer require --dev "okulbilisim/feedback-bundle":"dev-master"
The reason is because, running composer update would affect all the other composer packages in composer.json so you would potentially break the app as a result. In general, you should always avoid running composer update without specifying the package.
Regards

Thanks bro, i will changin'.


Unable to run Guietta when using pyinstaller if ___ is used.

Steps to reproduce:

Use ___ (three underscores - Horizontal widget span) in your GUI
Run pyinstaller with your .py file pyinstaller app.py --name=MyApp
Launching the .exe file gives error

Error message:
Traceback (most recent call last):
  File "app.py", line 45, in <module>
    some_gui = Gui(['status', ___],
  File "lib\site-packages\guietta\guietta.py", line 1509, in __init__
IndexError: ___ at the beginning of a row
[13116] Failed to execute script app

Workaround
To workaround this issue, you can replace all ___ (three underscores - Horizontal widget span) with something else. Your GUI will not look the same, but after running pyinstaller again, the application works.
Possible solution
Possible solution would be to replace the ___ (three underscores) with some other set of characters (for example: HHH).

Thanks for the report, unfortunately I cannot reproduce the problem. Using this code:
from guietta import Gui, ___
some_gui = Gui(['status', ___])
some_gui.run()
it works even with pyinstaller.
Can you please give some more information? Python version, OS version, PyInstaller version, etc?

thanks for the reply. I have no idea what happened, but now it works for me as well...


Option to hide action kind names

Is there an option to hide the action kinds in parentheses (as highlighted below)?

I want this too :)

Would you like do open a PR for this? 🙂


Ianthpun/stable cadence flowkit migration

Closes #???
Description

For contributor use:

[ ] Targeted PR against master branch
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work
[ ] Code follows the standards mentioned here
[ ] Updated relevant documentation
[ ] Re-reviewed Files changed in the Github PR explorer
[ ] Added appropriate labels

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

Comparison is base (b459d07) 40.49% compared to head (d5d2ae2) 40.49%.

Files
Patch %
Lines

internal/accounts/create-interactive.go
0.00%
1 Missing :warning:

Additional details and impacted files
@@                   Coverage Diff                   @@
##           feature/stable-cadence    #1384   +/-   ##
=======================================================
  Coverage                   40.49%   40.49%
=======================================================
  Files                          47       47
  Lines                        2588     2588
=======================================================
  Hits                         1048     1048
  Misses                       1416     1416
  Partials                      124      124

Flag
Coverage Δ

unittests
40.49% <0.00%> (ø)

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

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

Integrated this into #1412


Method to support custom metrics - Android & iOS

added JS and native functions to track custom metrics along with custom dimensions

Hi thanks for the PR! I've been extremely busy lately and have only had limited time to this project. I'll try to take a look at this PR this weekend 👍

Looks good, thanks for your contribution!

Published in 5.3.0


Syntax error (moduleAttributes)

Hello, we have been trying to integrate the lifi widget onto our dapp, but we are facing some errors from the installed package -we've gone through the docs and tried multiples fixes with no success, could you please assist us
Our dapp is build with create react app

@Daron976 hey, we have an example here https://github.com/lifinance/widget/tree/main/examples/create-react-app but the best way is to migrate from create-react-app to Vite, because create-react-app is outdated.

@chybisov
we will look at the example closely and try again,
Thanks :+1:


Scope leaking caveat of "synchronous" abstract methods

Tofino P4 compiler supports not-yet-standard "synchronous" abstract method, which allows abstract methods to read local variables. For example,
control C(in bit<8> x) {
    Register<bit<32>, bit<32>>(32w32768) reg;
    RegisterAction<bit<32>, bit<32>, bit<32>>(reg) regact = {
        void apply(inout bit<32> val, out bit<32> rv) {
            val = val + x;
        }
    };
    ...
}

Things get more complicated because we can pass regact as a constructor parameter. Then we can call it and use x in another control. Despite of the break of modularity, we can still execute this program because d can only be called in any subcontrol of C. So when it is called, we always have a C in the call stack and there is a corresponding x.
control D()(RegisterAction<bit<32>, bit<32>, bit<32>> regact) {
    apply {
        regact.exceute();
    }
}

control C(in bit<8> x) {
    Register<bit<32>, bit<32>>(32w32768) reg;
    RegisterAction<bit<32>, bit<32>, bit<32>>(reg) regact = {
        void apply(inout bit<32> val, out bit<32> rv) {
            val = val + x;
        }
    };
    D(regact) d;
    ...
}

It gets worse when we consider inout parameters. When we can show that there is no alias, we do not need to allocate for the inout parameter. But reading from a register action does cause aliasing. In the following example, the inout parameter is changed, but x in the abstract method should still have the old value.
control D(inout bit<8> x)(RegisterAction<bit<32>, bit<32>, bit<32>> regact) {
    apply {
        x = x + 1;
        regact.exceute();
    }
}

control C(inout bit<8> x) {
    Register<bit<32>, bit<32>>(32w32768) reg;
    RegisterAction<bit<32>, bit<32>, bit<32>>(reg) regact = {
        void apply(inout bit<32> val, out bit<32> rv) {
            val = val + x;
        }
    };
    D(regact) d;
    ...
}

I regard these as noticeable examples for designing abstract methods.

The spec currently says:
The abstract methods can only use the supplied arguments or refer to
values that are in the top-level scope.

Are you proposing to change the specifications here?
Are you saying the reference compiler currently accepts this and we want to change the specifications to allow it too (I have not tried the reference compiler)?

Yes, that is correct, there is need for abstract methods that can capture variables in the environment.
But then the compiler needs some promises about when these methods may be called; they must be annotated with @synchronous. That's not part of the spec yet.

Maybe a new syntax for captures is needed instead of arbitrary capturing all by default.
RegisterAction<bit<32>, bit<32>, bit<32>>(reg) regact = {
    [in x] void apply(inout bit<32> val, out bit<32> rv) {
        val = val + x;
    }
};

Or something similar.
To capatch all:
RegisterAction<bit<32>, bit<32>, bit<32>>(reg) regact = {
[in =] void apply(inout bit<32> val, out bit<32> rv) {
val = val + x;
}
};
What do you think about that?
At least then you say which variables gets captured and such?

The syntax can be useful perhaps for humans, but the compiler will have no problems discovering these variables by itself too.
The most important part is for the compiler to figure out when such variables can be read or written.

Note I partly borrowing the idea from C++11 lambdas really. Where the syntax is:
[v,b] (args) {...}
[=](args){...}
[&](args){...}

The first case captures just v and b, passed by value, next is all are captured and passed by value and the last is passed by reference. In the P4 case we could use in/inout/out for the & stuff and = still for all.

The syntax can be useful perhaps for humans, but the compiler will have no problems discovering these variables by itself too. The most important part is for the compiler to figure out when such variables can be read or written.

That is the point of the extra syntax is so the compiler does not need to figure that out. Rather it is up to the user to tell the compiler the right thing. Otherwise you run into issues like the above.

Even if we were to adopt the C++-style lambda syntax, wouldn't the "leakage" and aliasing issues from @QinshiWang's example out still occur?
To put it another way: is determining which variables may be captured is the main issue here? Or is it the new forms of state interaction that can arise through externs with abstract methods that (explicitly or implicitly) capture?
Or maybe I'm missing something fundamental...

@apinski-cavium and @mbudiu-vmw had some helpful discussion about variable capturing annotation. First, I'm doubtful whether abstract method is a nice design. It's intended to encode the hardware and cost limitation on what can be done between a read and a write. But it is very tricky to formalize. Second, as pointed out, variable capturing can be computed from the syntax, so we can clarify it (like a type system refinement) that what extern objects with abstract method can be passed as constructor parameters, or variables captured in abstract methods are considered as aliased and cannot be optimized by passing by reference.

Abstract methods are a very general mechanism, they really have nothing to do with reads/writes. Note that we already have variable capture for actions, and its semantics is pretty clear. What is not clear is when the abstract methods execute.

I would like to ask this question: do you think extern objects with synchronous abstract methods can be passed to other control blocks as constructor parameters?
I would explain the theory in this way. In C++, one can write programs like
void f() {
  int a;
  // Define a function object that captures the local variable a
  auto f = [&](){return a; };
  handler(f);
}

In such a program, we need to be able to take the address of a. So a needs to be an addressable variable, in contrast to a temporary variable. Addressable variable is not a standard term in C but in CompCert as far as I know. But the concept is just that addressable variables have addresses, while temporary variables do not need to have addresses (e.g. they may be just stored in registers).
So the question is: should we allow addressable variables in P4? Temporary variables are easier to reason about: they are not accessible out of the scope. Without synchronous abstract methods, temporary variable is enough for P4. If we limit extern objects with abstract methods from being passed as constructor parameters, temporary variable is still enough. But if we allow passing extern objects with abstract methods, we will need to use addressable variables. Addressable variables are more powerful, but need to use their addresses to reason.
Please share your opinion.

The captured variable must be in scope where the declaration of the method occurs, which puts some constraints on what can be captured.

The question is, can the method which the abstract method is synchronized with can be called outside of the scope of the captured variables?

This is in some sense a duplicate of https://github.com/p4lang/p4-spec/issues/943, but we haven't done the work to resolve it.

In the interest of tidying up the set of active issues on the P4 specification repository, I'm marking this as "stalled" and closing it. Of course, we can always re-open it in the future if there is interest in resurrecting it.


avoid type too strict

a -> a should be b -> a

This was never a bug: a → a is to void the first a into an Annihilator of that same type.


Auto import for some system APIs

I just found this wiki page has loads of free format prototypes. I'd somehow like to automatically import it if the user accepts the content assist?
https://wiki.midrange.com/index.php/Category:RPG_Prototypes
Would love some thoughts

Perhaps this could easily be done with snippets?

https://user-images.githubusercontent.com/3708366/187119453-992bed3c-bca5-48b8-8785-692512037274.mov


ci: restaure Bun latest and canary to matrix

After Bun v1.1.23, for some reason the tests no longer finish.
Checking if the problem has been solved.

It will require debugging and probably a minimal reproduction to report to Bun.


Whitelist all builds except feature builds

Enable travis-ci on master, after merge.
So, basically all push builds now are enabled for all branches that do not start with feature. Feature branches should be built only for PRs.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@049d1c7). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #90   +/-   ##
=========================================
  Coverage          ?   85.62%
=========================================
  Files             ?      165
  Lines             ?     4695
  Branches          ?        0
=========================================
  Hits              ?     4020
  Misses            ?      675
  Partials          ?        0

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 049d1c7...f2d0c95. Read the comment docs.