Set +A0 among emulator args for rebar's escript

While switching from R15 to R16, we noticed a significant performance degradation when compiling our code with rebar (compilation time almost doubled).
Adding the "+A0" flag seems to have an extremely positive effect, reverting compile times to the R15 values.
This seems related to rebar performing lot of IO from a single process.
Not sure if the patch is general enough to be part of the upstream rebar, but I decided to open this PR to get the discussion started.

Have you compared R15 +A10 vs +A0 (default)?

Will try now.

@tuncer From what I can see, in R15 the default is +A0, so my patch should not have any effect. Starting from R16 the default is +A10, so my patch revert the old behaviour for the rebar escript and in that case we noticed the huge performance increase. Right?

Yes, and it's a good idea to first compare R15 in both settings, to hopefully rule out other changes included in R16.

I've seen this before and know what this is about yes. I'm fine with going back to R15 settings (especially since rebar worked fine there). The cost of setting up async threads isn't really an advantage for an ideally short-running app like Rebar.

I've read @robertoaloi's post to mean it's a slowdown during compilation, and not just setup overhead, but I may be wrong. @ferd, when you say "I've seen this before", do you mean just the increase in startup time?

Yeah. This set of flags impacts every time the VM is booting by starting N async OS threads rather than just letting the VM handle it all. We don't really need them in a sequential code base like rebar for the most part.

@psyeugenic has at least twice advised us against using +A0, and doing that may even have a worse effect beginning with R16, as +A10 is the default now. However, we've successfully used the default (+A0) in rebar from R13 up to R15B03-1.
In either case it's important to measure what's happening first. So, as suggested profile R15 with +A0 and +A10, and then the same for R16 (plus maybe R17).
With all that said, I'm not strongly against +A0, but at the very least compilation is not sequential as we spin up worker processes for that. So, rebar isn't a single sequential process.

I'm not surprised that it faster with +A0 since file commands are not scheduled on the async threads.
You could be fine using file commands in the scheduler threads but I doubt you could count on it. It is especially problematic on slow discs or over NFS. One possible symptom is scheduler collapse, same as for long running NIFs.

Note that the erlc command is using +A0, so it's obviously not that dangerous.
With regards to parallelism of rebar - the tradeoff when using asynch threads for IO is latency vs throughput. When you're running a task like rebar, the main thing that the user cares about is when the entire job is done, hence throughput is the main concern. When running something like a web server, it's more important that each connecting client gets a response soon, even though the total transfer time will suffer when there's only a single client connecting. The latter is the typical mode of an Erlang program, which is why asynch threads is now the default. But it doesn't make much sense for a command line tool - in that case, it's better to let one process wait while another is reading a file, if the total throughput gets higher.

@psyeugenic my understanding is really just that starting 10 threads is slower than starting 0, and that if the files we look for and their operations aren't scheduled on these 10 threads, we'd get a speedup at start time (which is a huge part of our total run time in rebar) by disabling these.
Personally my opinion falls in line with Richard's. I'm going to leave this open for a while for more comments but right now I'm of the opinion we should merge this in.

As I said before, I'm not strongly against +A0. rebar has been used that way since the beginning, and assuming +A0 in 17.x and later isn't worse than R16 and earlier, I can see this get merged.
Also, @robertoaloi hasn't answered yet, but I'll take @richcarl's response to mean that @robertoaloi was talking about startup slowdown and not at all about overall compilation slowdown. @richcarl, is that correct?
@psyeugenic, @richcarl, I'm not saying we should use it, but out of curiosity, what's your opinion on +A1? Any measurements?

As I said before, I'm not strongly against +A0, and rebar has been used that way since the beginning, so I can see this get merged.
Also, @robertoaloi hasn't answered yet, but I'll take @richcarl's response to mean that @robertoaloi was talking about startup slowdown and not at all about overall compilation slowdown. @richcarl, is that correct?
@psyeugenic, @richcarl, I'm not saying we should use it, but out of curiosity, what's your opinion on +A1? Any measurements?

@richcarl All I'm saying is that you open up for undefined behaviors .. it is however unlikely it will happen, it all depends.
@ferd Is it the start time that's killing you? I'm pretty sure it's the latency of handing over file-ops between threads. I haven't measured it though.
@tuncer No measurement. Turn it of or stick with +A10 (or how many parallel file ops you have) I think many Ericsson projects use +A256.
I can reiterate the problem point many times and you know the pros and cons .. now make a decision. =)

@psyeugenic Sure, but does what you're saying also imply that OTP are worried about the use of +A0 in erlc, and have plans to stop using it (at a cost of possibly much slower compilation)?

@richcarl Well, don't do as we do, be better! =) I was actually under the impression that erlc used non-smp which would have made more sense with +A0 but nooo. We will probably change erlc to +A10 (or whatever default we find reasonable) if we have more then one file to compile but use non-smp with +A0 in the single file case.
We reason that in the non-smp case only the soft-realtime properties are affected. Since the compiling is more or less sequentially handled it's therefor a none-issue in our case.
My point remain, if you want to be safe use async-threads.

I wish we could spin up +A threads from within a running VM.

@psyeugenic wrote:

We will probably change erlc to +A10 (or whatever default we find reasonable) if we have more then one file to compile but use non-smp with +A0 in the single file case.

That's easy to do via erlc's C wrapper, and I wish we could spin up extra async-threads from within a running VM.
At least we can always override emu_args via ERL_FLAGS=+An rebar.

The question of whether it's just startup time or overall compilation time is still unanswered, and it'd also be great to know if +A1 is a good compromise, but I'd like to get this resolved.
So, perhaps we should make it +A0 and re-evaluate when the mentioned erlc changes have been made or we find out +A1 is a good choice.

Rebar3 has been using +A0  for a while now.
I'm also considering -smp disable I can't remember now why I hadn't already.

If you disable SMP, there's not much point in keeping compiler workers.

Also, with things like Dialyzer plugins, it's even more important to have SMP, except if you're memory limited and have to enable +S1 to avoid a Dialyzer OOM condition.

@robertoaloi, can you measure what difference these make in your env compared to an unmodified rebar with R16B03 (and 17.4.1):

-mode minimal
-mode minimal +A1
-mode minimal +A2

For interesting results, try these with R13B04 :).
Ultimately, there's more than one slow down since the R13 days, so OTP (starting with erts) is in need of profiling and perf fixing. I believe we can get it mostly back, but I haven't tried yet.

Yes, we aren't disabling smp in rebar3 because of dialyzer and ct.

@robertoaloi, @richcarl, I'm afraid I have to repeat the question: is it just startup overhead or overall compile times? I don't know how exactly you measured, but a simple timing here doesn't result in more than 30ms reduction with +A0 vs +A1 or +A20.

I believe it's usually startup time. We can close this if you measured near nil improvements. On what platform did you measure it, though? Some are worse than others for start times.

Timing normal (release) rebar binary on 18.0-rc1 ce96ab6:

Flags
time rebar version real (ms)

+A0
280

+A0 -mode minimal
240

+A0 -boot start_clean
280

+A0 -boot start_clean -mode minimal
240

+A1
310

+A10
310

+A10 -mode minimal
280

+A10 -boot start_clean
310

+A10 -boot start_clean -mode minimal
280

+A20
310

This is still comfortably below 400ms and therefore fast enough to not disrupt the flow, but barely so.
It seems impossible to enable the initially disabled bits like distrib once the VM has been started in -mode minimal mode. Is there really no way?
For contrast, here's R13B03 after rebuilding rebar with R13B03:

Flags
time rebar version real (ms)

+A0
160

+A0 -mode minimal
130

+A0 -boot start_clean
130

+A0 -mode minimal -boot start_clean
130

+A10
190

+A10 -mode minimal
150

+A10 -boot start_clean
190

+A10 -mode minimal -boot start_clean
150

Measurement took place on a modern linux-amd64 distro with an otherwise idle machine.

Some results from a modern linux-amd64 distro.
Timing normal (release) rebar binary on 18.0-rc1 ce96ab6:

Flags
time rebar version real (ms)

+A0
280

+A0 -mode minimal
240

+A0 -boot start_clean
280

+A0 -boot start_clean -mode minimal
240

+A1
310

+A10
310

+A10 -mode minimal
280

+A10 -boot start_clean
310

+A10 -boot start_clean -mode minimal
280

+A20
310

This is still comfortably below 400ms and therefore fast enough to not disrupt the flow, but barely so.
It seems impossible to enable the initially disabled bits like distrib once the VM has been started in -mode minimal mode. Or is there a way?
For contrast, here's R13B03 after rebuilding rebar with R13B03:

Flags
time rebar version real (ms)

+A0
160

+A0 -mode minimal
130

+A0 -boot start_clean
130

+A0 -mode minimal -boot start_clean
130

+A10
190

+A10 -mode minimal
150

+A10 -boot start_clean
190

+A10 -mode minimal -boot start_clean
150

18-RC will be particularly slow because they use one timer wheel per scheduler afaict, and they still need to optimize that. Here's the same for me on 17.3 on OSX 10.9.5:

Flags
time rebar version total (ms)

nothing
387

+A0
389

+A0 -mode minimal
388

+A0 -boot start_clean
387

+A0 -boot start_clean -mode minimal
382

+A1
388

+A10
385

+A10 -mode minimal
401

+A10 -boot start_clean
385

+A10 -boot start_clean -mode minimal
388

+A20
373

There's no visible improvement for me here, everything more or less fits between a 30ms jitter window. At least for rebar boot time itself I can't say I see any difference here.

E: I had a version where I badly measured effects. Here's the proper re-run.
18-RC will be particularly slow because they use one timer wheel per scheduler afaict, and they still need to optimize that. Here's the same for me on 17.3 on OSX 10.9.5:

Flags
time ./rebar version total (ms)

nothing
377

+A0
306

+A0 -mode minimal
270

+A0 -boot start_clean
309

+A0 -boot start_clean -mode minimal
277

+A1
371

+A10
442

+A10 -mode minimal
314

+A10 -boot start_clean
385

+A10 -boot start_clean -mode minimal
371

+A20
387

There's some improvement for me here, I also observed a 30ms jitter window, or ±15ms. It does seem to change up to about 100ms (or 25%) optimistically.

@ferd, are you sure there aren't outliers in your listing? Specifically, is +A10 always >400, and what about +A10 -boot start_clean -mode minimal?

10 runs of +A10: 763, 418, 387, 444, 404, 392, 384, 401, 407, 397
10 runs of +A10 -boot start_clean -mode minimal: 325, 341, 487, 345, 337, 335, 335, 346, 349, 348
There's gonna be lots of outliers on any listings is my guess.

The startup slowness in 18-rc1 was mostly due to erroneous large timer wheels. I did some measurement on 18 as well using time erl -noshell -run erlang halt:

Version
real

OTP-18.0-rc1-520-gcc03bb8
105ms

OTP-18.0-rc1-503-gce96ab6
124ms

OTP-17.4
107ms

Seems to be better.
We haven't looked at optimizing startup time all that much. It's not in the need category but more in the nice to have category.

Version
time erl -noshell -run erlang halt real

R13B03
137ms

OTP-18.0-rc1-503-gce96ab6
286ms

Version
time erl +A0 -noshell -run erlang halt real

