docker evaluation gets stuck

Describe the bug
Thanks for making the containerized evaluation environment, which will make the evaluation easier and more accurate! However, while I was trying it out, the containerized evaluation always got stuck in the middle. Did I missing something?
Steps/Code to Reproduce
python -m swebench.harness.run_evaluation --predictions_path /home/haifeng/projects/acr/experiment/06-22-lite/predictions_for_swebench.json --max_workers 28 --cache_level env --run_id princeton2

Expected Results
All the predictions get evaluated.
Actual Results
Evaluation got stuck in the middle:
Running 296 unevaluated instances...
Base image sweb.base.x86_64:latest already exists, skipping build.
Base images built successfully.
No environment images need to be built.
Running 296 instances...
 91%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋                | 270/296 [23:25:03<2:15:18, 312.23s/it]

The progress bar hung here for tens of hours. Pressing Ctrl+C gave the following:
Traceback (most recent call last):
  File "/media/media0/haifeng/projects/SWE-bench-princeton/swebench/harness/run_evaluation.py", line 252, in run_instances
    for future in as_completed(futures):
  File "/home/haifeng/miniconda3/envs/swe-bench/lib/python3.9/concurrent/futures/_base.py", line 245, in as_completed
    waiter.event.wait(wait_timeout)
  File "/home/haifeng/miniconda3/envs/swe-bench/lib/python3.9/threading.py", line 581, in wait
    signaled = self._cond.wait(timeout)
  File "/home/haifeng/miniconda3/envs/swe-bench/lib/python3.9/threading.py", line 312, in wait
    waiter.acquire()
KeyboardInterrupt

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/haifeng/miniconda3/envs/swe-bench/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/home/haifeng/miniconda3/envs/swe-bench/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/media/media0/haifeng/projects/SWE-bench-princeton/swebench/harness/run_evaluation.py", line 529, in <module>
    main(**vars(args))
  File "/media/media0/haifeng/projects/SWE-bench-princeton/swebench/harness/run_evaluation.py", line 493, in main
    run_instances(predictions, dataset, cache_level, clean, force_rebuild, max_workers, run_id, timeout)
  File "/media/media0/haifeng/projects/SWE-bench-princeton/swebench/harness/run_evaluation.py", line 262, in run_instances
    continue
  File "/home/haifeng/miniconda3/envs/swe-bench/lib/python3.9/concurrent/futures/_base.py", line 637, in __exit__
    self.shutdown(wait=True)
  File "/home/haifeng/miniconda3/envs/swe-bench/lib/python3.9/concurrent/futures/thread.py", line 235, in shutdown
    t.join()
  File "/home/haifeng/miniconda3/envs/swe-bench/lib/python3.9/threading.py", line 1060, in join
    self._wait_for_tstate_lock()
  File "/home/haifeng/miniconda3/envs/swe-bench/lib/python3.9/threading.py", line 1080, in _wait_for_tstate_lock
    if lock.acquire(block, timeout):

I tried three times, and the evaluations all hung at different points.
System Information
Ubuntu 20.04.6 LTS, Python 3.9, swebench 68d8059, more than 100 CPUs

Hmm, I wonder if there should be a timeout to this bit of code from swe-bench:
 with tqdm(total=len(instances), smoothing=0) as pbar:
    with ThreadPoolExecutor(max_workers=max_workers) as executor:
        # Create a future for running each instance
        futures = {
            executor.submit(
                ...
            ): None
            for test_spec in test_specs
        }
        # Wait for each future to complete
        for future in as_completed(futures):
            pbar.update(1)
            try:
                # Update progress bar, check if instance ran successfully
                future.result()
            except EvaluationError as e:
                print(f"EvaluationError {e.instance_id}: {e}")
                continue
            except Exception as e:
                traceback.print_exc()
                continue

which would cause it to at least throw (or we could catch it and skip). But that's still better than hanging.

Currently, the timeout when evaluating on an instance only seems to affect running eval.sh in the container. I wonder if there could be problems with some of the cleanup steps that hang instead...
I'm going to open a PR to add a separate timeout to as_completed.
This will cause an exception to be raised that we could catch so that we skip the instance. That's still better than being stuck...

Hmm that's a bit weird, we haven't seen this before.
There are some task instances which we know take a very long time to run (e.g. some of the scikit-learn ones). However, the longest we've seen that take is 3 hours. Also, none of the very long running instances are in the lite split, which looks like what you're evaluating on.
It's a bit difficult to diagnose without knowing which task instances the evaluation is stuck on. Would you happen to have this info? Or perhaps given that 270/296 finished running, what are the 296 - 270 = 26 issues that haven't finished?

Closing this issue since it's been some time and the thread has been quiet since then (I also saw your swe-bench/experiments submissions, so I'm assuming it's working now?).
There have been a number of PRs closed since then. Like @klieret mentioned, it may have been a timeout issue, there were a couple PRs that should've addressed this problem.
For confirmation, I just re-ran evaluation with gold patches on my end for the SWE-bench Lite set. All task instances pass, and I didn't see the hanging behavior.


ScrollView scrollToVerticalOffset don't work on Android

I want to include a scrollToId() method in my ts.
fiche.html :
<ScrollView id="myScroller">
       <FlexboxLayout (tap)="scrollToId('google-map')">
           .....
       </FlexboxLayout>
       <FlexboxLayout (tap)="scrollToId('horaire')">
            ....
       </FlexboxLayout>
       <StackLayout id="horaire">
          ....
       </StackLayout>
       <GridLayout id="google-map">
            ...
        </GridLayout>
</ScrollView>

fiche.ts :
public scrollToId(id: string) {
        if (this.scrollLayout == null) {
            this.scrollLayout = this.page.getViewById("myScroller");
        }

        let focus = this.page.getViewById(id);

        this.scrollLayout.scrollToVerticalOffset(focus.verticalOffset, false);
    }

All is ok on IOS but on Android, no scroll to StackLayout or GridLayout.
Any help on this?

@Neferteus nor StackLayout or GridKLayout have verticalOffset property.
However you can use methods like getLocationRelativeTo or getLocationOnScreen / getLocationOnWindow or even getMeasuredHeight to calculate and scroll to the desired position.
e.g.
page.component.html
<ScrollView #myScroller>
    <StackLayout>
        <Button #btn text="scrollTo" (tap)="scrollTo()"></Button>

        <StackLayout>
            <Image src="res://logo"></Image>
            <Image src="res://icon"></Image>
            <Image src="res://logo"></Image>
            <Image src="res://icon"></Image>
        </StackLayout>

        <GridLayout #grid width="200" height="200" backgroundColor="green">

        </GridLayout>
    </StackLayout>
</ScrollView>

page.component.ts
export class AppComponent implements OnInit {

    @ViewChild("myScroller") sv: ElementRef;
    @ViewChild("btn") btn: ElementRef;
    @ViewChild("grid") gr: ElementRef;

    scrollLayout: ScrollView;
    button: Button;
    grid: GridLayout;

    ngOnInit() {
        this.scrollLayout = this.sv.nativeElement;
        this.button = this.btn.nativeElement;

        this.grid = this.gr.nativeElement;
    }

    public scrollTo() {
        this.scrollLayout.scrollToVerticalOffset(this.grid.getLocationRelativeTo(this.button).y, false);
    }
}

Thanks it's worked.

Hmm, could you help me import ScrollVIew on Angular+NS.
I have no idea what i'm doing wrong.
import ScrollView = require("ui/scroll-view"); doesnt work
and import { ...., ScrollView } from '@angular/core'; generate error:
Module '".../node_modules/@angular/core/index"' has no exported member 'ScrollView'.

I am developing an app where when user click on cardview layout, detail of that view is opened on that card view layout. I have used nativescript ScrollView for scrolling the views. But, when user click on last cardview layout it should scroll to show detail of cardview layout. It does not automatically scrolls to the last card view detail, due to this the detail of the card view is hidden and user have to scroll manually.
I found this https://stackoverflow.com/questions/51181694/nativescript-scroll-to-bottom-of-scrollview-programmatically but i am not able to solve my problem. Below is my code for layout.
`
<ScrollView id="scrollView" #scrollView orientation="vertical" #scrollView (scroll)="onScroll($event)">
      <StackLayout row="0" col="0">
        <StackLayout *ngFor="let item of items" class="card-view" id="cardViewLayout">

          <GridLayout columns="auto, *, auto" rows="auto,auto,auto" (tap)="toggleDetail(@event)">

          </GridLayout>

          <GridLayout row="3" col="0" colSpan="3" columns=" *, *" rows="auto,auto" id="detailedData" visibility="hidden" class="cardDetail">

            <StackLayout row="0" col="0" class="detailDataStack">
            </StackLayout>

          </GridLayout>

    </StackLayout>
  </StackLayout>
</ScrollView>

`
toggleDetail(args){ var scrollView = this.page.getViewById("scrollView") var offset = this.scrollView.nativeElement.scrollableHeight; this.scrollView.nativeElement.scrollToVerticalOffset( this.scrollView.nativeElement.offset+ 120, false); }
As shown in above when user click on card-view class layout, it is toggling cardDetail class. When there is last item in card-view it should scroll automatically to show the details but it don't automatically scrolls.
In toggleDetail() method i tried to get scrollableHeight, add 120 to that height and make it scroll when user in last item but nothing happened.
Thank you in advance :)

You will need to keep track of "where you are" regarding pixels.
I know that it is possible through ScrollView to manually set the location of the scroll. So, you can wire up a button to scroll to the next "segment" (whatever you make it) and add the width/height of that scroll to the current location. Then scroll to that new location. Same would work with going backwards, just decrement the adjustment.
If you're still having problems, let me know and I'll get an example written out for you. I ended up making a custom component to handle the custom scroller.

Thank you @mster  :) . I will try as you said and let you know about it. Thank you.

@mster I tried as you said but unable to achieve scroll. I have made playground demo app for this . Can you please check it and provide some solution on this. Thank you `

@vishwa1937 No problemo! This was a problem I worked with for a bit.
This gist should give you some clarification:
https://gist.github.com/mster/c1c715d2af64ac4b5ff5c0e18b50de29
I'm using NativeScript with Angular 2+, however the same idea can be done with Angular.js
As far as I am concerned, the secret sauce is:
this.scrollerView.scrollToVerticalOffset(pixels, true)
// or
this.scrollerView.scrollToHorizontalOffset(pixels, true)
// second param (bool) represents scroll-to animation

I am currently trying scroll to the bottom of a ListView of items in a ScrollView. The goal is to create something that mimics a messenger app and to do that I want the user to start from the bottom of the ScrollView. None of the options listed here have done anything to the scroll view and it remains stuck at the top as always.
<StackLayout>
    <Label
            height="6%"
            [text]="recipientName"
            class="blockTitle p-b-8"
            textWrap="true">
    </Label>
    <ScrollView
            #messageScroll
            height="84%">
        <ListView
                minHeight="100%"
                height="100%"
                style="padding: 5px"
                [items]="messages"
                class="list"
        >
            <ng-template
                    let-item="item"
            >
                <GridLayout
                        columns="*"
                        rows="auto"
                        class="message"
                >
                   <StackLayout
                           [class]="fromClass(item.creator_person_id)"
                           orientation="horizontal"
                           [horizontalAlignment]="align(item.creator_person_id)"
                   >
                       <Label
                               class="authorimg fas fa fa-user"
                               stretch="aspectFill"
                               height="30"
                               width="30"
                               verticalAlignment="top"
                       >
                       </Label>
                       <Label
                               [text]="item.message_text"
                               class="msg_text"
                               textWrap="true"
                               verticalAlignment="top">
                       </Label>
                   </StackLayout>
                </GridLayout>
            </ng-template>
        </RadListView>
    </ScrollView>
    <StackLayout height="10%">
        <GridLayout
                columns="*,auto"
                style="padding: 10px"
        >
            <TextField
                    hint="Type message here"
                    row="0"
                    col="0"
                    ngDefaultControl
                    (submit)="chat()"
                    [(ngModel)]="message"
            >
            </TextField>
            <Button
                    row="0"
                    col="1"
                    text="send"
                    (tap)="chat()"
            >
            </Button>
        </GridLayout>
    </StackLayout>
</StackLayout>

Relevant Scroll to Code.
  @ViewChild('messageScroll', { static: true, read: ElementRef }) messageScroll: ElementRef<ScrollView>
  scrollLayout: ScrollView

  ngOnInit () {
    this.scrollLayout = this.messageScroll.nativeElement
    setTimeout(() => {
      this.scrollTo(platform.screen.mainScreen.heightPixels)
    }, 1000)
  }

  scrollTo (offset: number) {
    this.scrollLayout.scrollToVerticalOffset(offset, false)
  }

I have tried numerous solutions in this thread an so far none have changed anything on the page itself..

I am currently trying scroll to the bottom of a ListView of items in a ScrollView. The goal is to create something that mimics a messenger app and to do that I want the user to start from the bottom of the ScrollView. None of the options listed here have done anything to the scroll view and it remains stuck at the top as always.
<StackLayout>
    <Label
            height="6%"
            [text]="recipientName"
            class="blockTitle p-b-8"
            textWrap="true">
    </Label>
    <ScrollView
            #messageScroll
            height="84%">
        <ListView
                minHeight="100%"
                height="100%"
                style="padding: 5px"
                [items]="messages"
                class="list"
        >
            <ng-template
                    let-item="item"
            >
                <GridLayout
                        columns="*"
                        rows="auto"
                        class="message"
                >
                   <StackLayout
                           [class]="fromClass(item.creator_person_id)"
                           orientation="horizontal"
                           [horizontalAlignment]="align(item.creator_person_id)"
                   >
                       <Label
                               class="authorimg fas fa fa-user"
                               stretch="aspectFill"
                               height="30"
                               width="30"
                               verticalAlignment="top"
                       >
                       </Label>
                       <Label
                               [text]="item.message_text"
                               class="msg_text"
                               textWrap="true"
                               verticalAlignment="top">
                       </Label>
                   </StackLayout>
                </GridLayout>
            </ng-template>
        </RadListView>
    </ScrollView>
    <StackLayout height="10%">
        <GridLayout
                columns="*,auto"
                style="padding: 10px"
        >
            <TextField
                    hint="Type message here"
                    row="0"
                    col="0"
                    ngDefaultControl
                    (submit)="chat()"
                    [(ngModel)]="message"
            >
            </TextField>
            <Button
                    row="0"
                    col="1"
                    text="send"
                    (tap)="chat()"
            >
            </Button>
        </GridLayout>
    </StackLayout>
</StackLayout>

Relevant Scroll to Code.
  @ViewChild('messageScroll', { static: true, read: ElementRef }) messageScroll: ElementRef<ScrollView>
  scrollLayout: ScrollView

  ngOnInit () {
    this.scrollLayout = this.messageScroll.nativeElement
    setTimeout(() => {
      this.scrollTo(platform.screen.mainScreen.heightPixels)
    }, 1000)
  }

  scrollTo (offset: number) {
    this.scrollLayout.scrollToVerticalOffset(offset, false)
  }

I have tried numerous solutions in this thread an so far none have changed anything on the page itself..

Have you tried initializing the component with the starting position set to the bottom?

@mmerbes have you tried initializing the component with the starting position set to the bottom?

@mster I'm open to knowing how to do that. I can't find anything in the nativescript documentation about setting a components starting position.


All files containing jsx should have .jsx extension?

Yes, why not? It's a good indication jsx is used.

close?

But I don't see the convention being followed yet; I see the ".react.js" being used instead of ".jsx". Any plans to change that? @steida @tajo

Doesn't really matter, it's more a personal preference imo. To me react works better as I often skip extensions at all, so writing item.react clearly indicates it's the component. But for those who follow Airbnb guides, probably best to use PascalCase and jsx :)

Why this has been closed? I was going to make another issue regarding that. Recently I've switched to PascalCase notation with jsx for React components and it works quite well.

I don't like PascalCase notation, because some file systems are case sensitive.
I don't like .jsx extension, because JSX can be everywhere with Babel.
I like .react.js, because it prevents clashes.

I don't like PascalCase notation, because some file systems are case sensitive.

Though I can understand the sentiment here, what are the chances of SomeComponent.xyz and somecomponent.xyz in the same folder? By the way, I'm not implying that just because there's no/low chance of real problem we should use it. But yeah, if PascalCase convention makes sense for component classes, then using the same file name makes sense irrespective of file system case-sensitivity. At least Java and .NET developers have been using this convention for years, without any problems.

I don't like .jsx extension, because JSX can be everywhere with Babel.
I like .react.js, because it prevents name clashes.

I think this is a violation of the convention that a file extension should correctly depict the grammar of the file content. The same reason why we don't use .txt for all source files, even though at the end of the they all contain text :) JSX != JS, so it's a no-brainer really!

I don't like PascalCase notation, because some file systems are case sensitive.

This is reported by Webpack as a warning when there's name mismatch so I do not see this as a disadvantage. When you require pascalcased file in a lowercase, you get a message explaning which require call is invalid.

because JSX can be everywhere with Babel.

how about this?
"React must be in scope when JSX is used"
:dancer:


OKLCH color support

Can you add support for OKLCH colors? OKLCH has been added to CSS color 4 and is superior to LCH, particularly at perceptually uniform blending of colors without hue shifts.
Browser support isn't here yet, so no rush, but I think OKLCH will be better than LCH when you get to implementing color sliders #20.

Yeah. Will do at some point.


Use previous columns for reorder logic

Related Issue

https://github.com/material-table-core/core/issues/48#issuecomment-761214151
https://github.com/mbrn/material-table/issues/1868

Tested against original reproduction example provided here.

Description
Addresses issue where column sorting will unintentially revert to default when props other than the defaultSort changes (such as the data).
Originally, a comparison was made between column props and current sorting. This changes the comparison to between column props and prev column props, which should better capture the intent of the previous PR.
Fixes boolean logic for comparing sorting states.
Related PRs

https://github.com/mbrn/material-table/pull/1975

Impacted Areas in Application

Column sorting

Thank you. Can I ask when the next release might be?


[camel-kamelets] Issue-1330: Deprecating parameters

https://github.com/apache/camel-kamelets/issues/1330
I added the CRD field as instructed and similar to the JSONSchemaProp structure.
I checked generating the documentation with deprecated property and it is already handled.
Just the validation fails as the CRD schema lacks the property.
There is a generated file that looks as though it should be re-generated (since it handles the JSONSchemaProp structure) however I could not see how to regenerate it. The code comments in other files suggest a make step for generate-deepcopy but that appears to be long gone following refactoring of the repository over the years.
Advice is welcome.

Release Note
NONE

Thanks @squakez @oscerd.
IDK the CRDs were generated from the sources.
Done.

I dont know if it makes sense to bring this down on 1.12.x too, it should be harmless but it's a breaking change.

I dont know if it makes sense to bring this down on 1.12.x too, it should be harmless but it's a breaking change.

Let me know.. it's your call.

I dont know if it makes sense to bring this down on 1.12.x too, it should be harmless but it's a breaking change.

I don't think it's a breaking change as we introduce a parameter which could be optional. Whatever works now in 1.12 will work after the change. Feel free to backport.

@squakez Do you mean release-1.12.x?
I couldn't see a 1.12.x otherwise.

yes, it's release-1.12.x


[bug] Newly typed text  in long paragraphs sometimes is displayed below influx section for a few seconds for large notes (Uncaught range error?)

It happens with live text and and live text turned off in the Influx, Obsidian is in Live Preview mode.
When I have a note with large number of linked mentions (lets say 20, the are not visible without scrolling) I sometimes observe the following behaviour:

when I have the large paragraph to type (in bullet points), the text I type sometimes  appear below the Influx section for a few seconds and then the cursor came back to the "proper" section of the note
the text is in its proper place, dont disseappers, but it is just displayed for a few seconds as it were below the Influx section
I didnt observed this in a notes with small amount of linked mentions
even if I collapse the references, after a few typed words, the linked mentions un-collapse and the type words appears again on the bottom of the pane, below the Influx linked mentions, and then the  typed text slowly (sometimes letter by letter) appear again in the line when I typed it
when this is happening I saw this in the developer console, not sure if related

Uncaught RangeError: Position 396 is out of range for changeset of length 395
    at t.e.mapPos (app.js:1:270074)
    at e.map (app.js:1:302081)
    at e.update [as updateF] (plugin:influx:23527:15)
    at Object.update (app.js:1:283426)
    at e.computeSlot (app.js:1:294218)
    at Fn (app.js:1:287369)
    at new e (app.js:1:293244)
    at e.applyTransaction (app.js:1:294160)
    at e.get (app.js:1:289373)
    at e.update (app.js:1:434795)

I will try to make a gif to make it better to see what is happening.
I also try to turn off other plugins, to see if this persist
MacOS 13, Obisidian, 1.02, Influx 2.0.7

I recorded the screen, with recoding the behaviour is even worse (so maybe this is about computational resources - BTW I am on M1 macbook pro, so this shouldnt be a problem)
https://www.loom.com/share/6c5189fbc5424592b1a829e7d48f042a

The one thing that come to my mind that this beta plugin I started using could mess up with the Influx function calls and internal states https://github.com/TfTHacker/obsidian42-strange-new-worlds
(But probably not)

Thanks for an extensive bug report! This is #8 and #29 I suspect, but will check it out when I get a chance.

Reading the issues I think I found the cause, it might be Minimal with wide dataview  view enabled

when I switched to vanilla Obsidian the jumping stopped, the dataview still disappears stops working for a few seconds, when I type really fast but there coursor and the text doesn't move, altought the  influx view is still "jumpy" and flashy, as it turning on and off for miliseconds (the live update is off)
https://www.loom.com/share/b792bf10c6cc42c4b85355ab02dccab9
so i think there are 2 bugs
influx stopping displaying and redrawing everything when I typed fast
when influx redraw it interfers with dataview and others plugins that expand dataview like this one https://github.com/efemkay/obsidian-modular-css-layout
when there any many linked notes it just take much longer to redraw and this is more visible to the eye when in case of only a few

(BTW I just found  in the video another bug related to text in bullet points but this is not influx related :P )
https://www.loom.com/share/b792bf10c6cc42c4b85355ab02dccab9

Maybe a way to investigate the issue (MVE);

Typing really fast un-collapse all linked mentions, forcing collapsing to be persistent might be a workaround (until uncollapsing) , the collapsed view is still jumping but the jumping is much less invasive

Just to add a couple of data points here:
I am also seeing this behavior, but it does not require a large number of linked notes for me; I see it on notes that have only one or two. I'm using the default theme. I don't get the "text appears under links" consistently, but even when that doesn't happen I still have the list of links disappearing and reappearing while I type (and, with typewriter scroll turned on, this causes the entire document to leap up and down, which is extra annoying).

The other way to make this visible is to enable the vanilla backlinks to actually see diseappearing and appering of the plugin (obsidian baclinks go up and down in the moment the influx is not rendered); as I think, the error happens in small number of notes, but it might be harder to catch by eye as the only a few of backlinks are rendered much faster (it will also  depends from how fast the computer is too)

It's a bug related to how codemirror handles widget extensions.
As such, I can't fix this directly, but I have an idea for a work-around that I think will essentially solve the problem. I'll probably get a chance to explore it sometime in the coming month.

i wish i would have checked in here first because i'm seeing the same behavior and it sometimes stomps on in-line edits while i'm writing a note! i thought it was related to tag autocomplete or something but it drives me bonkers because it even re-arranges words while i'm writing sometimes.
a brief demonstration from my workstation (12-core i7 MBP touchbar with 32GB of memory) https://www.dropbox.com/s/059vzx7fpa2pr2o/CleanShot 2022-11-03 at 16.44.16.mp4?dl=0
this happens in every note i type in; daily or meeting notes, content maps — the vault from the example above has 2700 markdown documents and 9200 files total, most of my vaults are also git repositories though and the .git directory on this particular vault has 3000 files in it. i have configured Influx to operate (include) in my daily notes tree, my zettelkasten tree, my PARA Projects/Areas/Resources/Archive directories.
RedactedVault % find . -type f -name "*md" | wc -l
    2752
RedactedVault% find . -type f | wc -l
    9286

this workstation doesn't run very smoothly but i have IO and cpu time to spare. only thing that may be unusual is that i routinely have a lot of open files. my obsidian vaults are also indexed by DEVONthink. Open and Save dialog boxes can hang for up to minute for some reason that i've never been able to remediate.

I'm also experiencing this issue, as well as what's mentioned by @zcysxy.

Have the same issue on my macbook pro.

I encourage people irritated by this bug to include an additional line at the end of all your most-used templates:
<% tp.file.cursor(1) %>

%% This line stops influx from misbehaving %%

What this achieves is prevents the bug from occurring by having another line below where you type. file.cursor() moves your cursor up after pasting the template, so you don't have to do it manually.

@pawel-ilnicki Interesting work-around! No, I've not had the chance to develop this plugin further for a long time, unfortunately. (Life eats you up!) Hopefully I'll get a chance to do so before summer.

I encourage people irritated by this bug to include an additional line at the end of all your most-used templates:
<% tp.file.cursor(1) %>

%% This line stops influx from misbehaving %%

What this achieves is prevents the bug from occurring by having another line below where you type. file.cursor() moves your cursor up after pasting the template, so you don't have to do it manually.

it works, big thanks! I still have some performance issues with big files, but I can handle that for now.

I'm experiening this as well and sadly it's a showstopper which is a pity because I love this plugin :)
@jensmtg, any chance you can elaborate on the workaround you have in mind as mentioned above? That way someone might try to implement it.

The workaround that hides influx while typing is in place with the latest version, as an optional but default setting, so this issue should be solved now - to the extent that it can be without access to obsidian internals.

The workaround works great! However, when influx disappears, the editor view also moves.
https://user-images.githubusercontent.com/48207708/219582180-4ab097f6-a136-408e-9e58-7b58f85d3f20.mov


Question About StrainPhlAn3 Polymorphic Output File

Hi,
I was wondering if you could please provide details on the columns/information presented in the clade.polymorphic file produced by StrainPhlAn3?
The column names appear to be different than the columns of the previous analogous file produced by StrainPhlAn2.
Thank you!
Rauf

Sorry, just saw the request to open issues in the biobakery support forum, have moved this question over there, thus closing the issue here!


Change New-ModuleManifest encoding to UTF8NoBOM on non-Windows platforms

This addresses #3789
Currently New-ModuleManifest creates psd1 manifests in UTF-16 with BOM; this creates problems for Linux tools and Git diff'er.
This fix changes encoding of New-ModuleManifest to be UTF8 (no BOM).
Also mentioned New-ModuleManifest in "RFC 0020 DefaultFileEncoding".

As it currently stands, this is a breaking change (appropriate label added).
Based on our current POR, we're okay changing the default on non-Windows platforms, but this shouldn't be changed (yet) on Windows until we've had the breaking change conversation. /cc @JamesWTruher

I understand that this currently breaks the git scenario, we just have to be thoughtful about this.

@vors UTF8noBOM is discussed in RFC 0020 DefaultFileEncoding.

New-PSSessionConfigurationFile uses EncodingConversion.Unicode too.

@vors: first, yes. We're adding that (and making it the default across the board on Linux). The hard part is what to do with Windows (change the defaults? leave a legacy enum value for the "traditional" disparate defaults?) Which is why I want to have the discussion.

@joeyaiello good point;
PR updated to change encoding only for non-Windows.

Is there an actual problem on Windows using UTF8NoBOM?  If only English is used, it's equivalent to an ascii file and Windows tools handle that just fine and I expect that to be the majority of use.

Restarted AppVeyor due to MyGet connectivity issue

@anmenaga if you could sync with @JamesWTruher before merging this, that'd be awesome. Assuming the @PowerShell/powershell-committee votes to accept tomorrow, we want to move to UTF8NoBOM everywhere.

@SteveL-MSFT

Is there an actual problem on Windows using UTF8NoBOM?

Users can add non-English comments in the manifest.

@iSazonov absolutely, but I believe the majority of usage is English.  Even with non-ascii characters, my understanding is that notepad has heuristics to determine encoding to display it correctly.  VSCode seems to support UTF8NoBom just fine.

notepad has heuristics to determine encoding to display it correctly

It seem works on last versions only not on Windows 7/8(?).

@joeyaiello  Are you saying this is blocked on a sign off from @JamesWTruher ?

@joeyaiello @JamesWTruher  Do we want to document the output format of Cmdlets?

@TravisEz13 yes and yes. I think the uber-point is that @JamesWTruher is doing so much work here, that it might get changed anyway (and it might just muddle his extensive notes).
Ultimately up to him, though. I just wanted to make sure everyone was on the same page.
Regarding docs though: heck yes. We'll have a Legacy value for Encoding, and that will be well-documented.

This is fine for now, I'll be changing all the cmdlets in response to https://github.com/PowerShell/PowerShell-RFC/blob/master/1-Draft/RFC0020-DefaultFileEncoding.md.

@anmenaga Also, as a PowerShell team member, you need to submit the PR to update the docs before I merge this.  Please add a link to the PR here.  Thanks.

For encoding changes, you might want to delay documenting as we expect big changes in this.

@TravisEz13

This PR in RFC repo was merged;
I've ran a search in PowerShell-Docs and didn't find any mentioning of encoding for New-ModuleManifest, so there is nothing to update there. Besides, this PR will be anyway overwritten by Jim's encoding work that is arriving soon.

@anmenaga Per the conversation in this PR, we want to add encoding documentation to the CmdLet docs.

@TravisEz13 Here is the doc PR: https://github.com/PowerShell/PowerShell-Docs/pull/1405

My only issue here is that although this is a change that I agree with, I think that this is where I have concerns of this causing a disparate and inconsistent behaviour between all versions of PowerShell below v6 due to the fact that New-ModuleManifest is baked into the Microsoft.PowerShell.Core module.
I personally would much prefer to see that this update to the cmdlet gets released in a manner that fully supports being used on downlevel systems where PowerShell v6 is unable to be installed.
However the only real solutions that I can really see available to be able to make that to happen would be to

Investigate the decoupling of a number of the cmdlets from the Microsoft.PowerShell.Core module into their own separate individual modules or a condensed updated singular module that has all the updates to any module in Microsoft.PowerShell.Core (not an overly fantastic solution) - similar in the idea put forward in #1979
Look to recreate this cmdlet within the PowerShellGet module.
Alongside the v6 updates look to release a completely updated and downlevel compatible version of the Microsoft.PowerShell.Core module to the PowerShell Gallery, which isn't really an overly viable solution either.

If this change could be easily replicated for downlevel versions of PowerShell I think that would be the best outcome all around.

@kilasuit Thanks for the feedback.  I think most of the concerns raised would be best tracked in #1979 or a new issue.


Update to Tabs

Changes made to both primary and secondary tabs. @kybaker do you mind adding the mockups and other details? Thanks!

The digital design team has a nice concept for primary/secondary tabs. There may be situations where we need a "condensed" version of these with tighter spacing, for situations limited in width such as side panels. Overall though these are a nice improvement over our previous design, I will attach a screenshot preview below.

We need to make some small updates when adding this to the library for example switching the active tab color to our primary blue rather than the red.

@mcarrano @mceledonia I made an update to the tabs. This includes changing the primary style to use the underline instead of the boxed traditional shape. This design fits much better in the header area where it most commonly appears. I also adjusted spacing to fit within our containers.
https://marvelapp.com/416e0jh

New tab styling looks great @kybaker .  Based on discussion today with @kybaker and @mcoker there are a few considerations we should keep in mind:

Intent is to replace current tab styling with these new variations. Further investigation is needed to determine whether this will be a breaking change. In any case, it will be a visual change that should be vetted with stakeholders so they are not surprised when new primary tab style is introduced.

Current examples use the terms "Primary" and "Secondary" to call out tab styles. This is misleading because the correct variant to use is more about context (i.e. placement on the page) and less about logical hierarchy. Should identify a better naming for these variations.

We should create a Tabs demo that shows some examples of tabs usage and helps answer the question of what tabs style should I be using. I've created a new issue for that here: #2016 .

@rachael-phillips @LHinson FYI

Want to also consider request to include icons in tabs as a new variant. See https://github.com/patternfly/patternfly-react/issues/2536

Per discussion on Aug 4, shifting this to CSS backlog so details of tab layouts with and without icons can happen there.

Designs from @kybaker https://app.zenhub.com/files/122507459/627d77bc-4dce-49f0-9792-5caac3fe5840/download

https://github.com/patternfly/patternfly-next/issues/2256

We should consider a compact modifier for tight spaces like cards and side panels.

Current tab designs

Code question - is it possible to keep the tab width the same in the default and selected states? Normally the bold text would make the tab slightly wider in the selected state, resulting in a visible shift. We want to avoid that.

@ajacobs21e generally speaking, if the width of a container is defined by the width of the text inside of it, if the text is made bold, the width of the container will grow in size.
There are some hacky workarounds to keep that from happening, but I'd like to avoid those if possible.

Thanks @mcoker
If that's the case, @kybaker how do you feel about using the same font weight for both states?
@coreyvickery fyi

@ajacobs21e Using the same weight is fine with me

Final design spec for tabs update: https://sketch.cloud/s/3WK1w/v/m12Y18/p/tabs/
@mcoker please let me know if there are any specs I missed.
@mcarrano should I add the specs for dark theme tabs here as well or would that be a separate story to create those? Needed for web use cases.

@ajacobs21e I'm not sure what we should do about dark-theme elements for now. We don't really have our dark theme story figured out for PF overall, so when new component get introduced, they are generally for light-theme, only. @mcoker @mceledonia @LHinson thoughts?

@ajacobs21e @mcarrano this looks good, though on the overflow tabs we have this issue that came up around the UX of the scroll buttons in the nav disappearing (same principle applies to tabs) - https://github.com/patternfly/patternfly-next/issues/2435
The solution was to make the scroll buttons appear inline with the list instead of positioned over the first/last tabs, and they would always be visible as long as there is content in the list that overflows. And instead of disappearing, the buttons would appear as disabled.
Should we update these designs to match? Also will we have overflow scroll buttons for the vertical tabs?

@mcoker thanks for sharing that other story. Makes sense to me in theory - is this roughly how it would work? My main question is about the truncation of tabs on the right side

@coreyvickery is that ok with you?
I think you took out your question about vertical tabs and I don't expect those to have an overflow but rather the page would just get as long as it needs to. And ideally the designer doesn't create something with 30 vertical tabs!

@ajacobs21e what about the shadow treatment we use on tertiary nav? https://www.patternfly.org/v4/documentation/core/components/nav/tertiary-overflow
We use a similar treatment on the horizontal nav (with a black shadow) https://www.patternfly.org/v4/documentation/core/components/nav#horizontal-overflow-in-masthead

I think you took out your question about vertical tabs and I don't expect those to have an overflow but rather the page would just get as long as it needs to. And ideally the designer doesn't create something with 30 vertical tabs!

Yeah, I thought about it and I assume it would behave like vertical navigation and wizard and scroll normally.

@mcoker I assume when you're scrolled all the way to the left side and the arrow is disabled, there's no shadow? If so then yeah I think that pattern works

@mceledonia or @lboehling would the overflow arrows still have 4px of space on the left/right sides of the icon button [bottom example]? or be flush with the tab [top example]?

Per this issue (https://github.com/patternfly/patternfly-next/issues/2435) the overflow design will be updated slightly to avoid overlap between the end tab and the scroll button. Revised visual approach is previewed here: https://patternfly-next-pr-2757.surge.sh/documentation/core/components/tabs

@ajacobs21e So with Matt's edits, are we losing the white fade and just using a white box with a left or right gray border?

@mcarrano: Noticed that you fixed the 1px of space between the tabs in your PR link. One last thing, the highlight/thick bar color appears to be incorrect on hover, it needs to be #b8bbbe instead of #d2d2d2, that is what Allie and I spec'd a week or so ago.

@coreyvickery Feel free to comment on the PR here: https://github.com/patternfly/patternfly-next/pull/2757 although I think @ajacobs21e already left this comment. I'm not actually the developer working on this, just the messenger :)

closed by #2757


⚠ Bofrost.es has degraded performance

In 0acf89b, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1538 ms

Resolved: Bofrost.es performance has improved in 8f3032b after 13 minutes.


PROPOSAL: Volume snapshotting

A lot of people have issues with backing up volumes.
This can be done with certain tools and hackery, but is also not completely ideal because just tarring up a volume isn't safe for certain applications, such as database dirs.
It would be extremely helpful, for example, to be able to put a container's volume into a devmapper volume and provide an API for creating a devmapper volume snapshot on that volume.
Essentially every new volume would get it's own devmapper volume for snapshotting purposes.
My original thought here was to just use devmapper to create these for all volumes, but in discussion with others decided enforcing devmapper here may not be ideal... for instance what if someone is using btrfs as their host's FS, this would just cause unneeded overhead.
So providing a way to use any graph driver for volume snapshotting would be ideal with some sane default (perhaps just devmapper or whatever is set as the main graph driver).

+1

+1
with VMWare we use allot of snapshots and it's an extremely useful feature.

:+1:

Closing as this should be handled by external volumes (plugins), which are now part of the experimental channel.


Time autosync

Hi.
Sometimes I turned off my camera by unpluging power, when I turned it on again, time doesn't sync, or doesn't sync everytime (I blocked in firewall access to internet from camera).
Restart HA helps me.
Can you add autosync every 15-30 minutes, or add scheduled interval time as a parameter? Or at least or a button to force sync time or restart whole integration in settings?
HA 2021.12.4 Core
RPi 4
Tapo C200

Hello,
Autosync is already in place, it needs to be enabled in integration options. Manual sync has Feature request opened.


Enum reuse

Background
In OCSF, there are a few standard conventions for enums.  Typically:

There are two attributes that define an enum, one suffixed with _id that takes on an integer value, and one with no suffix that is typed as a string.  The string attribute takes on the value of the caption of the _id field.
When the enum id attribute is defined, it uses the enum property to define a set of valid enum values for the attribute.  These are defined in-line with each attribute.

There are times where these conventions are broken, but this is the pattern for the majority of enums.
Issue
Because the enums are defined in-line for each attribute in the dictionary, it means that if two attributes have the same enum values (the same conceptual "enum") that set of valid values are defined twice.  One example of this duplication is prev_security_level_id and security_level_id define the same enum.
While it doesn't occur with high frequency in the base OCSF schema, I'm writing an extension that has a few more "previous" and "current" fields, and the enum values have useful but long descriptions.  Ideally, I could write the enum once as a type, and reuse it in multiple attributes.

Does OCSF support enums-as-types out of the box?  I haven't seen any examples of it, so I am not sure

If it does support this, should it be the convention for enums so duplication is reduced?
If it does not support this, is it something that could be enhanced in the framework?

Generally, defining enums as types is common for object-oriented languages, from which OCSF derives a number of other definition conventions (inheritance, profiles (mixins), etc.), so it feels like something that would be in-line with the design philosophy.

Thanks @alanisaac for bringing this up.  If I understand you properly, I'm not sure where the duplication would be in the example security_level_id.  In this case, the enum is fully defined in the dictionary, as opposed to partially defined (i.e. with just Unknown and Other) in order to have a valid attribute for later reuse.  Fully defined attributes in the dictionary imply that the attribute will always have the same values, and in your example, that is the case.  Otherwise, a class or object can fill in the other values as they see fit, and the enum can be overloaded (as with type_id for example).
However, I think your point is that the value list is duplicated when the same enum definition is referenced.  Would you want the enum as a specific type to not be rendered in the browser more than once?  Please let me know if I'm missing the point.

If I understand you properly, I'm not sure where the duplication would be in the example security_level_id.  In this case, the enum is fully defined in the dictionary, as opposed to partially defined (i.e. with just Unknown and Other) in order to have a valid attribute for later reuse.

The enum is fully defined in the dictionary twice (is duplicated), once on prev_security_level_id and once on security_level_id.  Specifically, the two links above contain:
https://github.com/ocsf/ocsf-schema/blob/main/dictionary.json#L3416-L3439
    "enum": {
        "0": {
          "caption": "Unknown"
        },
        "1": {
          "caption": "Secure"
        },
        "2": {
          "caption": "At Risk"
        },
        "3": {
          "caption": "Compromised"
        },
        "99": {
          "caption": "Other",
          "description": "The security level is not mapped. See the prev_security_level attribute, which contains data source specific values."
        }
      }

https://github.com/ocsf/ocsf-schema/blob/main/dictionary.json#L4096-L4112
    "enum": {
        "0": {
          "caption": "Unknown"
        },
        "1": {
          "caption": "Secure"
        },
        "2": {
          "caption": "At Risk"
        },
        "3": {
          "caption": "Compromised"
        },
        "99": {
          "caption": "Other",
          "description": "The security level is not mapped. See the prev_security_level attribute, which contains data source specific values."
        }
      }

If new enum values for a security level were created I suspect we would need to update them in both places.  This is rare currently in OCSF, but I am writing an extension that has several more cases of this.

Would you want the enum as a specific type to not be rendered in the browser more than once?

Not at all!  I'm not proposing any changes to the way enums are rendered in the browser.
Instead, one alternative solution to this problem could be that enums could be defined in the dictionary.json's types section as their own type.  Consider, for example:
The enum defined once under types:
"types": {
  ...
  "attributes": {
    "security_level_enum_t": {
      "type": "integer_t",
      "enum": {
        "0": {
          "caption": "Unknown"
        },
        "1": {
          "caption": "Secure"
        },
        "2": {
          "caption": "At Risk"
        },
        "3": {
          "caption": "Compromised"
        },
        "99": {
          "caption": "Other",
          "description": "The security level is not mapped. See the sibling attribute, which contains data source specific values."
        }
      }
    },
  }
}

Then the enum type could be referenced in attributes (still in the dictionary, in this case):
"prev_security_level_id": {
      "caption": "Previous Security Level ID",
      "description": "The previous security level of the entity",
      "sibling": "prev_security_level",
      "type": "security_level_enum_t",
},
...
"security_level_id": {
      "caption": "Security Level ID",
      "description": "The security level of the entity",
      "sibling": "security_level",
      "type": "security_level_enum_t",
},

Ah, of course!  Yes this would be a nice improvement. I will add to today's discussion.

As discussed in the working group call on 2024-10-22, OCSF used to have a pattern where enums were defined in a specific folder.  It sounds like this was challenging because it was inconsistent: some enums were defined this way, but others were defined in-line.  This still happens, but perhaps less often since switching away from this system.
I wonder if the "types"-based proposal might be a better way of reducing duplication without impacting consistency as much?  At least with "types" the enums would still be defined in the dictionary, just in a different section.


Pock freezes and becomes unresponsive

Describe the bug
Within 5-10 minutes, Pock freezes and becomes unresponsive, which is only solved by restarting the App.
I have an Intel Mac with macOS 12.4 but the behavior started prior to this version. I expected it to be a temporary glitch which would disappear after an update but the problem persists.
How to reproduce
No errors in the debug console. The whole console freezes on the App's freezing and returns no errors.
I think the problem stems from the Dock widget though since there are these messages:
2022-06-06 10:21:26.289 Pock[69055:2167506] [Dock][Watcher] AXSelectedChildrenChanged - [selected] /Users/<username>/Downloads
2022-06-06 10:21:28.761 Pock[69055:2164552] [Dock][Watcher] AXSelectedChildrenChanged - [selected] /Users/<username>/Downloads
2022-06-06 10:21:31.128 Pock[69055:2167506] [Dock][Watcher] AXSelectedChildrenChanged - [selected] /Users/<username>/Downloads
2022-06-06 10:21:33.490 Pock[69055:2166942] [Dock][Watcher] AXSelectedChildrenChanged - [selected] /Users/<username>/Downloads
2022-06-06 10:21:36.045 Pock[69055:2167505] [Dock][Watcher] AXSelectedChildrenChanged - [selected] /Users/<username>/Downloads
2022-06-06 10:21:39.127 Pock[69055:2167156] [Dock][Watcher] AXSelectedChildrenChanged - [selected] /Users/<username>/Downloads

Expected behavior
The App works smoothly :-)
Screenshots
Here is a screenshot with errors tracked in the Mac's Console App.

Crashlog
No crash logs so far. See above for the errors.
Versions:

macOS version: 12.4
Pock version:  0.9.0-22

Additional context
I'm using default widgets only. I turned off the browing of files in the Pock.

I have the same problem


Example seems broken

I am runnning the example in the readme using python 3.6, adjusting the paths:
import audiomate
from audiomate.corpus import io

# Download a dataset
esc_downloader = io.ESC50Downloader()
esc_downloader.download('esc')

# Load and work with the dataset
esc50 = audiomate.Corpus.load('esc', reader='esc-50')

# e.g. Read the audio signal and the label of specific sample/utterance
utterance = esc50.utterances['1-100032-A-0']
samples = utterance.read_samples()
label = utterance.label_lists[audiomate.corpus.LL_SOUND_CLASS][0].value

While the download worked without problems, retrieving labels resulted in an error:
Traceback (most recent call last):
  File "test.py", line 14, in <module>
    label = utterance.label_lists[audiomate.corpus.LL_SOUND_CLASS][0].value
TypeError: 'LabelList' object does not support indexing

This issue should be fixed as part of the audiomate JOSS review https://github.com/openjournals/joss-reviews/issues/2135


refactor(amt_models): matching case

PR Checklist

[ ] Unit Tests have been added for new changes
[x] API tests have been updated if applicable
[ ] All commented code has been removed
[ ] If you've added a dependency, you've ensured license is compatible with Apache 2.0 and clearly outlined the added dependency.

What are you changing?

Just fixed the casing for the properties in the interfaces to match the casing in the AMT SDK
Anything the reviewer should know when reviewing this PR?
If the there are associated PRs in other repositories, please link them here (i.e. open-amt-cloud-toolkit/repo#365 )

Codecov Report

Merging #453 (73e14ef) into main (2c44300) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #453   +/-   ##
=======================================
  Coverage   52.80%   52.80%
=======================================
  Files          29       29
  Lines        1371     1371
  Branches      226      226
=======================================
  Hits          724      724
  Misses        647      647

Impacted Files
Coverage Δ

src/amt/AMT.ts
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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

@matt-primrose can you update this PR and resolve conflicts from main?


Cancelling the DropItemEvent.Destruct event no longer preserves inventory items

When a player is killed, previously you could cancel the DropItemEvent.Destruct and that would prevent the player's items from being dropped, instead, they would be kept in the player's inventory. This is no longer the case, and the player's items will instead be destroyed.

It's back again.

@DarkArc OK I'll fix soon.


Equivalent to click context

Is there any equivalent to the click Context parameter and pass_context functionality?
https://click.palletsprojects.com/en/stable/complex/

Not directly; what behavior are you trying to achieve? It can probably be accomplished by a different mechanism.

Mostly context and state management across commands and sub-commands instead of using globals/singletons. Eg: For DB management I can initialize the DB connection store it in the context object and pass it to sub commands for manipulations

Does this section of the meta app docs achieve what you are looking for?

Yeah the final section with the user example is what I want in a specific way. But reading that page it's not very clear what meta actually is.
Like for instance I am very clear on what the context object is and how it's passed between commands.
It seems like meta allows you to redefine how the cli and subcommands are launched.
And the example shows how you can leverage that to pass additional arguments.
But what happens when some of my commands need a user object and some don't.
This seems more cumbersome to pass through nested subcommands

But reading that page it's not very clear what meta actually is.

Noted! I'll try and update the docs to make it more clear. But basically, the meta app is just another Cyclopt's application who's help page sort of gets merged in with the parenting cyclopts App.
Would it help if parse_args also returned a dictionary mapping of parse=False python-variable-names to their annotated type? That way you can:
@app.meta.default
def launcher(*tokens: Annotated[str, Parameter(show=False, allow_leading_hyphen=True)], user: str):
    additional_kwargs = {}
    command, bound, unparsed_variables = app.parse_args(tokens)
    # unparsed_variables would be {"user_obj": User}
    if "user_obj" in unparsed_variables:
        additional_kwargs["user_obj"] = User(user)
    return command(*bound.args, **bound.kwargs, **additional_kwargs)

I'm open to any proposed solution that makes the code terser/easer-to-read.

This seems more cumbersome to pass through nested subcommands

In the above example, the command is fully resolved through nested subcommands, so handling them is no different.

@vikigenius  Assuming the thumbsup is agreement for the parse_args() modification, I can implement this breaking change in the upcoming v3 release! I myself found the syntax without it a bit cumbersome (directly relying on inspect.signature to automate it), so I'm fine with this change. The only thing that makes me hesitant is if there is an alternative, better, cleaner way to do it ;).

Yeah I am thinking along similar lines, it does get me to what I want and it seems good to have this anyways, but the usage still seems a bit complex and hardcoded, maybe there is a better way, but I can't think of one now.
If I am reading the example correctly
command, bound, unparsed_variables = app.parse_args(tokens)
unparsed_variables would only contain user_obj if the corresponding command actually accepts that as an argument?
So for example if I had a delete command that doesn't take a user_obj
@app.command
def delete(
    user_id: int,
):
    print(f"Deleting User with ID: {user_id}")

The corresponding unparsed_variables would be empty?
But for this one:

@app.command
def create(
    age: int,
    *,
    user_obj: Annotated[User, Parameter(parse=False)],
):
    print(f"Creating user {user_obj.name} with age {age}.")

We would have the 'user_obj' key and it would map to the type User, why not just instantiate it using that
additional_kwargs["user_obj"] = unparsed_variables["user_obj"](user)

unparsed_variables would only contain user_obj if the corresponding command actually accepts that as an argument?

correct, more specifically it will contain any variable in the resulting parsed command's signature that has Parameter(parse=False).
And the rest of your comment/example is exactly correct. A slight detail is that I think the mapped type would still be the fully Annotated type, so user_obj: Annotated[User, Parameter(parse=False)]. Even though it works, its technically incorrect to instantiate an object from an annotated type. A slight tweak on the idea is that I can have Cyclopts resolve the Annotation, so it would be unparsed_variables == {"user_obj": User}.
The overall solution is a bit clunky, but I'm afraid that any alternative solution I can think of is equally clunky, but would require the user to learn yet another thing about Cyclopts. I feel like with this approach the user still "feels in control" and there isn't too much unintuitive magic going on behind the scene or another method/function/feature to learn.
I personally am not a huge fan of the Click Context solution, because:

The special obj attribute is kind of C-like, where a library's struct may give you a void *stick_whatever_data_you_want_here for callbacks and similar. In C it's unavoidable, but it doesn't feel very nice in Python.
It requires you to understand click's group mechanism. Cyclopts doesn't really have a win here, as you have to understand (to some extent) Cyclopt's meta app system. However, within the meta app it's very clear what function is being executed and with what arguments.

this is now implemented in dev-3.0.0 as described above. Currently I have cyclopts resolving the annotation for the returned mapping.

v3.0.0 has been released with this feature. Closing this issue for now. If you need anything else, please feel free to open another issue!


Failed to query available provider packages for AzureRM

Thank you for reporting an issue.
I'm having an issue retrieving the provider for AzureRM when running tofu init. Here is the output:
Initializing the backend...
Initializing modules...

Initializing provider plugins...
- Finding latest version of hashicorp/tofu...
- Finding hashicorp/azurerm versions matching "4.0.1"...
- Installing hashicorp/azurerm v4.0.1...
- Installed hashicorp/azurerm v4.0.1 (signed, key ID <Masked>)

Providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://opentofu.org/docs/cli/plugins/signing/
╷
│ Error: Failed to query available provider packages
│
│ Could not retrieve the list of available versions for provider hashicorp/tofu: provider registry
│ registry.opentofu.org does not have a provider named registry.opentofu.org/hashicorp/tofu
│
│ All modules should specify their required_providers so that external consumers will get the correct
│ providers when using a module. To see which modules are currently depending on hashicorp/tofu, run
│ the following command:
│     tofu providers
│
│ If you believe this provider is missing from the registry, please submit a issue on the OpenTofu
│ Registry https://github.com/opentofu/registry/issues/

OpenTofu Version
1.6.2

OpenTofu Configuration Files
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "4.0.1"
    }
  }
  required_version = ">= 1.6.2"
}

provider "azurerm" {
  features {}
  use_oidc        = true
  subscription_id = var.subscription_id != "" ? var.subscription_id : env("ARM_SUBSCRIPTION_ID")
  tenant_id       = var.tenant_id != "" ? var.tenant_id : env("ARM_TENANT_ID")
  client_id       = var.client_id != "" ? var.client_id : env("ARM_CLIENT_ID")
}

I agree with you that this has to be some stray "tofu" string. I was suprisingly able to authenticate in another module with a provider source value of "registry.opentofu.org/hashicorp/azurerm" which is certainly incorrect.
Your assumption was correct, I was able to locate some tofu references in a child module using tofu instead of azurerm.
Thank you for the assistance here!


Reimplement updating

Is your feature request related to a problem? Please describe.
The update system isn't working, so I am going to reimplement it.
Describe the solution you'd like
A fresh and clean update system.
Describe alternatives you've considered
Nothing.
Additional context
Add a helper class assisting runtime updates.

Opened due to a mistake


fix: export default fn/class expr ident not collected

Description:
this is a "minus pass" of https://github.com/swc-project/swc/issues/8755
export default function foo(){}

function foo  is treated as hoisted function , in my opinion it should be collected  by  util collect_decls and it should be in top level( according added test cases)

BREAKING CHANGE:
No

Related issue (if exists):
https://github.com/swc-project/swc/issues/8755

if the PR is ok, there is a duplication in duplicate binding lints.
      DefaultDecl::Class(ClassExpr {
          ident: Some(ident), ..
      }) => {
          ....
      }
      DefaultDecl::Fn(FnExpr {
          ident: Some(ident),
          function: f,
      }) if f.body.is_some() => {
            ....
      }

should we add a method like as_ident or as_decl_ident to DefaultDecl to eliminated the duplication?

About duplication, I think this amount of duplication is fine.


Build a Grid: Android Basics in Compose

URL of codelab
https://developer.android.com/codelabs/basic-android-kotlin-compose-practice-grid?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-3-pathway-2%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-practice-grid#6
In which task and step of the codelab can this issue be found?
In Step 6 : Courses Grid
Describe the problem
I can't use LazyVerticalGrid, it says still unstable. Why i use LazyVerticalGrid because that seems would be match for the practice that on goes.
Steps to reproduce?

Add LazyVerticalGrid replacing LazyColumn.

Versions
Android Studio version: 2021.3.1 Patch 1
API version of the emulator: Android 11 API Level 30
Additional information
Include screenshots if they would be useful in clarifying the problem.

I cannot confirm without seeing your code, but LazyVerticalGrid is valid even as of the most recent compose versions and in the older versions seen in the solution code for this app. For reference, here is the import for LazyVerticalGrid:
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
and the source code


Give the ThreadNet tests their own EpochInfo

They are currently using nodeEpochSize from RunNode, but that function will soon disappear (consensus will not really need to be aware of epoch boundaries at all anymore).
This will need to be revised again once we have the hard fork combinator, in which case EpochInfo should be derived from the ledger state instead.

bors r+

bors r-

As I was rebasing my imm DB changes on top of this, realized that this is still awkward. The threadnet tests intialize a chain DB, but they want a chunk info -- but all we have is an epoch info. I think I need topass the epoch size down instead (until such time we have the hard fork combinator).

bors r+


Under PdfSharp/Fonts/FontFactory.cs -> if i want to use both private font & platform specific font , my platform specific font wont get resolved

If you think there is a bug in PDFsharp then please use the IssueSubmissionTemplate to make the issue replicable.
http://www.pdfsharp.net/wiki/IssueSubmissions.ashx
Thanks.
Resources
The official project web site:
http://pdfsharp.net/
The official peer-to-peer support forum:
http://forum.pdfsharp.net/
Reporting an Issue Here

in the above Screen Shot, check only happens for private font and suppose if i try to use a platform specific font i get
throw new InvalidOperationException("No appropriate font found.");
which should not happen
Expected Behavior
Should Be Able To Resolve Both Platform Specific Font & Private Font
Actual Behavior
throw new InvalidOperationException("No appropriate font found.");
Steps to Reproduce the Behavior
Use Any System Specific Font Along With Private Font
We strongly recommend using the IssueSubmissionTemplate to make sure we can replicate the issue.
http://www.pdfsharp.net/wiki/IssueSubmissions.ashx
Pls Assign This Issue To Me 🙏

It's a feature, not a bug: A FontResolver, if set, is responsible for all fonts.
FontResolvers can call the PlatformFontResolver to handle system fonts not handled by the FontResolver.


Call handleMessage in a goroutine so it prevents possible UDP packet loss

Solution to problem described here:
https://groups.google.com/forum/#!topic/influxdb/HEQbcuz1NbY

Build script has been fixed, please rebase so CI testing can re-run.

@otoolep rebased and comments fixed!.

@otoolep tests are still failing....


Incompatible engine

Describe the bug
I don't know what happened here after package upgrades, but it seems this package does not accept node 19.
gargamel::~ $ pnpm up --latest
 ERR_PNPM_UNSUPPORTED_ENGINE  Unsupported environment (bad pnpm and/or Node.js version)

This error happened while installing a direct dependency of /home/howe/mnt/private/projects/whenileave/client

Your Node version is incompatible with<EMAIL_ADDRESS>
Expected version: ^18.0.0 || >=20
Got: v19.8.1

This is happening because the package's manifest has an engines.node field specified.
To fix this issue, install the required Node version.
Progress: resolved 18, reused 18, downloaded 0, added 0
gargamel::~ $ node --version
v19.8.1

Is there any specific reason for ^18.0.0 || >=20? Why is node 19 excluded?
Thanks.
Reproduction URL
https://github.com/sveltejs/vite-plugin-svelte/issues
Reproduction
No response
Logs
-

System Info
Linux gargamel 6.5.9-arch2-1 #1 SMP PREEMPT_DYNAMIC Thu, 26 Oct 2023 00:52:20 +0000 x86_64 GNU/Linux

because it was already EOL at the time of release of 3.0.0.  You should not use it. we don't test with this release.

it is also not supported by vite5, which is required

Ok, seems odd to me to support version 18 but not 19 from any packages. If vite already restricts it, I see no point in repeating the restriction in this package. But ok, I'll try to update the node version in all VMs running this code. Thank you for the prompt answer.


Automated cherry pick of #7643: fix: aovid truncated data

Cherry pick of #7643 on release/3.3.
#7643: fix: aovid truncated data

/lgtm
/approve


Check for repos using custom build tasks without source-built packages

Similar to https://github.com/dotnet/source-build/pull/1318, several repos have custom build tasks that are built in a separate build before the main build.  Check to make sure they are getting these properties.

Note some repos could be coincidentally matching source-built versions now and break sometime down the road as well.

[Triage] Since we are building cleanly offline, this doesn't appear to be an issue.  Closing.


Error when using OpenPose

This error pops up whenever I use OpenPose. It does not interrupt the generation however.
22:57:11.358 [Error] invalid/empty output data from ComfyUI server: {
"openpose_json": [
["{\n    "people": [\n        {\n            "pose_keypoints_2d": [\n<PHONE_NUMBER>6041663,\n<PHONE_NUMBER>1872052,\n                1.0,\n<PHONE_NUMBER>8613946,\n<PHONE_NUMBER>6446484,\n                1.0,\n    ..."
]
22:59:24.406 [Error] invalid/empty output data from ComfyUI server: {
"openpose_json": [
["{\n    "people": [\n        {\n            "pose_keypoints_2d": [\n<PHONE_NUMBER>6041663,\n<PHONE_NUMBER>1872052,\n                1.0,\n<PHONE_NUMBER>8613946,\n<PHONE_NUMBER>6446484,\n                1.0,\n    ..."
]
}
Missing if-then-else case handling in "private async Task<Image[]> GetAllImagesForHistory(JToken output, CancellationToken interrupt)" I believe?

This is a "valid error" (the node is outputting random data that Swarm does not expect or want and didn't ask for), but it should probably be remapped to Debug rather than an Error since it's not a "real problem" in practice

It's now tracked as debug, unless Comfy gives no recognized output at all, then it becomes an error


[Feature Request] LLM endpoints do not accept chat messages

I noticed the LLM endpoints only accept a single query, but its more common to pass a list of chat message dicts.
For example, if I wanted to implement a chat with docs app with geniai comps, there's actually no proper way to do this.
Many LLM providers support a chat message format (Ollama, vllm, tei) and will automatically apply chat templates to the chat messages for the specific model being used

Hi @logan-markewich Do you mean passing a messages dict like this:
curl http://${your_ip}:9000/v1/chat/completions -X POST -d '{     "model": "Intel/neural-chat-7b-v3-3",     "messages": [         {             "role": "system",             "content": "You are a helpful assistant."         },         {             "role": "user",             "content": "Hello!"         }     ],     "max_new_tokens": 17,     "top_k": 10,     "top_p": 0.95,     "typical_p": 0.95,     "temperature": 0.01,     "repetition_penalty": 1.03,     "streaming": false }' -H 'Content-Type: application/json'

@devpramod I was looking at the LLMParamsDoc that many llms use as the input object. I don't see a spot for messages? https://github.com/opea-project/GenAIComps/blob/5fb4a38d4e5f68e138411d5168ff574962434439/comps/cores/proto/docarray.py#L133
Am I looking in the wrong spot?

The implementation is in llm.py
https://github.com/opea-project/GenAIComps/blob/5fb4a38d4e5f68e138411d5168ff574962434439/comps/llms/text-generation/tgi/llm.py#L213

Ah ok, so here the input type is specified as a union
https://github.com/opea-project/GenAIComps/blob/5fb4a38d4e5f68e138411d5168ff574962434439/comps/llms/text-generation/tgi/llm.py#L45
A little confusing, but make sense


[PKG-3090] u8darts 0.26.0 skip another flaky ❄

PKG-3090 u8darts 0.26.0 ❄

skip another flaky test_fit_a_linreg

I will open/close this one to see if the skipped tests are enough or there are other flakyes

4 attempts, 4 successes. Merging.


Empty .dbeaver folders created in eclipse projects

System information:

Operating system (distribution) and version: Microsoft Windows [Version 10.0.18363.1139]
DBeaver version: <IP_ADDRESS>011160809
Additional extensions

Describe the problem you're observing:
I installed dbeaver into Eclipse IDE for Java Developers 2020-09 (4.17.0). Now dbeaver generates empty .dbeaver folders in Java projects. When I delete them they get recreated.
Steps to reproduce, if exist:
Checkout https://github.com/OpenAPITools/openapi-generator as Maven project in Eclipse:

Cannot reproduce. DBeaver creates the new .dbeaver folder with credentials and data source files. What does your project contain?

I did not create any data sources or credentials yet. I just installed dbeaver plugin and the folders start appearing.

Still cannot reproduce. Could you please tell exact steps to reproduce (1. create/import project 2. install DBeaver extension 3. Open a project via ...?)

I have an existing workspace with maven projects that earlier where cloned from github within eclipse and then imported as maven project.
I installed dbeaver in eclipse and opened this workspace. now in these existing projects the .dbeaver folders are generated. when I delete the .dbeaver folder in a project and press F5 in the project explorer to refresh. the .dbeaver folder is there again.

I am also getting the .dbeaver folder in regular Eclipse projects (non-Maven). e.g. when I clone/import this https://github.com/vegardit/activemq-artemis-dynatrace-plugin/

This is the content of the .project file:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
	<name>activemq-artemis-dynatrace-plugin</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
	</buildSpec>
	<natures>
	</natures>
</projectDescription>

I just upgraded from Eclipse 2020-09 to 2020-12 and dbeaver 7.2.5 to 7.3.0 and the issue persists.

I have a similar issue. .dbeaver folder is being created in projects I believe are not related to DBeaver. When I first launch Eclipse with no projects open in the Java perspective, and then switch to the DBeaver perspective, all of my Java and other Eclipse projects are opened although they do not all contain a .dbeaver folder. Does DBeaver automatically open any projects that contain files (e.g., .sql, .xml, .project) it is associated with? I use Eclipse 2020-03, DBeaver 7.3.3.

I have a similar issue. .dbeaver folder is being created in projects I believe are not related to DBeaver. When I first launch Eclipse with no projects open in the Java perspective, and then switch to the DBeaver perspective, all of my Java and other Eclipse projects are opened although they do not all contain a .dbeaver folder. Does DBeaver automatically open any projects that contain files (e.g., .sql, .xml, .project) it is associated with? I use Eclipse 2020-03, DBeaver 7.3.3.

I upgraded dbeaver to 7.3.3 and still have the same issue. The .dbeaver file is created in all projects no matter the project nature.
Again, the problem appears the moment I install dbeaver, without having done any dbeaver or database related configurations.
@serge-rider is there anything else we can do to figure out the cause?

I upgraded dbeaver to 7.3.3 and still have the same issue. The .dbeaver file is created in all projects no matter the project nature.
Again, the problem appears the moment I install dbeaver, without having done any dbeaver or database related configurations.
@serge-rider is there anything else we can do to figure out the cause?

Could you send a video with steps to reproduce?
Please also copy Eclipse configuration info (Eclipse>About eclipse>Installation details>Configuration)

there is no update on the issue for a long time.
If it is still actual for you - feel free to reopen it with an additional info


Draft of supporting thread-safe client

What this PR does / why we need it:
Try to make client thread-safe. We can use one client for multiple request with go routines.
Which issue(s) this PR fixes:

Fixes #190
Special notes for your reviewer:
This is draft PR because cannot pass my own test of test/integration/client_concurrency_test.go.
How can I make test that verifying this is a thread-safe client?
Multiple other tests also fails when test/integration/client_concurrency_test.go added.
Also, I doubt if this support real thread-safe way in Yorkie client.
Does this PR introduce a user-facing change?:

NONE

Additional documentation:

Checklist:

[x] Added relevant tests or not required
[ ] Didn't break anything

I append attach/detach client test, but it fails. I guess the reason is that gRPC not accept detach with not detached document. Is there any way to make gRPC ignore if document not exists?

Hi, I twist my test that make 5 client attach in go routine and 5 dettach in other goroutine. The client pass the test. My question is, what if go routine on same document attach/detach concurrently? Like if I attach/detach same document of {"k1", "v1"}, then it FAILS, because it cannot guarantee the order of go routine. So, Detach - Detach - Attach - Attach surely fail as no document exists at first. Even, I'm not sure Attach - Detach - Attach - Detach and no document exists is what really the user want. I wonder what should I do for this intersect A/D case on same document.
Plus, I'm working on Watch in client and make other tests soon.


Fixed the like button count issue

What does this pull request aim to achieve? 💯
This PR fixed the like button issue
_Please be concise and link any related issue(s):_This PR resolves #1725

[x] I have checked that no one else is working on similar changes.
[x] I have read the latest README and understand the development workflow.
[x] The name of this branch is: feature/<branch_name>, or hotfix/<branch_name> if this is a hotfix, where <branch_name> briefly describes the issue(s) resolved and is prefixed with the issue number(s) (e.g. 1127-1130-update-git-branching-model). The branch is created in a cloned version of this repo, not a forked repo.
[x ] This branch is rebased/merged with the latest staging (or the latest production if it is a hotfix).
[x] There are no merge conflicts.
[x] There are no console warnings and errors.
[x] On the right hand side of this PR, I have linked the appropriate issue(s) under "Issues" and added a project progress under "Projects".
[x] The title describes the issue(s) being addressed using format: <issue_numbers> - <brief_issue_description> (e.g. #1127/#1130 - Update Git Branching Model)

The user is able to like his own post but cannot like other user's post, see below GIF.

Thanks for the feedback, I will look into it.

@rabbi08  I fixed the issue . Now, user can like the other users post   . Please check it ,please note that i formatted the entire code , it looks like some  lines of the code format changed automatically which i did not change . if it is a issue i can roll back that format . Please let me know .

@mathigayathri2001
Verified the issue on feature build and it is working fine. Thanks.
please see below GIF:

This issue is fixed with PR#1767, hence closing this one.
Thanks @mathigayathri2001


Card size

Do you think we should set the card to a fix height? Think it would make the layout a bit cleaner.

@AM1CODES  @dms-yondy Yes the website is looking weird because of Irrelevant card size. All cards size must be the same.

It has been updated. Please take a look at it. Thank You.

Looks good!


ArcGIS Pro: custom CNTK raster function import fails

Following the steps inside the 04_Apply_trained_model_in_ArcGIS_Pro, I click and try opening the custom CNTK raster function inside ArcGIS Pro. However, it seems like it throws some library import error (see screenshot below).

Hi @f-tonini, can you try with the sample project file I just added back (see the other issue)?

Hi @yangsiyu007, Even after opening the sample project file you suggested to download, I still the the following error when opening the Classify CNTK custom raster function. Some libraries must be missing.

I tried again using the latest Geo AI DSVM available on Azure with ArcPro 2.3 installed on it. The sample project file and custom raster function CNTK opens up and throw the attached error below. Please advice.

Has there been any development on solving this issue? Please advice when possible. Currently, it does not work.


Metro M4 SPI / SdFat performance issue

I just started working with the Metro M4. I mounted an Adafruit WINC1500 shield and ported Arduino-based software I wrote for a Mega to it expecting huge performance improvements, only to find that it crawls. I traced the slowdown to portions of my code that communicate with the shield, so I ran the SdFat bench example program to quantitatively compare the M4's performance to that of the Mega using the same shield, same software and same freshly formatted micro-SD card for both tests. The M4 performance on this test was on the order of 28x slower for writes and 50x slower for reads.
I haven't yet done quantitative benchmarking on WiFi performance but the software I ported to the M4 reports on its maximum loop time. When not actively serving pages the max loop time on the Mega is  2ms; on the M4, it's nearly 900ms. I've isolated the slowdown to a function that does WiFi communication, which leads me to believe the issue is SPI-related.
I've attached the version of SdFat bench I used. I modified it to use "SPI_FULL_SPEED" after my first run using the original SPI_HALF_SPEED setting produced poor results, but the results were virtually identical at each setting.
Any insights you might have into this would be deeply appreciated.
bench.zip
MEGA 2560 performance
Use a freshly formatted SD for best performance.
Type any character to start
FreeStack: 6711
Type is FAT32
Card size: 31.91 GB (GB = 1E9 bytes)
Manufacturer ID: 0X3
OEM ID: SD
Product: SC32G
Version: 8.0
Serial number: 0X111A0968
Manufacturing date: 2/2012
File size 5 MB
Buffer size 512 bytes
Starting write test, please wait.
write speed and latency
speed,max,min,avg
KB/Sec,usec,usec,usec
281.23,27624,1572,1813
284.88,95152,1540,1790
Starting read test, please wait.
read speed and latency
speed,max,min,avg
KB/Sec,usec,usec,usec
507.68,3108,988,1001
507.84,1992,988,1001
Metro M4 performance
Use a freshly formatted SD for best performance.
Type any character to start
FreeStack: 192112
Type is FAT32
Card size: 31.91 GB (GB = 1E9 bytes)
Manufacturer ID: 0X3
OEM ID: SD
Product: SC32G
Version: 8.0
Serial number: 0X111A0968
Manufacturing date: 2/2012
File size 5 MB
Buffer size 512 bytes
Starting write test, please wait.
write speed and latency
speed,max,min,avg
KB/Sec,usec,usec,usec
10.30,344156,49334,49677
Starting read test, please wait.
read speed and latency
speed,max,min,avg
KB/Sec,usec,usec,usec
10.69,95857,47883,47897
10.69,95857,47883,47897
Done

are you using the QSPI flash??

this library is for QSPI flash, i think you want to open this issue here
https://github.com/adafruit/ArduinoCore-samd


Where to find documentation on omf query langauge?

Hello,
I would love to try out a few things with your python library. I was working with this code here and i realized I couldnt find where the documentation for the omf query langauge was, perhaps I missed something. Please advise. Thanks so much!
    # search query uses Open Material Filter - special language for
    # querying EPD's material's performance

       omf_query = ('!EC3 search("ReadyMix") '
                 'valid_until: >"2024-03-08" '
                 'and specs.concrete.strength_28d: >"30 MPa" '
                 '!pragma oMF("1.0/1")')

Hey @karim-daw
Thank you for the question. And apologies for the lack of documentation, things are moving really fast so far and we will be adding more docs in the nearest few weeks, both to the material specifications and to the docs website.
Main source would be in here - you are correct - https://docs.open-epd-forum.org/en/guides/
A few pieces which are available already:

Open MF is a generalized version of EC3 MF used in EC3 tool. The structure of the language, types of predicates (but not field names!) can be found on EC3 documentation
There is a Convert MF API call to convert between the text representation and object representation of oMF. Programmatically it is easier to work with objects and then serialize them into string which is accepted by search, statistics etc
The actual fields to use in oMF are a bit trickier. The aim is to make those fields represent the dotpath in EPD object, so for concrete strength it is specs.concrete.strength_28d. However, not all fields are implemented yet. There is an incomplete in a G sheet - and we aim to put a similar list on the docs website.

I hope this helps - and will keep updating the docs website.


Expose more of the node api for createInterface

This seems to be working, but I'd like your review on the api changes and the foreign implementation of createInterface.  Can I trust a value0 property to always be there?  Is there a better way to write that?

The effect types may also be overly complex, but that might be required to support the completer callbacks.

Thanks for this! A few points though:

Why the module split?
Did you consider using purescript-options?
We should try to find a better option than using value0. It's an implementation detail of the compiler, and we shouldn't rely on it.

Hey, thanks for taking a look!
The module split was suggested in IRC when I asked about createInterface being specifically tied to the interactive-console use case.  We thought it'd be better to put the more basic interface in Node.ReadLine and the convenience functions for interactivity in another module such as Node.ReadLine.Console.
I haven't seen purescript-options before.  Doesn't look like it's on pursuit.. I'll check it out!
That seemed like it was the case.  What do you recommend doing instead?  Do you know of any examples of working around this?
I appreciate the feedback; lots to learn!

@hdgarrood, sounds good, and you're right about the extra folder.  I'll give this a try.

@paf31 do you have any examples of use of purescript-options? It wasn't obvious to me how it should be used from reading the generated API docs. I'm also wary about making the purescript-node libraries too opinionated, which purescript-options seems like it might do?

So this was my idea originally, but looking at this again, I'm not actually so sure that I would split these modules. I was thinking that the functions that bind directly to parts of the node api without any extra stuff would go into one module, and any convenience stuff would go in a separate one. But, by that rule, I think createInteractiveInterface would be on its own in Node.ReadLine.Console, and everything else would be in Node.ReadLine. It seems to me that making a whole separate module just for createInteractiveInterface might be a bit over the top, so maybe we should just stick everything in Node.ReadLine.
Also, what do you think about createConsoleInterface instead of createInteractiveInterface? An interface using streams other than process.stdout and process.stdin might potentially be interactive, depending on what that program is doing with them, so I think using "console" might describe it a little more accurately.

Yeah, that makes sense.  I had two other functions in Node.ReadLine.Console since they seemed more focused on interactivity, but that might not always be the case.  So createInterface becomes createInteractiveInterface and createInteractivePrompt becomes createConsoleInterface?

I think that when a function is a minimal binding to some function in the node api, that is, it does nothing other than perhaps some minor adjustments to the values to make things "line up", then it should have the same name as the relevant part of the node api. So I think the more general version should be called 'createInterface'.

How's that?

I've included the changes we just talked about and squashed the commits.

Great, thanks :) I've just noticed a couple more things though, I'll add line comments. I'm sorry, I didn't mean to be such a pain!

Not at all, I'm learning!

There it is!  I don't have an intuitive feel for whether it's correct, though : ]

Great! This looks good to me now :) Anyone else want to weigh in before I merge this?

Looks good, but I have two concerns which I documented on the diff.

@spicydonuts maybe have a try with purescript-options 0.6.0 now?

@paf31 @hdgarrood Is this what you both had in mind with purescript-options?  I was a little unsure about the optional arguments.. it seems like I can either make the option definition an Option key (Maybe val) or use optional when actually passing options (currently it's doing this).  The former makes more sense to me.. the way it is now doesn't really communicate the API well.

Yeah, I don't really know what optional is for.. unless the PS API should completely avoid Maybe and the caller should just know which params they can make optional by looking at the docs, but that seems wrong.  Is there even a difference between using a non-Maybe option constructor with optional key := Nothing and not assoc'ing that option at all?

options lets you create a single API which turns a PureScript value into some options object. optional is there so that you can turn Maybe into optional values in your options object. For single values, you could just not bother supplying that option with assoc, but for more complex types, it can be convenient to provide all of the options at once.

All of the options, as the name implies, should be optional. The input stream is required so it should definitely be a type error if you don't provide one. Even if we use purescript-options for the input stream internally, just for the sake of constructing the arguments in the form that Node expects (which probably makes the most sense), I don't think we should export an "input" option.
I don't think there's any need for either of "optional" or Maybe here.
Does that make sense?

Ah, yes.  So the type would be Readable -> Options -> Eff?

Yes, I think so.

Better? : ]

@hdgarrood Sorry, I'd completely forgotten about this!  How's this look?

:+1: :+1: :+1:

Thank you!

Thank you for the help!


Make font size of test results configurable

During a retrospective, one of the dojo participants noted he wished the font size in the test result screen was bigger (the popup window after running the tests).
My suggestion would be, instead of hard-coding a bigger font size, to make it configurable.
PS: is it relevant to add issues here?

Implemented at 3f8a950524bac8cad196ebb08592cdfaa0a16dd1. Still have to test on Linux (it was coded on Windows).

Tested on Linux Mint 17 and seems just fine.

Awesome, thank you!


Make group sync interval configurable

fixes #129

Coverage increased (+0.04%) to 92.712% when pulling 9c86ad4095eefc5af9429b79fa0101a60dd133bc on feature/sync-ticker-config into<PHONE_NUMBER>bc0648a11995c08f5b41bf3412c4f3 on main.


xmap_df functions and methods return inconsistent classes

Need to implement separate xmap_tbl and xmap_df to avoid inconsistency in return values. Currently new_xmap_df() returns objects with 2 possible class attributes vectors:
x <- tibble::tribble(
      ~ISONumeric, ~ISO2, ~link,         ~country, ~ISO3,
            "004",  "AF",     1,    "Afghanistan", "AFG",
            "008",  "AL",     1,        "Albania", "ALB",
            "012",  "DZ",     1,        "Algeria", "DZA",
            "016",  "AS",     1, "American Samoa", "ASM",
            "020",  "AD",     1,        "Andorra", "AND"
      ) |>
  as_xmap_df(from = ISO2, to = ISONumeric, weights = link)

x |> new_xmap_df(col_from = "ISO3", col_to = "ISONumeric", col_weights = "link") -> x_from
class(x_from)
# [1] "xmap_df"    "xmap"       "tbl_df"     "tbl"        "data.frame"

switch_xmap_df() strips the tibble class attributes, but new_xmap_df() does not.
x |> new_xmap_df(col_from = "ISO2", col_to="ISONumeric", col_weights = "link") |>
  switch_xmap_df(col_from = "ISO3") -> x_from_switch
class(x_from_switch)
# [1] "xmap_df"    "xmap"       "data.frame"

Drop tibble support for now

as_xmap_df <- as_xmap.data.frame should always return a data.frame for consistency

Consider in future:

as_xmap() should return... tibble? data.frame?
do I want to have both xmap_df AND xmap_tbl??? doesn't that just confuse things???
as_xmap.tbl_df() could use tidyselect? --- do I really want tidyselect?

Code dump for tibble methods for later reference:
#' @describeIn new_xmap Construct xmap_tbl from tbl_df
new_xmap_tbl <- function(x = tibble::tibble(), col_from, col_to, col_weights, from_set = NULL) {
  #' checks argument types
  stopifnot(tibble::is_tibble(x))

  #' coerce from xmap_df to xmap_tbl
  x <- new_xmap_df(x, col_from, col_to, col_weights, from_set)

  #' @return `x` with additional subclasses `xmap_tbl`, `xmap`
  class(x) <- c("xmap_tbl", "xmap", "tbl_df", "tbl")
}

#' Print an `xmap_tbl`
#'
#' @export
print.xmap_tbl <- function(x){
  xmap_df <- x
  x_direction <- .get_link_direction.xmap_df(xmap_df)
  x_type <- .get_link_types.xmap_df(xmap_df)
  x_links <- tibble::as_tibble(xmap_df)

  ## print headers and links
  cat(paste0("xmap_tbl:\n",  x_type, "\n", x_direction, "\n"))
  print(x_links)
}

What are the benefits to using the tibble class other than print methods?
Can a xmap_df be passed to dplyr functions, and does that convert it to a tibble?

Let the generic have the default: as_xmap(x, type = NULL), where type can be _df, _tbl, _matrix, _igraph. So that:

<data.frame> => xmap_df
<tibble> => xmap_tbl
<matrix> => xmap_matrix (probably want sparse matrix though)
<igraph> => xmap_igraph


What is the difference between file-loader and the copy-webpack-plugin?

Both seem to achieve the same, except that the file-loader requires a newer Node. One is a loader and the other a plugin, but for copying static files does it matter?

The file-loader make the url available for programmtic usage, while the copy-webpack-plugin is basically the webpack wrapper/integration (memory file system, file watching etc) of the cp command to simply copy files from  A => B 🤷♂
file-loader
import url from './file.png'

function Component (props) {
   return (

       // dynamic

   )
}

Also some loaders may work in conjuction with the file-loader, e.g the css-loader transforms url(./file.png) => require('./file.png') internally, which requires to file-loader to work (it handles the require('./file.png') module request)
copy-webpack-plugin
function Component (props) {
   return (

        // static (handcoded)

   )
}


Is volume too high?

Hi,
is the volume output on the 5102 @100%? It seems to me distorted, too loud.
How to set it to 75% ?

Ok it was silly.


Observability background worker

I want to merge this change because it optimizes the observability reporter. It adds per process background worker, which moves payload generation and Redis buffer uploads to a separate thread. Observability events are gathered and uploaded in batches to reduce the number of requests to the Redis buffer. As a result, the overhead introduced by turning on observability decreases significantly.
Observability overhead measured per Saleor request

Median
90% percentile

No background worker
9,14 ms
21,023 ms

Background worker
0,235 ms
0,833 ms

Impact

[ ] New migrations
[ ] New/Updated API fields or mutations
[ ] Deprecated API fields or mutations
[ ] Removed API types, fields, or mutations
[ ] Documentation needs to be updated

Pull Request Checklist

[ ] Privileged queries and mutations are guarded by proper permission checks
[ ] Database queries are optimized and the number of queries is constant
[ ] Database migration files are up to date
[ ] The changes are tested
[ ] GraphQL schema and type definitions are up to date
[ ] Changes are mentioned in the changelog

What is the concurrency model proposed? How does it interact with ASGI, and how will it interact with asyncio where there is no process isolation between workers? What's the memory cost of this performance optimization?

What is the concurrency model proposed? How does it interact with ASGI, and how will it interact with asyncio where there is no process isolation between workers? What's the memory cost of this performance optimization?

There is one observability worker thread started per Django process. Django threads communicate with it using a shared thread-safe queue. The observability worker thread empties the queue and uploads them to the Redis buffer when the time interval has passed, or the events batch has been collected.
It is working and is tested in ASGI and WSGI mode. Initially, I started implementing observability as asyncio task, but decided to begin with threading as it is needed for WSGI mode and can be used by both. I will be glad to try implementing the async version for ASGI as a separate task.
Memory cost should be low. It comes from retaining Django requests and responses for a brief moment in memory. They are stored in a queue before the observability worker processes them. But based on my measurements, even a super simple query to Saleor is processed a couple of times longer than the observability worker generates and uploads events, so the shared queue stays near empty even in case of multiple concurrent clients generating >80 requests per second to Saleor. I tested it locally with simple and more complex (returning bigger responses) Saleor queries and measured a maximum of ~9% increase in peak memory consumption. I am preparing a better test suite to measure it and will present more detailed data.

Closing for now, we will reopen or create a new PR when getting back to this topic.