R13B03
139ms

OTP-18.0-rc1-503-gce96ab6
258ms

Version
time erl -mode minimal -noshell -run erlang halt real

R13B03
102ms

OTP-18.0-rc1-503-gce96ab6
221ms

Yeah we already know that OTP-18.0-rc1-503-gce96ab6 has worse characteristics. Measure against OTP-18.0-rc1-520-gcc03bb8 instead .. or wait for rc2 next week.

erlang/otp.git is at rc1-503, and that's the newest I have, so how do I fetch the -520 branch? Am I supposed to get Rickard's OTP-12650?

Oh it isn't pushed  .. use my repo https://github.com/psyeugenic/otp that's synced. Yeah it's Rickards time merge at the tip.

Here's the results with a fresh build of OTP-18.0-rc1-520-gcc03bb8. Thanks whoever was responsible (@rickard-green?). The gap to R13B03 is still wide, but it looks considerably better. Another 50ms and we're getting there :).

Cmd
real

time erl -noshell -run erlang halt
220ms

time erl -mode minimal -noshell -run erlang halt
160ms

time erl +A0 -noshell -run erlang halt
200ms

time erl +A0 -mode minimal -noshell -run erlang halt
150ms

time ERL_FLAGS="+A0" rebar version
217ms

time ERL_FLAGS="+A0 -mode minimal" rebar version
178ms

time ERL_FLAGS="+A0 -mode minimal -boot start_clean" rebar version
178ms

time rebar version
240ms

time ERL_FLAGS="-mode minimal" rebar version
200ms

time ERL_FLAGS="+A20" rebar version
240ms

time ERL_FLAGS="+A20 -mode minimal" rebar version
200ms

Time rebar list-templates inside rebar repo, after building it first:
$ cd rebar
$ make distclean all

Cmd
real

time ./rebar l-t
522ms

time ERL_FLAGS="+A0" ./rebar l-t
409ms

time ERL_FLAGS="-mode minimal" ./rebar l-t
490ms

time ERL_FLAGS="+A0 -mode minimal" ./rebar l-t
365ms

@ferd, for comparison, can you rerun with @psyeugenic's master branch?

No, not for a couple of days at least. I'd need to set up an environment proper to this and today's Mothers' day here. Does it matter with regard to the issue at hand?

Not really, I just wanted to see how it affects OS X.

I think it's safe to say this can be closed.


[Bug]: CORS Policy Error During Customer Registration

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the bug
The CORS policy blocks the request when trying to register a new customer. The error message is: No 'Access-Control-Allow-Origin' header is present on the requested resource, causing the request to fail with the status ERR_FAILED.
Expected behavior
The customer registration request should successfully pass the preflight check and complete the registration without being blocked by the CORS policy.
Add ScreenShots
i faced this problem, please assign me

On which device are you experiencing this bug?
Chrome, Windows
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[X] I have starred the repository

Is there an existing issue for this?

[x]  I have searched the existing issues

Describe the bug
The CORS policy blocks the request when trying to register a new customer. The error message is: No 'Access-Control-Allow-Origin' header is present on the requested resource, causing the request to fail with the status ERR_FAILED.
Expected behavior
The customer registration request should successfully pass the preflight check and complete the registration without being blocked by the CORS policy.
Add ScreenShots
i faced this problem, please assign me
On which device are you experiencing this bug?
Chrome, Windows
Record

[x]  I have read the Contributing Guidelines
[x]  I'm a GSSOC'24 contributor
[x]  I have starred the repository

Hello @skanarul8002, Go for it
All the Best

Hi @Trisha-tech , can you please add the "hacktoberfest-accepted" label also to this PR as it is part of Hacktoberfest? Thank you!


Keep track of which strava activities have been added

[x] #53
[x] Strava list view: Show which activities are already saved
[x] Batch save task: do not save activities that already exist in db
[ ] Show any strava activities that are similar to db activities, even if the strava id doesn't match.

To test this, view my older strava acct's activity list in my local environment. It should highlight strava activities that bear similarities to ones that already exist in the database (from my newer acct).
This now happens on the strava activity list view (in a primitive way)
Still needs to happen when viewing an activity detail

Not sure where this fits in the new universe of DF. Removing from the 0.1 milestone for now.


Future Opponent

I am wondering if there is a way to find what opponent a team will be facing in the future. I am trying to provide predictions, so I need to have a way to find what team a player is facing in the next week. Currently, nflgame.one() only finds games that have already occurred.

You'll have to access the raw schedule data: https://github.com/BurntSushi/nflgame/blob/master/nflgame/sched.py#L49
Alternatively, use nfldb, which will return games that haven't been played yet in its primary query API.

Works perfectly, thanks


Parquet statistics are collected twice

Currently, the parquet reader is using split_row_groups='infer' to infer whether it should split a file into multiple dask tasks or not which is done by collecting parquet statistics from every file.
Running the code below triggers this statistics collection twice. Once during the definition of the computation / while I'm mutating the dataframe and once as soon as I call compute.
import dask_expr as dd

VAR1 = datetime(1998, 9, 2)

lineitem_ds = dd.read_parquet("s3://coiled-runtime-ci/tpc-h/scale-1000/lineitem")

lineitem_filtered = lineitem_ds[lineitem_ds.l_shipdate <= VAR1]
lineitem_filtered["sum_qty"] = lineitem_filtered.l_quantity
lineitem_filtered["sum_base_price"] = lineitem_filtered.l_extendedprice
lineitem_filtered["avg_qty"] = lineitem_filtered.l_quantity
lineitem_filtered["avg_price"] = lineitem_filtered.l_extendedprice

# This line now triggers a statistics collection iff `split_row_groups` is not False
lineitem_filtered["sum_disc_price"] = lineitem_filtered.l_extendedprice * (
    1 - lineitem_filtered.l_discount
)

lineitem_filtered["sum_charge"] = (
    lineitem_filtered.l_extendedprice
    * (1 - lineitem_filtered.l_discount)
    * (1 + lineitem_filtered.l_tax)
)

lineitem_filtered["avg_disc"] = lineitem_filtered.l_discount
lineitem_filtered["count_order"] = lineitem_filtered.l_discount

gb = lineitem_filtered.groupby(["l_returnflag", "l_linestatus"])

total = gb.agg(
    {
        "sum_qty": "sum",
        "sum_base_price": "sum",
        "sum_disc_price": "sum",
        "sum_charge": "sum",
        "avg_qty": "mean",
        "avg_price": "mean",
        "avg_disc": "mean",
        "count_order": "count",
    }
)

# Once I compute, another stats collection is triggered
total.compute()

related to https://github.com/dask-contrib/dask-expr/issues/363

My naive expectation would be that the second collection is not necessary since we're doing some caching. Is this a false cache miss or do we actually have to collect this twice for some reason?

which is done by collecting parquet statistics from every file.

We only want to check the first file. If we are collecting all statistics, then we are using pyarrow.dataset in the wrong way (or need to use something else to check the size of the first file).

We only want to check the first file.

I'm surprised that this line requires us checking anything.

I'm surprised that this line requires us checking anything.

Can you clarify what you mean by "this line"?

lineitem_filtered["sum_disc_price"] = lineitem_filtered.l_extendedprice * (
    1 - lineitem_filtered.l_discount
)

this is triggering the collection

Patrick's example in https://github.com/dask-contrib/dask-expr/issues/363#issue-1963163141 is essentially the same. He defines the dataframe code up to this point and then calls optimize which is triggering the collection

Oh okay - Yeah, then I agree. We shouldn't need to do anything "new" at that step. In general, the dask-expr API will trigger whatever logic is necessary to calculate the current _meta, but shouldn't need to do anything with divisions/partitions if that information isn't needed to calculate that metadata.

Are you sure that the first time you are collecting metadata isn't in dd.read_parquet("s3://coiled-runtime-ci/tpc-h/scale-1000/lineitem")?

Okay, I spent some time looking into this and the problem is that an element-wise operation between collections will currently trigger an eager expr.are_co_aligned(self.expr, other) check.
This means that we end up asking the root IO expression for it's divisions before any kind of optimization pass (column projection, combine similar, etc). Later on, when we call compute (or just optimize), the optimization pass modifies the column projection, and so we end up needing to generate a fresh partitioning plan.
I'm pretty sure I can revise the ReadParquet caching logic to avoid the need to generate the partitioning plan twice.

https://github.com/dask-contrib/dask-expr/pull/366
This is an improvement for this particular problem, the general issue remains though


x_attrib.c: Fix print_hex() function

Better handle 0 length input
Use OPENSSL_buf2hexstr() instead of OPENSSL_buf2hexstr_ex() which fixes insufficient length of the allocate buffer.

This probably should have tests.
I am having trouble seeing where this originated from. The commit message really doesnt say much about the origins of this PR. (Even if it was detected by code inspection maybe it should say that).

Code looks fine.
Fortunately this is the only reference to OPENSSL_buf2hexstr_ex in the source

I can put tests: deferred here. Unfortunately I do not have time right now to write tests for this fix.

This probably should have tests. I am having trouble seeing where this originated from. The commit message really doesnt say much about the origins of this PR. (Even if it was detected by code inspection maybe it should say that).

I Agree.

24 hours has passed since 'approval: done' was set, but as this PR has been  updated in that time the label 'approval: ready to merge' is not being automatically set.  Please review the updates and set the label manually.

Pushed to the master branch. Thanks.


Added tags to unit TTD unit test definitions.

Hi @mrkmarron, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

 If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;


Add Ability to Enable/Disable Shortcuts for LineEdit

This PR adds the ability to enable and disable shortcut keys for LineEdit.
Closes: #31183

Closes: #31183

This issue also requests the same feature in TextEdit.

Needs a rebase to remove the merge commit and fix merge conflicts, otherwise I guess it should be ok to merge.

This doesn't seem to fix the linked issue? As it describes disabling selections not shortcuts.
In any case, you should only need to remove the shortcuts inside new method _generate_context_menu leaving the main switch alone.

I've tried that before, but it does not seem to have any effect. The context menu will show or not show the shortcut keys... but the switch statement causes the shortcut keys to have effect regardless of whether the context menu has them or not.

I've tried that before, but it does not seem to have any effect

Ahh my bad, I remember now, currently they are visual only. Related #29490, which will require shortcuts to handle echoed events before they can be changed.
In that case, there are a couple missing:

select_all() on line 3459
cut() on line 3201

Thanks!


feat: Allow custom anchor in anchorScroll

Type: feat
Platform: all
Currently, $ionicScrollDelegate.anchorScroll([shouldAnimate]) reads from location.hash. However, it could be quite useful to allow scrolling to custom id.
e.g. $ionicScrollDelegate.anchorScroll('#my-id', true)
It should be relatively easy to add this feature (https://github.com/driftyco/ionic/blob/master/js/angular/controller/scrollController.js#L141)

So with how angular handles anchorScrolling, not sure if this will be possible.
Angular needs to have ids passed to the location.hash.
https://docs.angularjs.org/api/ng/service/$anchorScroll
http://codepen.io/mhartington/pen/FmyaB
You can, though just pass the location in the function.
$scope.slideTo = function() {
    $location.hash('two');
    $ionicScrollDelegate.$getByHandle('mainScroll').anchorScroll();
  };

I think it's possible as I've patched framework locally. Here is the code
self.anchorScroll = function(elementId, shouldAnimate) {
    self.resize().then(function() {
      var hash = arguments.length == 2 ? elementId : $location.hash();
      var elm = hash && $document[0].getElementById(hash);
      if (!(hash && elm)) {
        scrollView.scrollTo(0,0, !!shouldAnimate);
        return;
      }
      var curElm = elm;
      var scrollLeft = 0, scrollTop = 0, levelsClimbed = 0;
      do {
        if (curElm !== null) scrollLeft += curElm.offsetLeft;
        if (curElm !== null) scrollTop += curElm.offsetTop;
        curElm = curElm.offsetParent;
        levelsClimbed++;
      } while (curElm.attributes != self.element.attributes && curElm.offsetParent);
      scrollView.scrollTo(scrollLeft, scrollTop, !!shouldAnimate);
    });
  };

that is a total lifesaver not polluting the hash. There is perhaps a bug in ionic that means setting the hash before anchorscroll causes ui router to use the default route etc etc. Using this fix solves with my problem. Although I had to change line 3 to
var hash = elementId || $location.hash();


Support for pytest-xdist, multiprocessing, etc.

Slipcover doesn't currently have a way to merge/coordinate coverage data collected on multiple processes into a single output.
Attempts to use pytest-xdist yield partial coverage results.

Hello, it would be great to see pytest-forked supported as well.

Hi @jaltmayerpizzorno, have you done any work here? If not, I may try to tackle this so would appreciate any tips/pointers!

Hi @cameronbrill, no, sorry, I haven't put work towards this yet. I imagine that it would be implemented by having each process collect coverage separately and write to a file and then merge together. So far I think writing to JSON, and merging JSON results, would make a lot of sense. I can try to contribute some refactorings towards this. But in general I'd read pytest-xdist (or -forked) code to see how it works and what it requires. I'd be happy to support your efforts by answering questions (as time allows)!

I just added support for pytest-forked. I haven't tried yet with pytest-xdist, but anything that uses os.fork() and then os._exit() is likely to work.


Fleshing out Generation System Tests (2)

Move over #87 to the a main repo branch

@clrudolphi Do you want to take a look at this PR (especially the tests)? Maybe you spot out something that should be fixed before merge.

Sure. I'll look at it this afternoon.

@gasparnagy Looks good! I see nothing needing adjustment. (passing on my machine); code cleanups look good with clear intent.


Error code c12-18

Dear zero As I’ve accepted that this error because of communication codes that you wrote in c12-18 and our smart meters hers is wrote in iec 62056-21 codes not 12-18 or else   Could you write new code for this type of meters that we could check the security of them too. Best regards

And also I’ve the meters and just need the app to connect and if you tell me what you need any report and detail we will be able to write this down too

No, I neither the desire nor the means to implement any of the IEC standards.


will you help me to get popular times using your script

will you help me to get popular times using your script, and Is there any way to get popular times in Node JS?

Hey,
there are no plans to port this to node, please also check #8 and #9

Hi,
How you shown current_popularity from following array, please tell me what
is the current popularity filed,
[[7,[[6,0,"","None","6 AM"],[7,0,"","None","7 AM"],[8,0,"","None","8
AM"],[9,8,"Usually busy","Up to 30 mins","9 AM"],[10,25,"Usually busy","Up
to 30 mins","10 AM"],[11,46,"Usually busy","Up to 30 mins","11
AM"],[12,61,"Usually busy","Up to 30 mins","12 PM"],[13,60,"Usually
busy","Up to 30 mins","1 PM"],[14,49,"Usually busy","Up to 30 mins","2
PM"],[15,40,"Usually busy","Up to 30 mins","3 PM"],[16,41,"Usually
busy","Up to 30 mins","4 PM"],[17,46,"Usually busy","Up to 30 mins","5
PM"],[18,52,"Usually busy","Up to 30 mins","6 PM"],[19,53,"Usually
busy","Up to 30 mins","7 PM"],[20,51,"Usually busy","Up to 30 mins","8
PM"],[21,44,"Usually busy","Up to 30 mins","9 PM"],[22,35,"Usually
busy","Up to 30 mins","10 PM"],[23,25,"Usually not too busy","Up to 15
mins","11 PM"],[0,16,"Usually not too busy","Up to 15 mins","12
AM"],[1,9,"Usually not too busy","Up to 15 mins","1 AM"]],0,["Peak wait up
to 30 mins from 5:00 PM–10:30 PM",[[16,23,[[5]]]]]],[1,[[6,0,"","None","6
AM"],[7,0,"","None","7 AM"],[8,0,"","None","8 AM"],[9,0,"","None","9
AM"],[10,0,"","None","10 AM"],[11,6,"Usually busy","Up to 30 mins","11
AM"],[12,14,"Usually not too busy","Up to 15 mins","12 PM"],[13,21,"Usually
not too busy","Up to 15 mins","1 PM"],[14,20,"Usually not too
busy","None","2 PM"],[15,17,"Usually not too busy","Up to 15 mins","3
PM"],[16,23,"Usually not too busy","Up to 15 mins","4 PM"],[17,40,"Usually
not too busy","Up to 15 mins","5 PM"],[18,60,"Usually busy","Up to 30
mins","6 PM"],[19,71,"Usually busy","Up to 45 mins","7 PM"],[20,66,"Usually
busy","Up to 45 mins","8 PM"],[21,54,"Usually busy","Up to 45 mins","9
PM"],[22,44,"Usually busy","Up to 30 mins","10 PM"],[23,37,"Usually
busy","Up to 30 mins","11 PM"],[0,26,"Usually not too busy","Up to 15
mins","12 AM"],[1,13,"Usually not busy","None","1 AM"]],0,["Peak wait up to
45 mins from 7:30 PM–10:00 PM",[[16,23,[[5]]]]]],[2,[[6,0,"","None","6
AM"],[7,0,"","None","7 AM"],[8,0,"","None","8 AM"],[9,0,"","None","9
AM"],[10,0,"","None","10 AM"],[11,8,"Usually not too busy","Up to 15
mins","11 AM"],[12,12,"Usually not too busy","Up to 15 mins","12
PM"],[13,16,"Usually not busy","None","1 PM"],[14,17,"Usually not too
busy","Up to 15 mins","2 PM"],[15,18,"Usually not too busy","Up to 15
mins","3 PM"],[16,23,"Usually not too busy","Up to 15 mins","4
PM"],[17,30,"Usually not too busy","Up to 15 mins","5 PM"],[18,39,"Usually
not too busy","Up to 15 mins","6 PM"],[19,45,"Usually busy","Up to 30
mins","7 PM"],[20,45,"Usually busy","Up to 30 mins","8 PM"],[21,39,"Usually
busy","Up to 30 mins","9 PM"],[22,29,"Usually not too busy","Up to 15
mins","10 PM"],[23,18,"Usually not too busy","Up to 15 mins","11
PM"],[0,10,"Usually not too busy","Up to 15 mins","12 AM"],[1,4,"Usually
not too busy","Up to 15 mins","1 AM"]],0,["Peak wait up to 30 mins from
7:00 PM–10:00 PM",[[16,23,[[5]]]]]],[3,[[6,0,"","None","6
AM"],[7,0,"","None","7 AM"],[8,0,"","None","8 AM"],[9,0,"","None","9
AM"],[10,0,"","None","10 AM"],[11,6,"Usually not too busy","Up to 15
mins","11 AM"],[12,12,"Usually not busy","None","12 PM"],[13,16,"Usually
not busy","None","1 PM"],[14,16,"Usually not too busy","Up to 15 mins","2
PM"],[15,15,"Usually not too busy","Up to 15 mins","3 PM"],[16,19,"Usually
not too busy","Up to 15 mins","4 PM"],[17,33,"Usually not too busy","Up to
15 mins","5 PM"],[18,52,"Usually busy","Up to 30 mins","6
PM"],[19,62,"Usually busy","Up to 30 mins","7 PM"],[20,57,"Usually
busy","Up to 45 mins","8 PM"],[21,44,"Usually busy","Up to 45 mins","9
PM"],[22,31,"Usually busy","Up to 30 mins","10 PM"],[23,21,"Usually not too
busy","Up to 15 mins","11 PM"],[0,14,"Usually not busy","None","12
AM"],[1,7,"Usually not busy","Usually none","1 AM"]],0,["Peak wait up to 45
mins from 8:00 PM–9:30
PM",[[16,23,[[5]]]]]],[4,null,1,[""]],[5,[[0,19,"Usually not too busy","Up
to 15 mins","12 AM"],[1,7,"Usually not busy","None","1
AM"],[2,0,"","None","2 AM"],[3,0,"","None","3 AM"],[4,0,"","None","4
AM"],[5,0,"","None","5 AM"],[6,0,"","None","6 AM"],[7,0,"","None","7
AM"],[8,0,"","None","8 AM"],[9,0,"","None","9 AM"],[10,0,"","None","10
AM"],[11,11,"Usually not too busy","Up to 15 mins","11 AM"],[12,21,"Usually
not too busy","None","12 PM"],[13,27,"Usually not too busy","Up to 15
mins","1 PM"],[14,28,"Usually not too busy","Up to 15 mins","2
PM"],[15,28,"Usually not too busy","Up to 15 mins","3 PM"],[16,37,"Usually
busy","Up to 30 mins","4 PM"],[17,59,"Usually busy","Up to 30 mins","5
PM"],[18,83,"Usually busy","Up to 1 hour","6 PM"],[19,98,"Usually busy","Up
to 1 hour","7 PM"],[20,100,"Usually busy","Up to 1h 15m","8
PM"],[21,92,"Usually busy","Up to 1h 15m","9 PM"],[22,79,"Usually busy","Up
to 1 hour","10 PM"],[23,60,"Usually busy","Up to 45 mins","11
PM"]],0,["Peak wait up to 1h 15m from 8:00 PM–10:00
PM",[[16,22,[[5]]]]]],[6,[[6,0,"","None","6 AM"],[7,0,"","None","7
AM"],[8,0,"","None","8 AM"],[9,6,"Usually busy","Up to 30 mins","9
AM"],[10,14,"Usually busy","Up to 30 mins","10 AM"],[11,24,"Usually not too
busy","Up to 15 mins","11 AM"],[12,34,"Usually not too busy","Up to 15
mins","12 PM"],[13,40,"Usually not too busy","Up to 15 mins","1
PM"],[14,39,"Usually not too busy","Up to 15 mins","2 PM"],[15,37,"Usually
not too busy","Up to 15 mins","3 PM"],[16,38,"Usually not too busy","Up to
15 mins","4 PM"],[17,46,"Usually busy","Up to 30 mins","5
PM"],[18,60,"Usually busy","Up to 45 mins","6 PM"],[19,74,"Usually
busy","Up to 45 mins","7 PM"],[20,81,"Usually busy","Up to 1 hour","8
PM"],[21,77,"Usually busy","Up to 1 hour","9 PM"],[22,64,"Usually busy","Up
to 45 mins","10 PM"],[23,45,"Usually busy","Up to 45 mins","11
PM"],[0,28,"Usually busy","Up to 30 mins","12 AM"],[1,14,"Usually not too
busy","Up to 15 mins","1 AM"]],0,["Peak wait up to 1 hour from 8:30
PM–10:00 PM",[[16,22,[[5]]]]]]]
On Wed, Nov 22, 2017 at 7:27 PM, m-wrzr<EMAIL_ADDRESS>wrote:

Hey,
there are no plans to port this to node, please also check #8
https://github.com/m-wrzr/populartimes/issues/8 and #9
https://github.com/m-wrzr/populartimes/issues/9
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/m-wrzr/populartimes/issues/11#issuecomment-346357031,
or mute the thread
https://github.com/notifications/unsubscribe-auth/APVb-MV8AfzWmZBUGxi426bUw5RLFc7aks5s5Cg_gaJpZM4QhnK7
.

--
K.v.lakshmi


How to define asynchronous function callbacks

I'm not clear on how to define asynchronous function callbacks. I tried the function (got-data) below but that doesn't work (never gets invoked).
;;; Data file path
(var *CSV* "spots.csv")

;;; Fetch data (using d3's asynchronous CSV file fetcher)
(d3.csv *CSV* got-data)

;;; callback
(def got-data (err data)
  (if err
    (throw err)
    (console.log (JSON.stringify data))))

Thanks in advance.

Hi! Looks like it's a matter of definition order to me.  Although javascript allows "hoisting" of variables, sibilant intentionally does not support hoisted functions.  This means that the definition of got-data needs to be above the first use thereof, like this:
;;; Data file path
(var *CSV* "spots.csv")

;;; callback
(def got-data (err data)
  (if err
    (throw err)
    (console.log (JSON.stringify data))))

;;; Fetch data (using d3's asynchronous CSV file fetcher)
(d3.csv *CSV* got-data)

Alternatively, you could define it anonymously, as follows:
(d3.csv "spots.csv" (#(err data)
  (if err
    (throw err)
    (console.log (JSON.stringify data)))))

Thanks. I had figured as much in the meantime, though was surprised because I had for some (odd) reason thought that definition order did not matter.


Adaptivecards

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: tausifaf sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Closing this, as it seems like an accidental PR to the wrong place.


Report of winpty_get_console_process_list taking 30 seconds

See https://github.com/Tyriar/node-pty/commit/a169ca224661031533bd21fd504333ed29c84c25#commitcomment-26318335 which says that pty.getProcessList is taking 30 seconds to return an empty array. There isn't much to that function other than calling the new API winpty_get_console_process:
https://github.com/Tyriar/node-pty/blob/12caa78c871caa388b013ab9d2e327f2b0a3a76e/src/win/pty.cc#L87-L112
Commit that pulled in winpty_get_console_process.
/cc @rprichard @the-ress

The non-console process tree API version I put together for this used an AsyncWorker to prevent any negative effects if IO took too long https://github.com/Microsoft/vscode-windows-process-tree/blob/master/src/worker.cc


Add stakefish operator

stakefish
Description: stakefish is the leading validator in the crypto ecosystem
Ethereum Address: 0x5D92C75d897e1e17a09F73376e1740Ba9aBa9b92
Validator Address: 9D102BF8C81C99412C28C6AB14730DAE8B45B725

Registered and verified all opt-ins.


Implemented a simpler version of summary

Pull Request Test Coverage Report for Build 319

203 of 263 (77.19%)  changed or added relevant lines in 17 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+1.9%) to 78.354%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/main/java/seedu/planner/commons/events/ui/ShowSummaryTableEvent.java
0
1
0.0%

src/main/java/seedu/planner/logic/commands/SummaryCommand.java
2
3
66.67%

src/main/java/seedu/planner/ui/SummaryDisplay.java
1
2
50.0%

src/main/java/seedu/planner/model/Month.java
30
32
93.75%

src/main/java/seedu/planner/commons/util/DateUtil.java
16
19
84.21%

src/main/java/seedu/planner/model/summary/DaySummary.java
32
36
88.89%

src/main/java/seedu/planner/model/summary/MonthSummary.java
32
36
88.89%

src/main/java/seedu/planner/logic/commands/SummaryByDateCommand.java
10
15
66.67%

src/main/java/seedu/planner/logic/commands/SummaryByMonthCommand.java
9
14
64.29%

src/main/java/seedu/planner/model/summary/SummaryByDateList.java
14
22
63.64%

Totals

Change from base Build 314:
1.9%

Covered Lines:
2056

Relevant Lines:
2624

💛  - Coveralls


Use --visibility=public while creating a glance image

--is-public is no longer a valid option when creating a image
with "glance image-create".

Tested with cloudsourc=openstackjuno . works

Since I mentioned WIP before, I just wanted to say no longer WIP.

LGTM


[Question]: How to disable tree-sitter conceals in hybrid modes?

Creating this to ask Ques.
As Discussion tab is not available.

As in this preview, the current line is not concealed, how to get that behavior?

You need to set the concealcursor option(it's not done by default since the value will change based on your use case).
For the demo I used.
{
  modes = { "n", "c" },
  hybrid_modes = { "n" },

  callbacks = {
    on_enable = function (_, win)
      vim.wo[win].conceallevel = 2;
      -- This will prevent Tree-sitter concealment being disabled on the cmdline mode
      vim.wo[win].concealcursor = "c";
    end
  }
}

https://github.com/user-attachments/assets/b7101197-cf1b-4e2a-b0c6-2e6c125eac70
Facing this odd behavior.
If I go I insert mode, then every thing goes unconcealed.

2024-08-08-18-13-53.mp4
Facing this odd behavior. If I go I insert mode, then every thing goes unconcealed.

This is bug. I am almost done fixing it.


HideMentions() not called when pasting text.

Hey thank you for the lib,
When you type in @ the showMentionsList() method is called, so the list of possible mentions is displayed. But when pasting (or adding an emoji) there is no call to hideMentions() so the list remains.
I suggest calling hideMentions() in func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String).
Thanks,

@szweier Sorry for the late reply too I was away for while.
I will explain more precisely the problem I see because reading myself again I admit it's not clear at all:

If I type in "@h"
Then I have some mentions displayed matching the "h" text
Then if I paste "abc" when my cursor is right after "h"
I get "@h abc" with my cursor after "abc"
I'm not sure what the problem is here, but I would expect showMentionsListWithString to be called with "h abc" but it's not and the list of suggested mentions remains
So then I tap one of the suggested mentions, let's say "henry"
=> the full name is inserted before the pasted text so I get "henry  abc" and the cursor is after "henry ", and before " abc"

I hope you see the problem. I can reproduce these steps using your example app so I guess I'm using the lib correctly. Let me know if I can be of any help.

@Footjy please try this branch https://github.com/szweier/SZMentionsSwift/pull/88


Add the instructor guide to the website

If the instructor guide has things we'd like to keep private we could host it in the private homework repo.

This is the draft document from the end of 2022:
TA guide.docx

Here is an example instructor guide from on of my old courses (this course is much more elaborate but gives and idea): https://moorepants.github.io/eme185/pages/instructor-guide.html

Taken from #6 :

Prepare lecture notes (in the form of a sphinx based website where each page is downloadable as a Jupyter notebook)
Prepare homework design guidelines
Proofread lecture notes
Record lecture videos based on the lecture notes and post to youtube
Design autogradable nbgrader/jupyter homeworks that test competency of the weeks lecture videos.
Use nbgrader to grade notebooks and distribute back to the students
Answer questions in the class online forum
Answer questions during the work sessions
Setup and test vocareum for jupyter notebook homeworks
Create an exam
Organize the exam
Grade the exam

We should probably host this in the private homework repo for now.


Setting value of Two Options type field

Is there a method which allows for the setting of the value of an entity of type 'Two Options'?
This seems like it should be the right method to call:
xrmBrowser.Entity.SetValue(new OptionSet { Name = "bsp_highrisk", Value = "No" });
but in fact all it does is toggle the existing value.
Here's a form with four such fields, two have a default Yes, two have a default No:

If we try and set them all to No like this:
                xrmBrowser.Entity.SetValue(new OptionSet { Name = "bsp_highrisk", Value = "No" });                 xrmBrowser.Entity.SetValue(new OptionSet { Name = "bsp_tradesanctionsapply", Value = "No" });                 xrmBrowser.Entity.SetValue(new OptionSet { Name = "bsp_iscountry", Value = "No" });                 xrmBrowser.Entity.SetValue(new OptionSet { Name = "bsp_isdemonym", Value = "No" });
we end up with values like this:

and we end up with the same results if we try and set them to Yes.
So I think all that is happening is that the 'SetValue' command is selecting the field and thereby toggling the value.
I also tried this:
xrmBrowser.Entity.SetValue("bsp_highrisk", true);
but this does nothing, which is to be expected as this is the method for checkboxes.
I could deal with this by checking the value of the field before changing it, but wondered if there is a better way to do this, or anything coming in a future release to address this.

Hi @bwmodular,
I have also faced this issue and I am using this below scenario to overcome such risk.
You can try this.
string IsCountryOptionPrior = xrmBrowser.Entity.GetValue(new OptionSet { Name = "bsp_iscountry" });
if (IsCountryOptionPrior == "Yes")
{
xrmBrowser.Entity.SetValue(new OptionSet { Name = "bsp_iscountry", Value = "No" });
}
Or vice versa if you want any field to set it as Yes.

Thanks @SantoshDutt - That will work perfectly until the team add a more permanent fix to 'SetValue'. Maybe I'll even post a PR if I have time...

@TYLEROL will TwoOption field capability be added for UCI?
or do you have a suggestion on how to GetValue of a TwoOption field?

hello, you have been able to solve the problem of attributes of two options ... I can not set the value of two options

hello, you have been able to solve the problem of attributes of two options ... I can not set the value of two options

Yes @jimmymunoz83 , use this format passing in a boolean for the value:
xrmBrowser.Entity.SetValue(new TwoOption { Name = "fieldname", Value = "false" });

I am using UCI on-premise and still unable to change a value from option set. I have tried below:
XrmApp.Entity.SetValue(new Api.UCI.OptionSet { Name = "vrp_isuploaded", Value = "Yes" });
XrmApp.Entity.SetValue(new Api.UCI.OptionSet { Name = "vrp_isuploaded", Value = "1" });
Please guide me if anyone has a solution


Implement User API Module.finishInstantiate.

This PR adds finishInstantiate, which can be override by user and add code blocks at last of the Module.
Currently, A library-writer can add code blocks at the begin of Module by providing trait, and let user extend it. However it is impossible to append a code block to last of user codes.
There are some important usage, for example,
DataMirror all user IO, and annotate them.
Let user define a list of registers/wires, and annotate them automaticlly.
Auto connection, like what we did in diplomacy.
Contributor Checklist

[x] Did you add Scaladoc to every public function/method?
[ ] Did you add at least one test demonstrating the PR?
[x] Did you delete any extraneous printlns/debugging code?
[x] Did you specify the type of improvement?
[ ] Did you add appropriate documentation in docs/src?
[x] Did you state the API impact?
[x] Did you specify the code generation impact?
[x] Did you request a desired merge strategy?
[ ] Did you add text to be included in the Release Notes for this change?

Type of Improvement

new feature/API

API Impact
add Module.finishInstantiate
Backend Code Generation Impact
None
Desired Merge Strategy

Rebase: You will rebase the PR onto master and it will be merged with a merge commit.

Release Notes
add Module.finishInstantiate to let user insert code block at the end of Module.
Reviewer Checklist (only modified by reviewer)

[ ] Did you add the appropriate labels?
[ ] Did you mark the proper milestone (3.2.x, 3.3.x, 3.4.x, 3.5.0) ?
[ ] Did you review?
[ ] Did you check whether all relevant Contributor checkboxes have been checked?
[ ] Did you mark as Please Merge?

this sounds like LazyModule's InModuleBody... but agree it doesn't make sense at least as a one-time call.
Why is this generally needed? There already exist several mechanisms as mentioned for this sort of thing (Aspects, diplomacy's LazyModule), what would a typical use case be?

@mwachs5 this sounds like LazyModule's InModuleBody.

For user-API this is InModuleBody, but for library writer, it is the instantiate function.

@jackkoenig That sounds a lot like aspects to me.
Maybe what we want here is a lighter-weight aspect API, I'm not sure.
@mwachs5 Why is this generally needed? There already exist several mechanisms as mentioned for this sort of thing (Aspects, diplomacy's LazyModule), what would a typical use case be?

I admit this API is something similar to Aspect. Here are some different points:
Aspect can only access public API in a module, while this API is more flexible, since user is defining this API in their own module, only put it at last block to instantiate.
This API is more light-weight, there are no additional passes.
while diplomacy is a pretty big library, I'd like it to be extracted from Rocket-Chip and server as a standalone library to users, but even it may becomes a standalone library in the future, it is too big for this demand(we only need to put a block in the end of entire Module), and I'd like diplomacy use this new future in the future, which can clean up its code bases.

@jackkoenig Perhaps we could constrain these "finish actions" to not be able to generate any hardware, only inject annotations.

But I still think we can construct hardware here, Diplomacy has the instantiate function, and it requires constructing hardware.

@jackkoenig Say we do something different, rather than a single method to override, you can call something like registerFinishAction(f: () => Unit) that registers functions to call at the end. You still run into ordering issues, what if you have an action that don't touches all ports but then another action runs after it that adds another port?

That sounds better! but abstract override could also meet the sequence demand, here is a blog to illustrate(currently I'm using this), but I admit this is some black magic in Scala, and we should not encourage users to do so. So in my next reversion, I will use your suggesting to rewrite this API.

@jackkoenig I think I still need this API:
For a use case that make an inner module being able to insert block to the outer module.
We can discuss this later in dev-meeting.


deploy: update rook installation to default latest version

this commit update the rook release to latest 1.10.9.
Signed-off-by: Humble Chirammal<EMAIL_ADDRESS>

As the image needs to be pushed for https://github.com/ceph/ceph-csi/pull/3609. let's wait for a day to start CI tests on this PR.

/retest ci/centos/mini-e2e-helm/k8s-1.25

/retest ci/centos/mini-e2e-helm/k8s-1.25

/retest ci/centos/mini-e2e/k8s-1.24

@mergifyio requeue


fix(sdk): Propagate transformer ID during re-deployment

What this PR does / why we need it:

This PR exposes the Transformer id to the SDK methods so that, in the event of a model redeployment, the transformer's ID can be re-used to trigger an update.
Which issue(s) this PR fixes:

Model redeployment capabilities were added to the SDK in https://github.com/caraml-dev/merlin/pull/455. With this, however, transformer updates were not being done correctly and instead, a new transformer entity would be attempted to be created with every version endpoint update (re-deployment). The re-deployment operation would eventually fail with an error like below, leaving the endpoint stuck in the "pending" state:
unable to update endpoint status for model: abcd, version: 2, reason: ERROR: duplicate key value violates unique constraint "transformers_version_endpoint_id_key" (SQLSTATE 23505)

This PR addresses this issue by exposing the transformer's id to the SDK and copying the id to the new transformer specs, during version endpoint updates.
Summary of changes

swagger.yaml - Update Transformer specs to include id
api/client/, python/sdk/client/ - Re-generate client code
python/sdk/merlin/endpoint.py - Add transformer property to VersionEndpoint
python/sdk/merlin/model.py

Propagate transformer id during re-deployment
Re-get the endpoint after a deployment so that its status would've updated to "pending". When updating an endpoint (PUT), the status change to "pending" is not immediate and may not be reflected in the response from the update call.

python/sdk/merlin/transformer.py - Add id property to the Transformer class
python/sdk/test/integration_test.py - Expand the re-deployment test case to cover the id check for transformer. In the test case, the Tensorflow model (which requires a specific input) is replaced with a custom model so that the echo transformer can be used alongside.
python/sdk/test/model_test.py - Update mock responses, owning to the change in python/sdk/merlin/model.py to re-get the version endpoint after deployment.

Does this PR introduce a user-facing change?:

Fix: Update transformer specs correctly when re-deploying a model through the SDK

Checklist

[x] Added unit test, integration, and/or e2e tests
[x] Tested locally
[ ] Updated documentation
[ ] Update Swagger spec if the PR introduce API changes
[x] Regenerated Golang and Python client if the PR introduce API changes

LGTM, thanks @krithika369 !


Introduce choice state

I need to introduce choice state. Only role of such state is to check some conditions and conditionally redirect to another state.
Please check also plant uml documentation:
https://plantuml.com/state-diagram#8bd6f7be727fb20e
I know that check can be done in previous state, but unfortunately it is not always good idea. Often such state is some kind of hub where a lot states has transitions to (so logic must be duplicated in many states to avoid check state).
I have also a lot of such situations. I have several blocks of states. One block (which is a also the state) redirects to next block when child state has no transition to next state in the same block.
Sometimes blocks are conditional. So, after some initial check, choice state decides if internal states of block must be processed or to go to next block.
I implemented initial check like that:
fun IState.initialChoiceState(
    name: String? = null,
    block: UnitGuardedTransitionBuilder<Next>.() -> Unit
) {
    var argument: Any? = null
    onEntry {
        argument = it.argument
    }
    initialState("initialChoiceState${hashCode()}<<choice>>") {
        onEntry {
            machine.processEvent(Next, argument)
        }
        transition(name, block)
    }
}

And it used like that (some simplified case):
        addState(RBlock) {

            transition<Next>(targetState = DBlock)

            initialChoiceState {
                guard =
                    { someCheck() }
                targetState = A
            }

            addState(A) {
                transition<Next>(targetState = R)
            }

            addState(R)
        }

        addState(DBlock) {
...
      }

It works OK, but is not the best solution. Internally processEvent is called which typically throws an exception. I need to block the exception like that:
        pendingEventHandler = StateMachine.PendingEventHandler { pendingEvent, _ -> }

Question: could you implement some alternative way to make choice states, without such "hacks"? Sending next event in choice state is something which I want to avoid, just conditionally go to another state.

This looks useful, I will see what I can do.
Note that your current implementation with "quite" pending event handler does not seem to be correct. This will mix notifications. Pending event handler may put event to some kind of queue to be processed after current event processing completes.

https://github.com/nsk90/kstatemachine/wiki#conditional-transitions
Currently take a look at this, maybe it may help.

Added choice state support in v0.12.0
But there is no "guard" functionality on such pseudo states. Currently it is not possible to use them as initial states. Maybe it will change in future, I am not sure write now.

In v0.13.0 kstatemachine allows processing of pending events out of the box.


YAML name enhancements for JavaToolInstaller and related tasks

@DavidStaheli Is this going in or can we close it?

Ah, I forgot about this one.  Do you mind if we keep it around for S138 and I'll get to it?

Sounds good thanks! Was just going through all the tasks PRs so we can close ones that aren't needed any more :)

@DavidStaheli Is this still going on?


Add chadcn/ui

Add chadcn/ui to project.
Update the project UI to use chadcn/ui

Hey @RuanAragao Can I work on this issue ?

Hey @RuanAragao Can I work on this issue ?

Shure!


Switched to .Net Standard 1.3 compatible Websocket library

Feel free to clean it up a bit, I put it together on a train :P
May need a bit more testing.
It's a start at making TwitchLib .Net Core compatible, as System.Net.Websockets.Client is .Net Standard 1.3 and Mono compatible.
Maybe we can look at Meebey next, and get an internal IrcClient written.
WARNING: it does change the target client profile to .Net 4.6

Woah, good work, this looks promising.
Will merge and test a bit, but it'd be awesome to eliminate a dependency. Thanks!

I too was wondering about that.
There are a lot of projects out there that haven't broken past 4.5.2 yet.


Unreadable colored messages on some backgrounds.

Low contrast resulting in pain while reading, would recommend adding config options to change the color scheme.

This has been asked a couple times. It is literally impossible to make a scheme that works for everyone. If you change the config for you, everyone else in the channel probably no longer likes it.
You can always turn off colors.


Add Serialize and Deserialize support

It's not clear to me why the build is failing because:

sqlite3_serialize() is available in the C source.
SQLITE_OMIT_DESERIALIZE is not defined anywhere that I can see so the C function should be available.

What am I missing?

Codecov Report

Merging #1089 (1d8534a) into master (3392062) will decrease coverage by 0.06%.
The diff coverage is 50.00%.

@@            Coverage Diff             @@
##           master    #1089      +/-   ##
==========================================
- Coverage   46.80%   46.74%   -0.07%
==========================================
  Files          11       11
  Lines        1457     1521      +64
==========================================
+ Hits          682      711      +29
- Misses        640      670      +30
- Partials      135      140       +5

Impacted Files
Coverage Δ

sqlite3.go
53.76% <50.00%> (+0.69%)
:arrow_up:

sqlite3_go18.go
82.35% <0.00%> (-5.89%)
:arrow_down:

sqlite3_type.go
0.00% <0.00%> (ø)

callback.go
58.53% <0.00%> (+0.37%)
:arrow_up:

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

@otoolep Prior to v3.36.0, sqlite3_serialize and sqlite3_deserialize were opt in via -DSQLITE_ENABLE_DESERIALIZE. This is why the libsqlite3 tests are failing. Also now they are opt out via -DSQLITE_OMIT_DESERIALIZE, which we should support.
We will either need a Go build tag to enable these new methods, or a tag to disable them. Personally, my preference would be to make it opt out so things "just work" by default, but technically that could be a breaking change for anyone currently using the libsqlite3 tag. @mattn what do you think?

Personally, my preference would be to make it opt out so things "just work" by default

Do you mean that the functions return like ErrNotImplemented?

@mattn Historically this library has been inconsistent between having alternate version of the Go methods that return errors, or simply not defining the Go methods at all. I don't care which one we do here. The important part is that if you opt out (or don't opt in, depending on our approach), we never attempt to reference the C functions.

I can add a build tag for either option (opt-in or opt-out), I forgot about the libsqlite3 tests. The lack of this patch is the only thing forcing rqlite to use a fork of this repo.

type Serializable interface {
  Serialize(schema string) []byte
}

if ser, ok := conn.(Serializable); ok {
  b = ser.Serialize(name)
  // blah
} else {
  // not implemented
}

We can do check whether the SQLiteConn has methods like above, I think. @rittneje what do you think?

@mattn The underlying problem is we cannot reference the sqlite3_serialize or sqlite3_deserialize C functions if SQLite itself was compiled without them. For the statically compiled version this is simple because we control the build options, but for someone linking against their system version we have no way of knowing unless they tell us. There are the choices I can see:

We make our references to those two C functions opt out. This means anyone using libsqlite3 today could be broken (if their system version was compiled without support) and will have to add an additional Go build tag so we don't attempt to reference those functions.
We make our references to those C functions opt in. This preserves backwards compatibility for anyone using libsqlite3 today, but in exchange anyone that wants to use these new Go methods is required to pass an additional tag to go build, which is annoying.
We always exclude these new methods if libsqlite3 is defined.
We make these new methods opt in if you are using libsqlite3. Otherwise they are always defined.
We make these new methods opt in if you are using libsqlite3, and opt out if you aren't.

Us dynamically checking what methods SQLiteConn has does not help, since we are the ones that have to define those very methods in the first place.

Thanks your explaining. As you mentioned above, let's add sqlite_omit_deserialize.

To be clear, you are saying to do option 1 from my list?

I have thought about this for a little while and I expect the following.

opt-in if using libsqlite3, default is undefined
always enabled if libsqlite3 is not used

I assume that people who use libsqlite3 are expecting minimalism and they does not want these functions. I guess.

I assume that people who use libsqlite3 are expecting minimalism and they does not want these functions. I guess.

Depends on their use case. They could also just want consistency across applications written in multiple languages.

@rittneje @mattn -- does this look like what you had in mind?
I also don't understand the "dockerfile" CI failure. Can you help?

I also don't understand the "dockerfile" CI failure. Can you help?

Seems that #1085 changed the output of the sample program, but did not change the expectation in the GitHub action, so it fails. https://github.com/mattn/go-sqlite3/blob/7476442ed657d21b68b04e6ba2ae173f98265cf8/.github/workflows/docker.yaml#L22
That said, I don't know why the output is checked in both the Dockerfile itself as well as the GitHub action. @mattn Can one of them be removed?

please substitute こんにちわ世界099 to こんにちは世界099

If you want me to squash the commits, I can do that. Just let me know.

If you want me to squash the commits, I can do that. Just let me know.

Don't worry, we can squash during the merge.

I think we're good now. Let me know there are more required changes.

What do you guys think, ready to merge?

@rittneje -- I think we're good to merge this? Anything else need doing? The test has been updated, and all tests pass.
With this merged I can return to using this repo, and dump my fork.

Thank you! Looking forward to moving back to this repo, and away from my fork.

@otoolep Thank you.


Detail Pages filter by Type

Closes #2253
Added a custom filtering config and added support for filtering rows based on type in the filterRows function.

In SourcesTable and AutomationsTable, I hacked a similar thing into being by doing
  sources = sources.map((s) => {
    return { ...s, type: displayKind(s.kind) };
  });

so I could call filterConfigForString(sources, "type") after. Which, I'm not proud of. Also, I wish that if we introduce a filterConfigForType, then I could just ploink it in secretly and have everything be a little bit nicer.
So now I started thinking. In the DataTable itself, every value can either be a string, in which case we look it up in the object, or a function, in which case we call the function with the row as the value. When I first looked at this code my intuition was that if I can pass it to the table itself, I should be able to pass it to a filter function - then I learned it doesn't work this way. But, would it be hard to make it work the same? So, like a filterConfigForCallback that takes a function, or just a filterConfig that always works the same as DataTable?

In SourcesTable and AutomationsTable, I hacked a similar thing into being by doing
  sources = sources.map((s) => {
    return { ...s, type: displayKind(s.kind) };
  });

so I could call filterConfigForString(sources, "type") after. Which, I'm not proud of. Also, I wish that if we introduce a filterConfigForType, then I could just ploink it in secretly and have everything be a little bit nicer.
So now I started thinking. In the DataTable itself, every value can either be a string, in which case we look it up in the object, or a function, in which case we call the function with the row as the value. When I first looked at this code my intuition was that if I can pass it to the table itself, I should be able to pass it to a filter function - then I learned it doesn't work this way. But, would it be hard to make it work the same? So, like a filterConfigForCallback that takes a function, or just a filterConfig that always works the same as DataTable?

If I'm understanding this correctly - yes it's hard because we usually want to return different things based on whether we're converting the data for table use or filter use. Sometimes we're returning a component, or a different string than the one we want displayed to the user in the filters. I think most of this issue was brought about simply because we made the sorting first, and the filtering second - there's definitely some overlap where things could be simplified....probably.

To be clear: I don't want to block this PR until the whole filtering system has been rewritten. My specific question is "could we make this more general", which is what I think filterConfigForCallback would be - and as it's a question, the answer can be "no".
"Could we enable filtering of everything we can display" is 100% out of scope - that's me thinking out loud.

@ozamosi thanks, an interesting suggestion, I need to think about.
Want to try your mapping hack first.

@ozamosi @jpellizzari @joshri Added a filterConfig which accepts a key and optionally a callback.
Added tests to test filtering by type with callback.


packages.yaml: reflect python-ceph package split

Signed-off-by: Nathan Cutler<EMAIL_ADDRESS>

:+1:


Graph Collections vs Objects created on the activity summary.

sample per week for the past 90 days.
See projecthydra-labs/hyku#431 for mockup.

Probably want to use a facet on date-created


Takeoff possibly broken in SITL on stable branch

I used the general procedure, but instead of using the master branch, I tried to take off in SITL in the stable branch
$ git clone https://github.com/PX4/Firmware.git --verbose ;
$ cd Firmware;
$ git checkout stable
$ git pull origin stable
$ git submodule update --init --recursive
$ make -j4 posix_sitl_default jmavsim

The quad becomes unstable when it takes off the ground.
The takeoff is fine on the master branch tho.

Did you try autotakeoff command in reallife? i have the same behaviour there. 3 crashes and i thought it is my code. but now with stable stack as SITL i know it seems to be a firmware thing. I think this is critical for a stable firmware.

@TobiMiller Actually for the real hardware, I flashed the latest firmware provided from qgroundcontrol, not directly from the stable branch on PX4/master.
I directly use the C UART Interface to arm and fly without ever passing by auto takeoff or qgroundcontrol : footage.
Altho this happens on the stable branch, it doesn't on the master one.

There is not enough context here - what does not work for you?

@LorenzMeier When you do a make posix_sitl_default jmavsim on the stable branch, everything works fine, except when you try to do a commander takeoff from the NuttX shell, the quad crashes.
Is there any difference between the stable releases, the PX4 [stable] (http://px4-travis.s3.amazonaws.com/Firmware/stable/index.html) firmware (used by QGroundControl) and the  stable branch of PX4 ?

No, those are all in sync. There will be a stable release within the next days.

@LorenzMeier Could you please check if you can reproduce this bug? It doesn't happen at all with the master branch.

@dagar I've test it again, the drone takes off to a stable position. You may close this issue.


Update README file with docker build details.

@AlvinMooreSr Oops I closed it too soon. Sorry about that.


⚠ Jenkins Plugins Artifactory has degraded performance

In 0ba6a59, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1413 ms

Resolved: Jenkins Plugins Artifactory performance has improved in a7678e1 after 52 minutes.


[Hue] Can't control lights after last update

Extension
https://www.raycast.com/pindab0ter/hue
Description
Error:
Error: unknown hex color: #NaNNaNNaN

Hn:chroma.js:804:14

---
801:         // if _input.css? and rgb = _input.css hex
802:         //     return rgb
803:
804:         throw new Error(("unknown hex color: "   hex))

Steps To Reproduce
I don't know exactly the steps to reproduce but I suppose it's because I have smart plugs which is considered as lights by Hue but don't have any hex color control. I also have a smart switches inside walls connected to Hue. I'm not sure if it's related.
Current Behaviour
When enter "Control Lights" command, we see this error:

Expected Behaviour
Access "Control Lights" command normally

Could you fix the formatting and finish your sentence? I'll start looking into it in the meantime.

Could you tell me more about when exactly this happens? Are you adjusting individual lights or groups? Are you changing the colour/brightness, or are you setting a scene? Please tell what steps you take to reach the error.


HIVE-26118: [Standalone beeline] Jar name mismatch in assembly (Naveen Gangam)

What changes were proposed in this pull request?
The jar name the beeline standalone assembly build is looking for, original-jar-with-dependencies.jar, does not match the name of the jar being built by the beeline build, jar-with-dependencies.jar. So the uber jar is not being bundled into the final apache-hive-beeline.xxx.tar.gz
Why are the changes needed?
To include the uber jar into the beeline assembly.
Does this PR introduce any user-facing change?
No
How was this patch tested?
Manually

lgtm, +1

The 2 test failures seem random as these 2 have passed in the prior run where there was a different test failure. I do not see a connection between the failures and the fix.


Model Site problem when integrating with django-allauth

Django-allauth need django.contrib.sites installed, and use the site model often.
But wagtail has its own site model, and has different fields with django's.
How to solve this?

Hi @fakegit - is there anything that prevents you from using both apps/models side by side?

Exactly, no.
I just consider how to use one site model to solve this.
Finally, I tried to use both site model, make django's site just a copy of wagtail's.

@fakegit Would you mind sharing how you managed to get django-allauth working with wagtail?  How did you override the django.contrib.sites with the copy of wagtail's sites app? Have you run into any issues after implementing this workaround?
@gasman We can't be the only ones who have tried to setup django-allauth with wagtail... When I run the application with both the django and wagtail 'sites' apps, I'm running into some issues in which I can't really explain exactly where the issue is happening.  Static files not loading when running the application on local dev server- but I'm not seeing any errors on the client or server logs.  Just appears to be some crossed wires between the two 'sites' applications.

id also like to know how to get both wagtail and allauth working side by side, but so far i had no luck - any advances on this regard since one year ago? @DevinCalado  did you get it to work in the mean time?


problem with genSequence function

Hi, I'm trying to reproduce the tutorial locally and I have the following error:
> seq_train <- genSequence(df_train)
Generating data ...
Error in y[index, 1] <- reading_y :
  number of items to replace is not a multiple of replacement length

I'm running it on Windows 10 with Microsoft R Open 3.4.1.

Hey @demillan sorry for belated reply. Can you point to which of the tutorials you are referring to? Thanks!

Solar Panel Forecasting
https://github.com/Microsoft/acceleratoRs/blob/master/SolarPanelForecasting/Code/SolarPanelForecastingCode.Rmd
Thanks.

Hi @demillan the bug was fixed. Please try again and let me know if it works. Cheers.

Hi @yueguoguo, it seems to be fixed. Thanks!

@demillan Cool glad to hear that. :)


added wizard.

added option to switch to wizard mode, If user/client faces problem in giving command or give incorrect arguments in CLI.

Hello @alexdeathway ,
This project is just a fork of upstream (https://github.com/jekyc/wig) that I created in order to submit patches, could you submit to the original project, please?
I will remove this fork as the patch has been sent already,

Hello @alexdeathway ,
This project is just a fork of upstream (https://github.com/jekyc/wig) that I created in order to submit patches, could you submit to the original project, please?
I will remove this fork as the patch has been sent already,

ok, but main repo seems inactive.

ok, but main repo seems inactive.


ZeroWidthSpace in text

Hello,
I've encountered a strange bug where every text retrieved from a Groq query in Sanity CMS contains zero-width spaces. What could be causing this issue?
Thanks in advance!

Hi, this is how stega is implemented, for integrating with Vercel Visual Editing and Sanity Presentation.
Somewhere in your code you probably have a client configuration like this:
import {createClient} from '@sanity/client'

const client = createClient({
  // ... other options
  stega: {
    enabled: true, // <- this is what adds the hidden characters
    studioUrl: '/studio'
  }
})

Hi, this is how stega is implemented, for integrating with Vercel Visual Editing and Sanity Presentation. Somewhere in your code you probably have a client configuration like this:
import {createClient} from '@sanity/client'

const client = createClient({
  // ... other options
  stega: {
    enabled: true, // <- this is what adds the hidden characters
    studioUrl: '/studio'
  }
})

Thank you


CR Hamiltonian experiment without cr_gate

Summary
Bug fix for CrossResonanceHamiltonian experiment instantiation without cr gate.
Details and comments
self._cr_gate should be assigned before calling super init method since it calls set backend where we check the cr gate.
https://qiskit.slack.com/archives/C02CFNAKURE/p1651458517025279

Thanks Will, actually I found another bug with extra test https://github.com/Qiskit/qiskit-experiments/pull/794/commits/12faf53645f7c94e647108fe425a1106f005823c
self._dt, self._granularity, and self._cr_channel are initialized in the constructor but after the super init method call is accomplished. Since it internally populates these values when it's called with backend through self._set_backend method, these value SHOULD be initialized before the super init method call. Otherwise, populated values are overridden. It's really critical bug.

Thanks,

no backend with cr_gate currently

This is tested in test_instance_with_backend_without_cr_gate. When we set the backend later, this is identical to setting them together.


Seq.scan

Not sure if there's an easier way. Having the initial value as the first element is a bit awkward with our set up.

I know so little git commands that I don't know how to merge this :-O!
Anyway, sorry about that, could you patch up and I'll pull it in before I stuff up the main branch again...
(Had a rather nasty Tail issue that I had to resolve. I've "fixed" it - it had to do with who halted the pipeline - before of after the Take (there is an example in the check-in) - and my solution involved basically enumerating the pipeline and using the index to determine where we were. But I numbered things from the tail as 1, and 0 as no halt. But 0 kind of implies the head node halts (i.e. runs out of MoveNext), and so the indexing should be from there. Which would make the logic in OnComplete of Tail make more sense, but I then need a more automatic way of dealing out an id from the consumers with a foreach. Anyway, I probably will flip it around when I have hashed out all those details. But not now.)

I rebased my commit to after yours, so I think it should be good now.

Looking at it again... Does your new implementation even halt anymore? When is result.Halted ever set to 0?

Well it should get halted, 0 is the stream want halted (I.e. it was halted by the natural run to the end of the data source, I.e. MoveNext had returned false and we then are complete, so OnComplete is called with the 0th index). The confusion, as it currently stands, is that my indexing then jumps to the end of the stream and counts up and it gets closer to the start. I.e. in the order of the factory's creation.
So what I will do is give the index to the factory on creation and it will then use that to create the underlying object. But I had already headed down the current path beforei thought about it enough.
Anyway, I'll fix that up tonight hopefully.
As said indexing is bad, and will need to be revisited

OK; Had another attempt at fixing the Take issue. I think it is more intuitive now; although I don't like a mutation that I have added to the factory object; but I didn't really want to have to create another object each time.
The alternative to all of this is just to remove it all, and not implement Take within the Composer framework; but it is a bit of a cop out? Hmmm... Fair bit of complexity to handle that case... I'll dwell on it...

Okay, this implementation makes a lot more sense logically.
If you wanted to remove the mutability, you can maybe do something like this where we basically have a secondary (internal) constructor that takes pipelineDepth as a variable and increments it by 1 when composed. I did choose because it was the closest.
                type [<AbstractClass>] SeqComponentFactory<'T,'U> () =
                [<DefaultValue>]
                val mutable private pipelineDepth: int

                internal new (pipelineDepth:int) as this =
                    SeqComponentFactory() then this.pipelineDepth <- pipelineDepth

                abstract Create<'V> : ISeqPipeline -> SeqConsumer<'U,'V> -> SeqConsumer<'T,'V>

                member this.PipelineDepth =
                    this.pipelineDepth

            and ComposedFactory<'T,'U,'V> private (first:SeqComponentFactory<'T,'U>, second:SeqComponentFactory<'U,'V>, pipelineDepth: int) =
                inherit SeqComponentFactory<'T,'V> (pipelineDepth)
                override __.Create<'W> (result:ISeqPipeline) (next:SeqConsumer<'V,'W>) : SeqConsumer<'T,'W> =
                    first.Create result (second.Create result next)

                static member Combine (first:SeqComponentFactory<'T,'U>) (second:SeqComponentFactory<'U,'V>) : SeqComponentFactory<'T,'V> =
                    let nextDepth = first.PipelineDepth + 1
                    let composed = ComposedFactory(first, second, nextDepth)
                    upcast composed

            and ChooseFactory<'T,'U> =
                inherit SeqComponentFactory<'T,'U>
                val filter : 'T->option<'U>
                private new (filter:'T->option<'U>, pipeLineDepth:int) =
                            { inherit SeqComponentFactory<'T,'U> (pipeLineDepth); filter = filter}
                new (filter:'T->option<'U>) = { inherit SeqComponentFactory<'T,'U> (); filter = filter }
                override this.Create<'V> (_result:ISeqPipeline) (next:SeqConsumer<'U,'V>) : SeqConsumer<'T,'V> = upcast Choose (this.filter, next)

But the factory object gets created in exposed Seq functions at which time it is constructed with no knowledge of the pipeline, which only occurs after the Combine is called? So I don't think that solves the problem (only viewing on my phone so might be missing something). Create could be parametized with the pipeline, but that bleeds to much info out for callers to know about...
Hmmm...

Well, the Combine function on the ComposedFactory takes takes 2 factories first and second. The value of second's depth is not relevant.
If first is a ComposedFactory, it will have a non-default value for pipelineDepth and then we can use that to increment by 1 and our result from Combine will have a deeper pipelineDepth. If first just a user created factory (i.e. Choose), then the pipelineDepth is its default value, which can again be incremented by 1 for the new ComposedFactory, which will have a non-default value for pipelineDepth again.

But the pipeline depth on the Combine is only used as a placeholder. The actual object is created in the underlying factoriesv where the depth will remain as 1...
Ie. TailFactory's Create creates the Tail object which is the one that actually needs the Pipeline depth. It doesn't have access to the Combines Pipelines depth...? Anyway as said, I'm only on my phone. I'll have a play at home tonight.

...I did some cleaning up of it which has been pushed...
Anyway, starting to build some performance figures from different sources. The (gist is here)[https://gist.github.com/manofstick/b685a5acfe99f39f44c9cf06b89d2fe2]. Not much done yet - that's all for tonight though...


wrong speed information

The speed test result only showing 2 - 3 Mbps up and down in magic mirror even if speed test shows 30mbps up&down in this web service https://www.speedtest.net/

I'm having the same issue. Turning on the verbose shows it testing with a server outside my country. This would explain why the test results are wrong. I spent time trying to dig through the code, but can't find where the test server is.


Make release lookup not found errors warnings

@pete-woods, accidentally closed my last PR... but since the list release decorder only returns ErrNotFound, which this PR makes a warning, and we just wrap the error in decodeBody, this would mean that the backoff error would effectively be a warning, as well, and therefore not get reported as an error in the client span?


WIP: Simulator changes for SUIT and multiimage

These are the simulator changes for SUIT and ultimately multi-image support. These are in a separate PR because trying to separate them would just make for a lot of merge conflicts.

Closing this as it is from the wrong branch.


add the "honorRefspec" option to the Git SCM

I understand you refuse to use GitHub; at the same time, I refuse to use Gerrit. Please feel free to do whatever you want with this patch.

Thank you for contributing to openstack-infra/jenkins-job-builder!
openstack-infra/jenkins-job-builder uses Gerrit for code review.
If you have never contributed to OpenStack before make sure you have read the
getting started documentation:
http://docs.openstack.org/infra/manual/developers.html#getting-started
Otherwise please visit
http://docs.openstack.org/infra/manual/developers.html#development-workflow
and follow the instructions there to upload your change to Gerrit.


chore: bump com.google.protobuf:protoc dependency

Description:
This PR bumps com.google.protobuf:protoc dependency and adds a comment for it.
Closes #1910

Thank you @jjohannes, I updated them as well


Adjusting Localization for GNSS Device Positioned at Front Axle

Apollo seems to use the rear axle center as the reference point for localization and navigation. Assuming my GNSS device is located at the front axle of the vehicle, what should I do to ensure the localization data meets the requirements?

OS Platform and Distribution (e.g., Linux Ubuntu 20.04):
Apollo installed from (source or binary):
Apollo version (9.0):

@HandsomeAIccx We recommend that the positioning device is best installed at the center of the rear axle because the IMU will be as stable as possible as it is close to the center of gravity of the vehicle.
https://github.com/ApolloAuto/apollo/blob/e373b206a0dc0360af826152132a61c85cab295c/modules/transform/conf/static_transform_conf.pb.txt#L15-L20
Of course, if there is something special, you need to add the conversion from imu to localization. You need to measure the x, y, z, yaw, roll, and pith from the imu to the center of the rear axle of the vehicle, and then set the imu to localization conversion relationship.

@HandsomeAIccx We recommend that the positioning device is best installed at the center of the rear axle because the IMU will be as stable as possible as it is close to the center of gravity of the vehicle.
https://github.com/ApolloAuto/apollo/blob/e373b206a0dc0360af826152132a61c85cab295c/modules/transform/conf/static_transform_conf.pb.txt#L15-L20
Of course, if there is something special, you need to add the conversion from imu to localization. You need to measure the x, y, z, yaw, roll, and pith from the imu to the center of the rear axle of the vehicle, and then set the imu to localization conversion relationship.

Thank you for your assistance! However, I’m still unsure about the difference between a NovAtel system and an IMU. For instance, when using a LiDAR for obstacle detection, which coordinate system should be calibrated? Should the LiDAR be calibrated to the NovAtel system, or to the IMU?


[WIP] fix windows skip

Will be adding more fixes here.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


update readme list and instructions

updates the list to make it clearer whats done and what needs to be done, also mention the need to fetch the cairo corelibs

Codecov Report

Merging #247 (1c7191c) into main (a484f5f) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 1c7191c differs from pull request most recent head 3627cd6. Consider uploading reports for the commit 3627cd6 to get more accurate results

@@           Coverage Diff           @@
##             main     #247   +/-   ##
=======================================
  Coverage   86.07%   86.07%
=======================================
  Files         104      104
  Lines       14407    14407
=======================================
  Hits        12401    12401
  Misses       2006     2006

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Safari Layout Bug

Fixing these bugs, which are caused by flexbox being weird in Safari.
(Once this is shipped and I have a free hour or two, I plan to update the primer version we're using here, which includes a refactor of our container styles to prevent this very bug.
cc/ @MikeMcQuaid

Thanks @sophshep!


Bos token in prompt_input_ids but not in completion_input_ids?

I've checked the way dataset in created in KTOTrainer and it seems that only completion_ prefixed data that is fed into model.  But, data with completion_ prefixed did not contain bos token at the beginning of sequence. Here is the result from tokenizer_row method in the trainer:
{'prompt': 'How are you',
 'completion': 'leave me alone',
 'label': False,
 'completion_input_ids': [1602, 460, 368, 24427, 528, 4411, 2],
 'completion_attention_mask': [1, 1, 1, 1, 1, 1, 1],
 'completion_labels': [-100, -100, -100, 24427, 528, 4411, 2],
 'prompt_input_ids': [1, 1602, 460, 368],
 'prompt_attention_mask': [1, 1, 1, 1]}

Is this intentional?

cc @kashif wdyt?

i believe this is intentional ... the completion are the resulting outputs from the given prompts and are in fact concerted together when being fed to the decoder-only model to calculate the log-probs
I think in real-life one also does not have a BOS token when generating...

i believe this is intentional ... the completion are the resulting outputs from the given prompts and are in fact concated together when being fed to the decoder-only model to calculate the log-probs
I think in real-life one also does not have a BOS token when generating...

The problem is, DPOTrainer is not like that. DPOTrainer is adding bos token to completion wether it's accepted or rejected. Even in KTOTrainer script there is a written comment telling that bos token is added to prompt (even though I don't know what for because only completion is fed to the model).

the BOS is added to prompt to make sure that the log-probs are in distribution as the model is auto-regressive... we can ask the KTO Trainer if he has time to chime in
cc @kawine

thanks for catching this @fahadh4ilyas ! you appear to be correct -- the completion IDs should have a BOS token at the beginning of the sequence. I think the confusion stems from "completion" being used in the code to refer to both the output on its own in some places and the input + output in other places
since this overloading of the term "completion" is used throughout, i'll push a minimal change to fix just the bug you identified for now. for your example with the huggyllama tokenizer, i'm now getting
{'prompt': 'How are you',
'completion': ' leave me alone',
'label': True,
'prompt_input_ids': [1, 1128, 526, 366],
'prompt_attention_mask': [1, 1, 1, 1],
'completion_input_ids': [1, 1128, 526, 366, 5967, 592, 7432, 2],
'completion_attention_mask': [1, 1, 1, 1, 1, 1, 1, 1],
'completion_labels': [-100, -100, -100, -100, 5967, 592, 7432, 2]}

and if you tried to decode completion_input_ids, you'd get ' How are you leave me alone'


[WIP] Allow updating with just a USB connection

TODO:

[ ] Figure out why Promises aren't resolving properly
[ ] Write additional tests
[ ] Ensure USB comms are acting reliably with large payloads

On weird issue I'm facing is that running sysupgrade /tmp/openwrt.bin does not seem to work. The only thing it seems to do is kill the SPI Daemon permanently so perhaps it is beginning to restart? @kevinmehall what do you think could be happening to keep sysupgrade from completing when I exec it from the USB Daemon?

Try adding spid and usbexecd to the whitelist of processes that sysupgrade won't kill when starting the update: https://github.com/tessel/openwrt/blob/2015-10-26/package/base-files/files/lib/upgrade/common.sh#L128.

You can just modify /lib/upgrade/common.sh on a Tessel, and if it works then patch the linked file in the openwrt repo.

Thanks, I'll give that a try.

Unfortunately, modifying /lib/upgrade/common.sh didn't seem to work.
Strangely, ubus call system upgrade is a ubus option but it doesn't seem to do anything either.
But I could run either require('child_process').exec('sysupgrade /tmp/openwrt.bin') and require('child_process').spawn('sysupgrade, ['/tmp/openwrt.bin']) with positive results so I guess we could do that worst case...

I think something else must be going on because I was able to successfully sysupgrade from the CLI with this patch and the t2-cli usb-exec sysupgrade /tmp/openwrt.bin... That should be essentially exactly the same as what happens in the t2 update command so there is something else causing the issue.

I've confirmed that two changes are necessary:

The patch as outlined by @kevinmehall above
Not closing the child process that execed the sysupgrade for about two minutes (or until it reports that the upgrade completed).

Because I did not implement 2, it seemed as though 1 made no difference but with both implementations, the update succeeds.

Working on the OpenWRT patch here but the documentation on patches is pretty lacking. @kevinmehall can you look it over for me when you get a chance?

The file is in the openwrt tree, so just modify it in a normal commit. Patches are used to make changes to 3rd-party code that is downloaded as an upstream tarball and doesn't live in the repository. (The directory where you added that patch is supposed to be for patches against the uClibc source)

Ah okay, that makes much more sense. Thanks for the clarification.

So this feature introduces a fun complication which is that because we have to update our OpenWRT build to make updating over USB work, all previous builds will not have this capability. That means we have to check the version running on the Tessel and confirm that it's > 0.0.11 before moving forward with a USB-only update.
@rwaldron any thoughts on that? It's kind of shitty but I'm not sure we have a good way to get around it.

If you want a hack, the CLI could modify /lib/upgrade/common.sh on old versions before performing the update...

@kevinmehall I'm ashamed at you for even suggesting such a dirty hack.
But yeah, does sed '/*procd*\|*ash*\|*init*/c \ \*procd*|*ash*|*init*|*watchdog*|*ssh*|*dropbear*|*telnet*|*login*|*hostapd*|*wpa_supplicant*|*nas*|*spid*|*usbexecd*) : ;;'\  /lib/upgrade/common.sh

Don't you need sed -i for in-place edit? Or write to a temp file and mv over the original if busybox sed doesn't have that option.
If you were to include the whole original line, it would be a no-op in the case that the update had already been applied. Also, watch the escaping of the * characters in addition to the |.

Don't you need sed -i for in-place edit? Or write to a temp file and mv over the original if busybox sed doesn't have that option.

Yes, I do and busybox sed does support it.

If you were to include the whole original line, it would be a no-op in the case that the update had already been applied. Also, watch the escaping of the * characters in addition to the |.

Ugh I don't think my fingers can type that many escapes. It's not physically possible.

For anyone who's checking in on this PR, it's currently blocked by my effort to add a hacky to fix an issue described here so that folks running older versions of the T2 firmware can do updates over USB.
The command to overwrite a specific line of a file which determines how the update process works doesn't seem to be effective over the USB Daemon but it does work on the Tessel shell console. I'm guessing the escapes aren't being handled properly...

There must be an easier way to do that :\

I've tried all kinds of escaping with no luck. I may go the kinda hackier route and just ship the file with the CLI, then write it to a temporary file on T2, then rename the temporary file to the real file name (thus replacing it).

Damn dude, that was smoooooooth
$ t2 update
INFO Looking for your Tessel...
INFO Connected to Tessel-02A347EF35F2.
INFO New firmware version found...0.0.12
INFO Updating Tessel-02A347EF35F2 to latest version (0.0.12)...
INFO Beginning update download. This could take a couple minutes..
  downloading [====================] 100% 0.0s remaining
INFO Download complete!
INFO Updating OpenWRT (1/2)
INFO Transferring image of size 19.14 MB. This will take 2-4 minutes...
INFO Transfer complete.
INFO Starting OpenWRT update.
INFO Please do not remove power from Tessel.
INFO This process will take at least two minutes...
INFO Updating firmware (2/2)
INFO Firmware update complete!
INFO Updated Tessel-02A347EF35F2 from  0.0.11  to  0.0.12

First time, with new Tessel 2 out of the box.

Unplugged, re-plugged, ran t2 wifi setup and we're in business.
Please address the nit-picks and I will land this tomorrow

Nit-picks addressed!


chore(tooltip): fix escape key handler only when open

chore(tooltip): make sure to only listen escape key on open
chore(tooltip): add tests on close on escape

Not modifying the CHANGELOG because this fix is on a bug not yet releases
StoryBook: https://5991f7f4--5fbfb1d508c0520021560f10.chromatic.com/ (Chromatic build)

Test OK

Tooltip closes on escape ✔
Tooltip does not block close on escape of other components (dialogs, popover, etc.) when closes ✔


Threshold

Added a threshold() function to a timeseries object. It takes an optional value argument (defaults to 0) for the cutoff. If the timeseries value is above the cutoff it becomes True, otherwise it becomes False.
Also re-wrote to_bool() to be a wrapped version of this function. Open to discussion if this even needs to be kept in (the name is horrid and that's totally my fault).

I like the idea of a thresholding operation, though rewriting to_bool to use scalar_op makes it so that to_bool won't work on TimeSeries where values are non-numbers. Perhaps we can make a contrib or examples directory that could serve as a starting point for use cases that need this sort of thing.


examples: The NS must allow privileged PSS

What type of PR is this?
/kind cleanup

What this PR does / why we need it:
These are the same labels we have in our usual manifests, let's include
them also in the OLM examples.
Which issue(s) this PR fixes:
None

Does this PR have test?
N/A

Special notes for your reviewer:
N/A
Does this PR introduce a user-facing change?

NONE

hmm let me
/hold
this
Since this is OLM example, it appears that OLM is smart enough to label the namespace correctly once a CSV appears in the namespace. At least on OCP (I need to confirm this on another distro I guess)

/hold cancel
this appears to be needed outside OCP.
Reading https://master.sdk.operatorframework.io/docs/best-practices/pod-security-standards/ I see:
For workloads that need elevated permissions: it is recommended that you ensure the namespace containing your solution is labeled accordingly. You can either update your operator to manage the namespace labels or include the namespace labeling as part of the manual install instructions.

I saw the labels added automatically on OCP, because the operator's RBAC includes the use of the privileged SCC in comments:
git grep resources=securitycontextconstraints
internal/pkg/daemon/seccompprofile/seccompprofile.go:// +kubebuilder:rbac:groups=security.openshift.io,namespace="security-profiles-operator",resources=securitycontextconstraints,verbs=use
internal/pkg/manager/spod/spod_controller.go:// +kubebuilder:rbac:groups=security.openshift.io,namespace="security-profiles-operator",resources=securitycontextconstraints,verbs=use
internal/pkg/webhooks/binding/binding.go:// +kubebuilder:rbac:groups=security.openshift.io,namespace=security-profiles-operator,resources=securitycontextconstraints,verbs=use

and OCP has a component called LabelSyncer that automatically labels namespaces that contain a CSV if the RBAC rules in that namespace make use of the privileged SCC.


Add NearestNeighbors.jl models

Codecov Report

Merging #6 (c46c14f) into main (bf2674e) will increase coverage by 0.26%.
The diff coverage is 97.67%.

@@            Coverage Diff             @@
##             main       #6      +/-   ##
==========================================
+ Coverage   95.89%   96.15%   +0.26%
==========================================
  Files           6        7       +1
  Lines          73      104      +31
==========================================
+ Hits           70      100      +30
- Misses          3        4       +1

Files
Coverage Δ

src/StatsLearnModels.jl
100.00% <ø> (ø)

src/models/decisiontree.jl
100.00% <100.00%> (ø)

src/models/glm.jl
95.45% <100.00%> (ø)

src/models/nearestneighbors.jl
96.77% <96.77%> (ø)