qemu-kvm process on host consumes high cpu, much higher than observed inside guest

qemu-kvm process on host (using top command, and only one vm in this node)  :
top - 18:21:03 up 26 days, 19:54,  1 user,  load average: 3.70, 3.40, 3.03
Tasks: 862 total,   1 running, 861 sleeping,   0 stopped,   0 zombie
%Cpu(s):  4.0 us,  1.8 sy,  0.0 ni, 93.6 id,  0.0 wa,  0.0 hi,  0.6 si,  0.0 st
MiB Mem :  64342.9 total,  39150.2 free,  19351.0 used,   5841.6 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.  44337.6 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
24790 uuidd     20   0   13.0g  11.2g  21048 S 228.1  17.9  71:51.19 qemu-kvm
...

 K3S 1.27, kubevirt 1.0.0 on ubuntu 20.04 LTS. qemu-KVM CPU is VERY high even when the guest is idle. QEMU is not using software emulation as hypervisor support is enabled on host.
virt-host-validate shows all ok.
when I inspect the qemu process it looks like CPU/0 is pinned at 100% and other cores are idle (8 core guest manifest)
Threads:  13 total,   1 running,  12 sleeping,   0 stopped,   0 zombie
%Cpu(s): 13.9 us, 10.5 sy,  0.0 ni, 74.0 id,  0.6 wa,  0.0 hi,  0.6 si,  0.4 st
MiB Mem :  24022.7 total,    482.5 free,  21722.3 used,   1817.9 buff/cache
MiB Swap:   8192.0 total,   8174.3 free,     17.7 used.   1854.2 avail Mem
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND

3792679 syslog    20   0 9918.0m   7.5g  21104 R  92.0  32.0  65:09.86 CPU 0/KVM
3792669 syslog    20   0 9918.0m   7.5g  21104 S  22.7  32.0  17:37.77 qemu-kvm
3792681 syslog    20   0 9918.0m   7.5g  21104 S   3.7  32.0  14:14.97 CPU 2/KVM
3792683 syslog    20   0 9918.0m   7.5g  21104 S   3.3  32.0  10:39.60 CPU 4/KVM
3792685 syslog    20   0 9918.0m   7.5g  21104 S   3.3  32.0   9:11.65 CPU 6/KVM
3792686 syslog    20   0 9918.0m   7.5g  21104 S   3.3  32.0   8:59.19 CPU 7/KVM
3792682 syslog    20   0 9918.0m   7.5g  21104 S   3.0  32.0  10:06.05 CPU 3/KVM
3792684 syslog    20   0 9918.0m   7.5g  21104 S   3.0  32.0   9:06.18 CPU 5/KVM
3792680 syslog    20   0 9918.0m   7.5g  21104 S   2.7  32.0  41:14.80 CPU 1/KVM
3792672 syslog    20   0 9918.0m   7.5g  21104 S   0.0  32.0   0:00.14 qemu-kvm
3792674 syslog    20   0 9918.0m   7.5g  21104 S   0.0  32.0   0:00.00 IO iothread1
3792678 syslog    20   0 9918.0m   7.5g  21104 S   0.0  32.0   0:00.70 IO mon_iothread
3792690 syslog    20   0 9918.0m   7.5g  21104 S   0.0  32.0   0:02.57 vnc_worker
Performance of the guest UI is VERY sluggish....it's Windows 10.

@chenxinlong Could you please share per thread usage?
@jdtate101 Thank you for the report. What is the CPU usage of the guest?
Were you able to reproduce this behavior with an older version?

@chenxinlong Could you please share per thread usage?

root@kcp-hc-worker020:~# ps aux | grep qemu-kvm
root      3293  0.0  0.0   6432   720 pts/0    S+   10:27   0:00 grep --color=auto qemu-kvm
uuidd    24485  159 17.8 13991760 11778320 ?   SLl  Jul17 36123:46 /usr/libexec/qemu-kvm -name guest=hc-zone-cz-2-10291_vm-s2qh4m65,debug-threads=on -S -object {"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/run/kubevirt-private/libvirt/qemu/lib/domain-1-hc-zone-cz-2-10291_v/master-key.aes"} -blockdev {"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"} -blockdev {"driver":"file","filename":"/tmp/hc-zone-cz-2-10291_vm-s2qh4m65","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"} -machine pc-q35-rhel9.2.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format -accel kvm -cpu host,migratable=on -m 11445 -object {"qom-type":"memory-backend-ram","id":"pc.ram","size":12000952320} -overcommit mem-lock=off -smp 8,sockets=1,dies=1,cores=8,threads=1 -object {"qom-type":"iothread","id":"iothread1"} -uuid 697c0793-bb39-5e3c-bb1c-3841fb4669a6 -smbios type=1,manufacturer=KubeVirt,product=None,uuid=697c0793-bb39-5e3c-bb1c-3841fb4669a6,family=KubeVirt -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=19,server=on,wait=off -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -boot strict=on -device {"driver":"pcie-root-port","port":16,"chassis":1,"id":"pci.1","bus":"pcie.0","multifunction":true,"addr":"0x2"} -device {"driver":"pcie-root-port","port":17,"chassis":2,"id":"pci.2","bus":"pcie.0","addr":"0x2.0x1"} -device {"driver":"pcie-root-port","port":18,"chassis":3,"id":"pci.3","bus":"pcie.0","addr":"0x2.0x2"} -device {"driver":"pcie-root-port","port":19,"chassis":4,"id":"pci.4","bus":"pcie.0","addr":"0x2.0x3"} -device {"driver":"pcie-root-port","port":20,"chassis":5,"id":"pci.5","bus":"pcie.0","addr":"0x2.0x4"} -device {"driver":"pcie-root-port","port":21,"chassis":6,"id":"pci.6","bus":"pcie.0","addr":"0x2.0x5"} -device {"driver":"pcie-root-port","port":22,"chassis":7,"id":"pci.7","bus":"pcie.0","addr":"0x2.0x6"} -device {"driver":"pcie-root-port","port":23,"chassis":8,"id":"pci.8","bus":"pcie.0","addr":"0x2.0x7"} -device {"driver":"pcie-root-port","port":24,"chassis":9,"id":"pci.9","bus":"pcie.0","addr":"0x3"} -device {"driver":"qemu-xhci","id":"usb","bus":"pci.2","addr":"0x0"} -device {"driver":"virtio-scsi-pci-non-transitional","id":"scsi0","bus":"pci.3","addr":"0x0"} -device {"driver":"virtio-serial-pci-non-transitional","id":"virtio-serial0","bus":"pci.4","addr":"0x0"} -blockdev {"driver":"host_device","filename":"/dev/sysdisk","aio":"native","node-name":"libvirt-4-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-4-format","read-only":false,"discard":"unmap","cache":{"direct":true,"no-flush":false},"driver":"raw","file":"libvirt-4-storage"} -device {"driver":"virtio-blk-pci-non-transitional","bus":"pci.5","addr":"0x0","drive":"libvirt-4-format","id":"ua-sysdisk","bootindex":1,"write-cache":"on","werror":"stop","rerror":"stop"} -blockdev {"driver":"file","filename":"/var/run/kubevirt-ephemeral-disks/cloud-init-data/hc-zone-cz-2-10291/vm-s2qh4m65/noCloud.iso","node-name":"libvirt-3-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-3-format","read-only":false,"discard":"unmap","cache":{"direct":true,"no-flush":false},"driver":"raw","file":"libvirt-3-storage"} -device {"driver":"virtio-blk-pci-non-transitional","bus":"pci.6","addr":"0x0","drive":"libvirt-3-format","id":"ua-cloudinitdisk","write-cache":"on","werror":"stop","rerror":"stop"} -blockdev {"driver":"file","filename":"/var/run/kubevirt/container-disks/disk_2.img","node-name":"libvirt-2-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-2-format","read-only":true,"discard":"unmap","cache":{"direct":true,"no-flush":false},"driver":"raw","file":"libvirt-2-storage"} -blockdev {"driver":"file","filename":"/var/run/kubevirt-ephemeral-disks/disk-data/virtiocontainerdisk/disk.qcow2","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-1-format","read-only":true,"discard":"unmap","cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":"libvirt-1-storage","backing":"libvirt-2-format"} -device {"driver":"ide-cd","bus":"ide.0","drive":"libvirt-1-format","id":"ua-virtiocontainerdisk","write-cache":"on","werror":"stop","rerror":"stop"} -netdev {"type":"tap","fd":"20","vhost":true,"vhostfd":"22","id":"hostua-default"} -device {"driver":"virtio-net-pci-non-transitional","host_mtu":1400,"netdev":"hostua-default","id":"ua-default","mac":"00:00:00:f3:27:c6","bus":"pci.1","addr":"0x0","romfile":""} -chardev socket,id=charserial0,fd=17,server=on,wait=off -device {"driver":"isa-serial","chardev":"charserial0","id":"serial0","index":0} -chardev socket,id=charchannel0,fd=18,server=on,wait=off -device {"driver":"virtserialport","bus":"virtio-serial0.0","nr":1,"chardev":"charchannel0","id":"channel0","name":"org.qemu.guest_agent.0"} -device {"driver":"usb-tablet","id":"ua-tablet","bus":"usb.0","port":"1"} -audiodev {"id":"audio1","driver":"none"} -vnc vnc=unix:/var/run/kubevirt-private/bf3e590b-ef21-4c6f-9e70-620775a5822d/virt-vnc,audiodev=audio1 -device {"driver":"VGA","id":"video0","vgamem_mb":16,"bus":"pcie.0","addr":"0x1"} -device {"driver":"vfio-pci","host":"0000:03:00.0","id":"ua-gpu-gpu0","bus":"pci.7","addr":"0x0"} -device {"driver":"virtio-balloon-pci-non-transitional","id":"balloon0","free-page-reporting":true,"bus":"pci.8","addr":"0x0"} -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on

press H to show threads in top :
root@kcp-hc-worker020:~# top -p 24485
top - 10:25:39 up 42 days, 11:59,  1 user,  load average: 1.78, 1.84, 1.87
Threads:  14 total,   1 running,  13 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.0 us,  1.8 sy,  0.0 ni, 96.0 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
MiB Mem :  64342.9 total,  11643.1 free,  46733.6 used,   5966.2 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.  16956.4 avail Mem

 PPID   PID nTH USER      PR  NI    VIRT    RES    SHR   SWAP S  %CPU  %MEM     TIME+ COMMAND
24249 24485  14 uuidd     20   0   13.3g  11.2g   4948      0 S  27.6  17.9   6445:29 qemu-kvm
24249 24487  14 uuidd     20   0   13.3g  11.2g   4948      0 S   0.0  17.9   0:00.90 qemu-kvm
24249 24488  14 uuidd     20   0   13.3g  11.2g   4948      0 S   0.0  17.9   0:00.00 IO iothread1
24249 24492  14 uuidd     20   0   13.3g  11.2g   4948      0 S   0.0  17.9  10:47.56 IO mon_iothread
24249 24493  14 uuidd     20   0   13.3g  11.2g   4948      0 R  37.5  17.9   8973:06 CPU 0/KVM
24249 24494  14 uuidd     20   0   13.3g  11.2g   4948      0 S  12.6  17.9   3052:54 CPU 1/KVM
24249 24495  14 uuidd     20   0   13.3g  11.2g   4948      0 S   9.0  17.9   2927:43 CPU 2/KVM
24249 24496  14 uuidd     20   0   13.3g  11.2g   4948      0 S  11.6  17.9   2981:03 CPU 3/KVM
24249 24499  14 uuidd     20   0   13.3g  11.2g   4948      0 S  13.0  17.9   3056:05 CPU 4/KVM
24249 24500  14 uuidd     20   0   13.3g  11.2g   4948      0 S  10.3  17.9   2945:47 CPU 5/KVM
24249 24501  14 uuidd     20   0   13.3g  11.2g   4948      0 S  10.6  17.9   2883:33 CPU 6/KVM
24249 24509  14 uuidd     20   0   13.3g  11.2g   4948      0 S  11.6  17.9   2843:24 CPU 7/KVM
24249 24964  14 uuidd     20   0   13.3g  11.2g   4948      0 S   0.0  17.9   0:00.00 vnc_worker
24249 63682  14 uuidd     20   0   13.3g  11.2g   4948      0 S   0.0  17.9   0:00.00 worker

@chenxinlong
Correct me if I am wrong but Windows shows only up to 100% usage right? In your case, that would mean the sum of CPU threads should show something like 800/5 (~5 because your guest shows 22%) which is ~150%. To me, it seems this is even below it. I am not sure I see the high consumption.
@jdtate101 are you able to reproduce your issue outside of Kubevirt (running the VM directly on the host)?

Correct me if I am wrong but Windows shows only up to 100% usage right? In your case, that would mean the sum of CPU threads should show something like 800/5 (~5 because your guest shows 22%) which is ~150%. To me, it seems this is even below it. I am not sure I see the high consumption.

@xpivarc  My calculations were wrong, thanks for the correction.
Should I close this issue now ? Seems there's another problem.

I would say let's close this issue if you don't see any regression.
Other issues are better to discuss on the new issues to not mix positive/negative findings.


Cannot load custom CSS from anywhere

I've tried to create a new color scheme, but it's not working properly (or at all).
I made copies of theme-relearn-dark.css and theme-relearn-bright.css in /themes/hugo-theme-relearn/assets/css/, and saved them to /[site root]/assets/cssastheme-custom-dark.cssandtheme-custom-bright.css.  I then added this to hugo.toml``:
[params]

  [[params.themeVariant]]
    auto = ['custom-bright', 'custom-dark']
    identifier = 'custom-auto'
    name = 'OS Preference'

  [[params.themeVariant]]
    identifier = 'custom-bright'
    name = 'Light Theme'

  [[params.themeVariant]]
    identifier = 'custom-dark'
    name = 'Dark Theme'

The light/dark picker or whatever in the bottom-left of the page sees both of these, and changing between light and dark mode works as expected.  However, actually changing the .css file (such as a variable) does not appear in the site.  According to the inspector in Firefox, it is loading theme-custom-dark.css, but any changes I make somehow aren't reflected in what's rendered.
I tried moving those files to /themes/hugo-theme-relearn/assets/css just in case the documentation was wrong, but the results were the same.
Meanwhile, following #868, I added the following to layouts/partials/custom-header.html:
<link rel="stylesheet" href="/css/theme-overrides.css">

The file referenced is in [site root]/static/css/.  However, it's not being loaded at all as far as I can tell (and none of the rules in there are applied to the page).
I'm using the newest version of the theme (downloaded it today), and am running hugo version 0.131.0+extended.  At this point I don't know what I'm supposed to do.  Any ideas?

I tried moving those files to

No, that's not necessary. Your initial approach sound correct.

Meanwhile, following #868, I added

Also sounds correct.
Please post a link to your repo. I've got the feeling something else is interfering here.


Setup slack for cyclops-react

Update readme with the new slack organization created https://cyclops-react.slack.com/ or dig a bit more to make a specific slack channel within aol organization public.

Asking about AOL Level Open Source org, will report back..

Closing for now


function level coverage

I need to get info about what functions are tested. Currently there is only line coverage data.
if this tool can be enhanced to report that data, it will be great

I would also very like to see such feature added. Currently we have to use some home-brewed script that parses normal coverage report and tries to extract info about function, this has some issues so "native" support from pycoverage would be great.

By now there's only one plugin called pytest-func-cov for function coverage. But it does not support file reporting.

I need some clarification about what people mean by "function-level coverage".  The pytest-func-cov plugin considers a function tested if it is called directly by a test, but not if it is called indirectly.   Is that what is meant? Or are indirect calls sufficient?

But it does not support file reporting.

The pytest-func-cov README shows a report with file names, so I'm not sure what is missing?

We are looking to complete our current coverage report with this data as well. It looks like pytest-func-cov's definition of function coverage (a function must be called directly from a test) is different from what other sources say. Atlassian, Wikipedia and lcov's data format docs all define a function as covered if it's hit during a test at any point.
For our particular use case, having the FNF (functions found) and FNH (functions hit) numbers in the lcov report generated by coveragepy would complete the HTML reports we currently generate with genhtml from the lcov report.

Being able to see what functions were covered by tests would be useful for me too, and being called indirectly should absolutely still count.

Currently we have to use some home-brewed script that parses normal coverage report and tries to extract info about function

Anything you can share here, by chance?

The pytest-func-cov plugin considers a function tested if it is called directly by a test, but not if it is called indirectly.

This makes pytest-func-cov unusable for my purposes. Also, it needs to be reimplemented due to a design flaw, and isn't actively maintained. Plus it'd be better to have this feature directly in coverage.py itself or a coverage plugin, as opposed to something external (with its own separate data format / possibly no structured data format).

I have some thoughts about how to implement this, and have started some of the foundation work.  I'm curious if people have ideas about how to present the data?  Do you have examples of other coverage tools (possibly in other languages) that do a good job showing the results?

That's awesome, thanks @nedbat!
A useful way of presenting this data for me would be something like:
❯ coverage report --functions --sort-by=function-coverage  # I made up these options

Function                   Stmts   Miss Branch BrPart  Cover
------------------------------------------------------------
mypkg:func1                  245      7     98      3  97.1%
mypkg:MyCls.method1           51      5      2      0  90.6%
...

Or even just a list of (function, cov_percent) pairs would be enough to answer questions like, "What are the best (and worst) covered functions?"
That said, just having this data collected in the first place would be useful to have landed before any presentation support is landed. The harder part for users is getting this data to be collected. But once it's collected, it's easier for us to handle pulling it out of the coverage database ourselves in whatever format we need. In case it makes things easier for you to ship the collection support first, with presentation support left for a followup release.

This is an interesting point, because the function-level data doesn't need to be stored in the database at all, just as the missing lines aren't in the database.  The database captures the measured data.  The reporting phase can determine what is missing, and could also calculate statistics per function.
A middle ground could be something like a JSON report that includes function data.

Outputting JSON about function-level coverage would be great!
Just to improvise something:
❯ coverage json --rollup=functions
{
  "files": {
    "mypkg/__init__.py": {
       "functions": {
         "mypkg:func1": {"percent_covered": 1.0, ...},
         "mypkg.MyCls.method1": {"percent_covered": 1.0, ...}
       }
    }
  }
}

And if passing --show-contexts could also show which test functions caused which functions to be covered (when using dynamic_context = test_function), that would be especially awesome. But the function-level rollup would be super useful even without that.

Things have shifted a bit.  regions.py is now in the lab/ subdirectory: https://github.com/nedbat/coveragepy/blob/nedbat/public-analysis/lab/regions.py

Definitely useful, thank you!
Some prior art just for completeness:
lcov's genhtml includes function coverage by default:

And gcovr does as well:

(Here's a zip of the source files and the html output I used to produce those screenshots, and here's a post about those two tools, in case it's helpful.)

Thanks. I'm wondering how those tools cope with real projects with thousands of functions.  How do they present the information in a useful way?

Looks like both allow you to view the functions in a single file at a time (and hopefully there aren't thousands of functions in a single file). In genhtml's case, that looks like the only way to view function coverage, while gcovr also includes a view including all functions across all files (among several other views). Both tools generate trees of views that let you drill down into subdirectories (and provide associated rollups of coverage data per subdirectory). And I guess you can always use lcov's --extract or --remove options if you need to slice the data further before generating html from it via either tool
Also looks like only gcovr shows the percent of the lines in a given function that were covered ("block coverage"). In contrast, genhtml only shows "hit count". I think it's definitely worth including all the line-based coverage counts per function (hits, misses, total percent covered, ...).

I've implemented more real function and class reports.  Please try them out:  https://nedbatchelder.com/blog/202404/try_it_functionclass_coverage_report.html

I ran it on pynpc and got these. The project is small, and it is a little difficult to see
everything on one screen. Breaking it down per file would be cleaner. A summary page could have the top (or bottom?) covered. By that, I mean the top 10 (say?) functions/classes that are the least covered.

Functions screenshot, shrunk to fit on one screen.

Class screenshot, full sized.

@kierun:

Breaking it down per file would be cleaner. A summary page could have the top (or bottom?) covered. By that, I mean the top 10 (say?) functions/classes that are the least covered.

Thanks for the feedback.  It might not be obvious, but the column headers are click-to-sort, so you can order the report by increasing coverage to put the 10 least-covered items at the top of the page. Also, I'll shortly be adding a checkbox to hide fully-covered items (https://github.com/nedbat/coveragepy/issues/1384) which will help you focus on where work is needed.  Does that help?

[…]  It might not be obvious, but the column headers are click-to-sort […]

Oh, cool! :grin: This is perfect.

Also, I'll shortly be adding a checkbox to hide fully-covered items (https://github.com/nedbat/coveragepy/issues/1384) which will help you focus on where work is needed. Does that help?

Yes, that would be fantastic.
Thank you so much!

@kierun:

[…] It might not be obvious, but the column headers are click-to-sort […]

Oh, cool! 😁 This is perfect.

Any ideas what can I do to make the column sortability more apparent?

Any ideas what can I do to make the column sortability more apparent?

Up and down chevrons might be good choices, like ▲/△ and ▼/▽.  Of course, having them one above the other is CSS black voodoo magic. :magic_wand:

Unsorted: △|▽
Decending: △|▼
Acending:▲|▽

This is where I found the glyphs, if it helps.

Interesting idea.  A quick attempt shows that the glyphs don't play nicely, and it's cluttered:

Maybe I can just add a line above the table: "Columns are sortable."   I know: total cop-out.

Yes, it is well too cluttered. Maybe just have one icon which change shape depending on the sorting?

Maybe I can just add a line above the table: "Columns are sortable." I know: total cop-out.

If it's simple and works! :rocket: :moon: Go for it!

Awesome progress!

Any ideas what can I do to make the column sortability more apparent?

Rather than clutter the UI with "Columns are sortable" text, instead ensure that tables are always shown sorted by one of the columns and that the header for that column shows the arrow to indicate the sort state. Currently tables are already initialized sorted by the first column, but for some reason the "up" arrow is hidden, so users miss this important UI cue. Note, this would match the UI of the example shown in https://www.w3.org/WAI/ARIA/apg/patterns/table/examples/sortable-table/ (i.e., no need to innovate new UI here).

Should these reports be optional (requested with a switch) or always produced?

Always produced.

Does the handling of nested functions and classes make sense?

I wasn't sure about "Inner functions are not counted as part of their outer functions". I wonder if inner functions and classes should even be ignored for the purposes of a function- and class-level coverage view (at least by default).

I'm wondering how [this scales to] real projects with thousands of functions...
Is it reasonable to produce one page with every function? How large does a project have to get before that’s not feasible or useful?

Large projects have their code spread across many files in many subdirectories.
To scale better, I've been thinking about whether coverage.py's views should more directly reflect a hierarchy like "directories contain files, files contain classes and functions, classes and functions contain lines".
Each time you drill down the hierarchy, it both adds more detail and removes information you don't care about, kind of like zooming in when using a maps app. Additional "layers" could similarly be enabled to add more detail at the current "zoom level" (as with traffic in a maps app). This seems like one approach to scaling the current UI to better handle more code as well as more features of that code.
Concretely, "coverage html" could generate a tree of views that reflects the way the code is organized into subdirectories. The top-level report would show the stats for each file in the top-level directory, but if there is code in any subdirectory, the top-level report would only include a single entry for each subdirectory with its aggregate stats, and the files in that subdirectory would not be shown. You could then click a subdirectory to see the view for the files in that subdirectory. (This matches lcov and gcovr's current behavior, fwiw.)
(Currently coverage.py provides a single view for file-level coverage that shows all files in all subdirectories combined together. To focus on files in a certain directory, you currently have to use the "filter" input, which doesn't scale as well.)
With this in mind, a new per-file view would be able to show the class- and function-level coverage for just the classes and functions in a given file, in addition to the current line-level view that is generated for each file.
Finally, each directory-level view would provide a link to a report that would show the class- and function-level view for all classes and functions below that directory level (regardless of file).
Still thinking about this but didn't want to let any more time pass before I shared the rough thoughts.

I appreciate the ideas.  One benefit of a flat view is that you can sort it by coverage to focus on what needs work no matter where it is.

Just wanted to add, I'm guessing that reorganizing coverage.py's reports in the way I described is probably a lot more work than you were thinking of doing for this.
Since lcov/genhtml already support function-level coverage as well as producing trees of reports that match the directory structure, would coverage lcov && genhtml ...  -- i.e., use coverage.py to collect coverage data and convert it to lcov format, then use genhtml to generate html reports from the lcov data -- would this now work for viewing function-level coverage, but fit into the alternative, directory-oriented paradigm that genhtml uses? If so, that also sounds like a nice way to decouple shipping coverage.py's progress on the data generation for function-level coverage from its progress on the presentation of the new data.

Thanks for the pointer to genhtml.  I'll experiment with that as an escape hatch for people who want more involved reports (once the lcov output has function data).

ensure that tables are always shown sorted by one of the columns and that the header for that column shows the arrow to indicate the sort state. Currently tables are already initialized sorted by the first column, but for some reason the arrow is hidden, so users miss this important UI cue.

This is a good point.  I didn't realize the initial sorting isn't indicated.  I've changed the report so that it's always sorted by something, and the sorting is indicated with more obvious triangles in commit a3dff726392c45e20ed201b1c967d83a6010390e.  Thanks.

(oops, forgot to mention this issue in the changelog, but) this is now released as part of coverage 7.5.0.  Try it out!

@nedbat
Thank you for adding function and class coverage in coverage.py! This is a game-changer feature!
I upgraded to the 7.5.0:
pip install coverage==7.5.0

and run the following commands in my tests folders:
coverage run
coverage html

A htmlcov sub-folder is created, containing two HTML files ("class_index.html" and "function_index.html").
This is a great first step!
Now... Could we have the same content of the two HTML files as output of the coverage report command? - i.e:
coverage report --functions
coverage report --classes

If I do run coverage help report, it seems that this feature is not supported by coverage report yet.
A very inelegant workaround I'm using right now on my Debian 12-based devcontainer is the following one:
wget http://ftp.de.debian.org/debian/pool/main/h/html2text/html2text_1.3.2a-28_amd64.deb
dpkg -i html2text_1.3.2a-28_amd64.deb

cd tests
coverage run
coverage html
cd htmlcov
sed -n '/<table class="index" data-sortable>/,/<\/table>/p' class_index.html > class_index.txt
html2text -width 400 class_index.html


Suggestion - Config to disable/enable certain parts of the mod

Whether it's just configs that disable recipes or configs that disable entire portions of the mod, I think something like this would be helpful for tweaking this mod to fit in packs better (without the use of minetweaker).

Indeed. Been planning on doing this for a while.


Replace Envoy with YARP

I know the initial goal of the project was to port eShopOnContainers to add Dapr features, just wondering if there has been any discussion with replacing Envoy with the YARP project now that it has gone RC1?

Yes, the main focus is still on the use of the Dapr building blocks. Haven't looked at YARP in detail yet, there are currently no plans for replacing Envoy. One thing I noticed is that it ships as a NuGet package. That'd mean we must add another .NET service to the solution instead of using the Envoy container image.
Any thoughts on the benefits of using YARP over Envoy for eShopOnDapr?

Envoy is probably more mature and has performance benefits, so I don't have anything specific in mind that YARP would bring to the table. It's more about keeping it within the C# family of products. I agree, it doesn't ship as a stand alone container, but one more container build didn't seem like that much of a burden.
If you want to stick with Envoy, that's fine. I was just floating the idea. 😄

cc @tratcher in case he wants to add anything.


[BUG] sqlite3.OperationalError: database is locked

Describe the bug
I occasionally see the following error in the inv worker logs:
16:39:39 [Q] ERROR Failed [tennessee-angel-one-echo] - database is locked : Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 84, in _execute
    return self.cursor.execute(sql, params)
  File<EMAIL_ADDRESS>line 423, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: database is locked

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 436, in worker
    res = f(*task["args"], **task["kwargs"])
  File "/Users/chris/Projects/inventree/InvenTree/InvenTree/tasks.py", line 268, in update_exchange_rates
    backend.update_rates(base_currency=base)
  File "/Users/chris/Projects/inventree/InvenTree/InvenTree/exchange.py", line 32, in update_rates
    super().update_rates(base=base_currency, symbols=symbols)
  File<EMAIL_ADDRESS>line 79, in inner
    return func(*args, **kwds)
  File<EMAIL_ADDRESS>line 61, in update_rates
    backend, _ = ExchangeBackend.objects.update_or_create(name=self.name, defaults={"base_currency": base_currency})
  File<EMAIL_ADDRESS>line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File<EMAIL_ADDRESS>line 613, in update_or_create
    obj.save(using=self.db)
  File<EMAIL_ADDRESS>line 726, in save
    self.save_base(using=using, force_insert=force_insert,
  File<EMAIL_ADDRESS>line 763, in save_base
    updated = self._save_table(
  File<EMAIL_ADDRESS>line 845, in _save_table
    updated = self._do_update(base_qs, using, pk_val, values, update_fields,
  File<EMAIL_ADDRESS>line 899, in _do_update
    return filtered._update(values) > 0
  File<EMAIL_ADDRESS>line 802, in _update
    return query.get_compiler(self.db).execute_sql(CURSOR)
  File<EMAIL_ADDRESS>line 1559, in execute_sql
    cursor = super().execute_sql(result_type)
  File<EMAIL_ADDRESS>line 1175, in execute_sql
    cursor.execute(sql, params)
  File<EMAIL_ADDRESS>line 98, in execute
    return super().execute(sql, params)
  File<EMAIL_ADDRESS>line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File<EMAIL_ADDRESS>line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File<EMAIL_ADDRESS>line 84, in _execute
    return self.cursor.execute(sql, params)
  File<EMAIL_ADDRESS>line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File<EMAIL_ADDRESS>line 84, in _execute
    return self.cursor.execute(sql, params)
  File<EMAIL_ADDRESS>line 423, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: database is locked

Steps to Reproduce
Steps to reproduce the behavior:

inv server
inv worker

Expected behavior
I'm not sure if this is something that is benign or not (I would assume not since it shows up as an ERROR in the logs)
Deployment Method

[ ] Docker
[x] Bare Metal

Version Information
InvenTree-Version: 0.6.0 dev
Django Version: 3.2.5
Commit Hash: 88840e6ad
Commit Date: 2021-12-08
Database: sqlite3
Debug-Mode: True
Deployed using Docker: False

Deploying to production with sqlite3 is not recommended. Both the UI and the worker need to access the DB at the same time. Sqlite3 locks the db when something is being written so this can happen. I suggest you deploy with Postgres or sql. We also provide a docker image, which has all the infra needed in the docker-compose included. Please consult the deployment docs for more information

Sqlite3 is mostly there for devs for easy developing and test deploying

@cdwilson if you require further information or want a second opinion please post here, else pls close 👍

@cdwilson seconded. SQLite is not sufficient for a production database, and doubly so if you have more than one user.

@matmair @SchrodingersGat thanks for the pointers.  Some context: I am currently only using inventree for hobby use on my personal laptop, and I'm only using it as a single user (I initially didn't want to have to deal with running a real database)  I'll take a look into migrating to a more supported setup moving forward.

Sqlite3 locks the db when something is being written so this can happen. I suggest you deploy with Postgres or mysql.

In the mean time, are these errors something that could cause data integrity issues/data loss, or will the workers just keep retrying until the database is unlocked?  I just want to make sure that this is something that's safe to live with for now until I figure out how to migrate to a different database.

I don't think that this will cause data integrity issues, but it may mean that certain operations are not performed if the worker or server processes cannot access the database.

@cdwilson for migration: we have data import/export commands included. Those support transferring a whole database via a single file.

https://inventree.readthedocs.io/en/latest/start/migrate/


Pandas dropna/isna is not working properly in float columns pandas 2.1.0

I've just upgrade Big Sur 11.0.1 and I'm facing some issue. Could anyone help ?

Issue:
Applying dropna/isna functions to DataFrame/Series. I've noted when the column is type 'object' it works properly.
Example:
df = pd.DataFrame([np.nan, 7, 5.5])
df.isna()
I get as result:
False
False
False
Example2:
df = pd.DataFrame([np.nan, 7, 5.5])
df.dropna()
I get as result the same DataFrame/Series:
Nan
7.0
5.5

Your example works for me:
>>> df = pd.DataFrame([np.nan, 7, 5.5], columns=['a'])
>>> df
     a
0  NaN
1  7.0
2  5.5
>>> df.dropna()
     a
1  7.0
2  5.5

You should probably try conda update pandas and see if something happens, and if not, raise this issue (according to the issue template) at https://github.com/pandas-dev/pandas/

Your example works for me:
>>> df = pd.DataFrame([np.nan, 7, 5.5], columns=['a'])
>>> df
     a
0  NaN
1  7.0
2  5.5
>>> df.dropna()
     a
1  7.0
2  5.5

You should probably try conda update pandas and see if something happens, and if not, raise this issue (according to the issue template) at https://github.com/pandas-dev/pandas/

Great, conda update pandas solved the problem. Thx

Great, conda update pandas solved the problem. Thx


Improve DateTimeGranularitySpec to follow the convention of new dateTimeField

https://docs.pinot.apache.org/configuration-reference/schema#new-datetime-formats
We have introduced the new datetime formats e.g. EPOCH|MILLISECONDS|1
On the other hand, our granularity spec is still following the old format e.g. 1:MILLISECONDS.
We should provide the support of new format for DateTimeGranularitySpec as well.
Proposed change:
old format:
size:timeUnit -> 1:MILLISECONDS

new format:
timeUnit|size -> MILLISECONDS|1

@rajagopr

Hi @snleee, I would like to work on this.

@snleee Raised PR for the same PTAL


.npmignore ignore target / reports

When installing our components I noticed that a couple packages also installed target, tests, and reports.
We should add these to the .npmginore file.
Before adding tests to the npmignore, we want to make sure we don't need any of the nightwatch test routes to be available.

Resolved in #415


Redis Cache GET 'Try it' does insert ResourceGroupName into URL

Describe the bug
The "Try it" feature in the Redis GET document ends up with a URL that contains resourceGroups/%7BresourceGroupName%7D/ because the resource group name does not get inserted correctly as a parameter.
To Reproduce
Steps to reproduce the behavior:

Go to https://docs.microsoft.com/en-us/rest/api/redis/redis/get#code-try-0
Fill in the parameters, specifically resourceGroupName
Click Run
Check the URL

Expected behavior
the parameter entered for resourceGroupName should be in the URL
Actual behavior
%7BresourceGroupName%7D shows up where the parameter should be.
"error": {
"code": "ResourceGroupNotFound",
"message": "Resource group '{resourceGroupName}' could not be found."
}
Desktop (please complete the following information):

OS: Windows
Browser: Chrome
Version 77.0.3865.120 (Official Build)

@amunger We pushed a fix a couple of weeks ago that cleared up an issue where the value in the Try-It fields would be considered invalid, and not injected properly into the URL. Please re-try , and if the issue continues then reply here with a sample (not actual ) resrouceGroupName value so I can recreate.


How to user thread-pool when i use cluster  to connect to ?

Is cluster support thread-pool?

I've not used thread-pool, did you get any errors when using ioredis with thread-pool?

Can i user this for thread-pool?
https://github.com/coopernurse/node-pool

Do you mean generic-pool or thread-pool? For the former one, you should be able to use it with ioredis.


Feat: OpenAI Base URL supported

The OpenAI Base URL support has been added, and users can use the custom URL. If no input is provided, the official OpenAI URL will be used automatically.

thank you for this. will merge in tomorrow

Thanks @Nothing1024 finally merged!

The OpenAI Base URL support has been added, and users can use the custom URL. If no input is provided, the official OpenAI URL will be used automatically.

could you specify how to use it .with my local model?

The following instructions may help:

Find the Web-UI container that can run your local model.
Find the proxy to transform the container's API rules into OpenAI-style API rules.
Change your BASE_URL.

@jackylee1 you can't use it with your local model yet. This PR is about using it with a OpenAI proxy


Failed to fetch from s3

After much fighting with travis, I finally got nodegit to run on a linux box using<EMAIL_ADDRESS>The notable parts of my .travis.yml file are
sudo: false
language: node_js
node_js:
  - '0.12'

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - g++-4.9
      - gcc-4.9
      - libc6-dev

before_install:
  - export CC=/usr/bin/gcc-4.9;
  - export CXX=/usr/bin/g++-4.9;

That setup however yields the following log. It all works but the apt-get stuff and the rebuild of nodegit added more than 10 minutes to my builds. Previously I was just using an osx box but that doesn't suit my use cases any more.
Is there somthing that I can help with to generate an s3 image that won't keep causing these downloads and builds?
Cheers

Also having this issue! :(

The prebuild S3 version did work for me on Node 5.x but not on the LTS 4.2.x version, where I ran into this issue #585
The follow .travis config sets BUILD_ONLY to true and caches node_modules
https://github.com/thisconnect/nodegit-kit/blob/b8349239823f32d2ed0c96ef5f41f37c99c352ea/.travis.yml
Travis finishes in about 1 to 1.5 Minutes https://travis-ci.org/thisconnect/nodegit-kit

Closing for now as this issue looks resolved. S3 builds are working as expected, and you're currently missing the libstdc++-4.9-dev package that our library links to. Please see the README for more details.


[BUG]

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
I was flying and went to change the item conduit redstone from never active to always active and crashed out of the game (2x). No crash report, just exits Minecraft completely. This did not occur during previous interactions to change this condition where I was not flying.
When relaunch Minecraft, get a notification that Minecraft is already running. Even though I was clearly booted from the game.
Note: This was not creative flying, but flying through Iron Jetpacks mod.
Expected Behavior
That it would change the redstone trigger status without crashing.
Steps To Reproduce

Activate flying with an Iron Jetpack (Hover mode on)
Ensure you are well above a surface so that you have time before landing on the ground.
Open the UI for an Item Conduit
Click the icon to change redstone trigger status
Crash

Environment
- OS: MacOS Ventura
- Java version: 17
- Minecraft version: 1.20.1
- ATM 9 Modpack 0.0.37

Anything else?
No response

do you have rubidium installed? And do you have normal loga that you could give us? Debug logs would be great too

@Graymayne , do you have a follow-up for us?

Yes, sorry IRL has been a bit distracting of late for me, so sorry for the lack of response.
I had to completely reformat and reinstall my OS a couple days after my initial post. And so to replicate the issue reinstalled and created a new world. However, it seems that the problem no longer exists. I cannot replicate, even attempting to use every conduit and every form of flight including creative. So I must assume that it was connected to the issue that forced me to reinstall my OS in that something somehow was corrupted or not processing correctly and may not have been a java related issue at all. Sadly Apple systems are completely new to me so I am fumbling my way through the ins and outs, so thank you for posting so that I could be reminded to respond.
I was not expecting it to be an issue on my end since it seemed to only happen with Ender IO and I could play all other forms of the game just fine.
So again I apologize for taking your precious time and thank you for what you are doing for Ender IO.
-- Gray

Interesting, it could also be that it was accidentally fixed someplace during another bug. Thanks so much for reporting the issue and getting back to us!


complete histories of published/deleted activities

If you're working in a published or deleted activity, the history on the overview page should show up until the publishing or deleting action. Right now it stops with the last action you took before someone else published/deleted.

[x] show complete history for published activities
[ ] show complete history for deleted activities

Complete history for published activities is in as of PR #482


[UseDotNet@2] which is the correct url to fetch the supported SDKs

The supported SDKs is fetched from https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json
Originally posted by @bishal-pdMSFT in https://github.com/microsoft/azure-pipelines-tasks/issues/11663#issuecomment-548228440
According to his post it's: https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json
But the url in the master-branch is: https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases-index.json
Source: https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/UseDotNetV2/versionfetcher.ts#L297
--
So i ask myself which is the currently correct url. And do we need to adjust the code?

@juwens both the urls should be pointing to same content. @leecow is there a recommended one amongst the two urls?


[Backport 2.5] Ability to specify network tags for node pools in GKE cluster

Backport to v2.5 for https://github.com/rancher/rancher/issues/33406
Request description:
Add network tags when adding node pools to a GKE cluster during provisioning and edit.
Actual behavior:
Can't specify tags when working with node pools in a GKE cluster through Rancher.
Expected behavior:

When creating a GKE v2 cluster through the Rancher UI, a user should be able to specify 0 or more network tags to add to the nodes in a node pool. Mimicking the behavior in the GCP console.
When creating a GKE v2 cluster through the API or TF provider, the user should be able to specify a list of 0 or more network tags.

Additional notes:
https://cloud.google.com/vpc/docs/add-remove-network-tags
JIRA ID: SURE-3037

Chart updated in https://github.com/rancher/system-charts/pull/500

v2.5-0e587683fd86a24d25fb8d567c946d3edd867000-head
same as https://github.com/rancher/rancher/issues/33406#issuecomment-885902682

tested on v2.5-07131035f51f3e264c114e9d9dde65aae37bdf4f-head

looks like new argument needs to be added to tfp
Error: Unsupported argument

  on terra.tf line 48, in resource "rancher2_cluster" "prabal-tf2":
  48:         tags = ["http-server", "https-server"]

An argument named "tags" is not expected here.

this is the new tfp issue https://zube.io/rancher/rancher/c/41711


GetLocalProfiles hangs

In running some tests the "Enumerating user profiles" steps hangs and never returns. In looking through the source the action looks to be executing fine but never returns the results. The StdOut from the step looks good and the correct user,sid information is displayed. I have a feeling something is hanging that await task.
My Test Env information:
DC - Win2012R2
2 Member Clients - Win10 Enterprise x64 (10.0.14393 N/A Build 14393)
Im leveraging this issue as an opportunity to learn the code base and dig into logging an whatnot so any information you are willing to share to help troubleshoot would be awesome. I have put in a false command-line parameter to reg query in the source and was able to get this task to fail and then eventually continue but Im stuck in trying to fix this.
Thanks and keep up the awesome work!

This issue occurred with a fairly out of date (at this point, not at the time) version of Caldera. If the problem occurs again after upgrading to the most recent version of Caldera and adversary mode, feel free to re-open the issue or create a new one, and we can investigate the parsing system further, as that is likely the culprit behind this issue. In the mean time, the issue is being closed due to lack of activity.


Finding out why UnfinishedJobsCount is not getting to 0

We are using the buildkite-agent-metrics tool to manage autoscaling for buildkite agents. We are facing an issue where agents don't scale down even when there are no jobs running.
Running the latest release locally shows that UnfinishedJobsCount is 1 and that BusyAgentCount is 1. However, accessing the running builds page for each pipeline shows no running builds in any of them and the agents page shows that no agents are busy.
A similar issue was reported in #72 but appears to have been resolved.
Is there a way I can see what job is causing the UnfinishedJobsCount to never get to 0?

Actually, I finally found this - the build was not showing as running, it was stuck in cancelling state but there was a job which was trying to run. Cancelling that run caused the issue to resolve. I'm still not sure how I could find this without going through every build.


Upgrades to Tensile BenchmarkProblems

This PR has four main changes to the BenchmarkProblems process, two of which---3 and 4---are closely related.

Support for a new config format being used by the SolutionSelection workgroup
An additional way to specify solution parameters: GroupForkParameters
Ability to run BenchmarkProblems with no sizes---this changes the old behaviour of using default sizes if none are specified
Ability to use Solutions generated from a previous run with a new set of sizes

1: New Config Format
The main Tensile app now accepts a new config format in addition to the standard one, specified by using the --alternate-format option. The new format is actually two yaml files, with the size list separated out into its own file. The PR includes an example for each of these files.
For the "main" config file, it has a similar structure to the regular Tensile config files. The main difference is it only supports a single benchmark problem, with the fields that would normally be specific to a certain benchmark problem (e.g. BenchmarkCommonParameters and ForkParameters) instead being top level fields. Additionally, the "ProblemType" part of the config is labelled as such.
The "sizes" file is simply a list of exact sizes as they would normally appear in BenchmarkFinalParameters: - ProblemSizes: section of a config. This is also the same format as used by TensileRetuneLibrary when specifying a size file.
The main motivation for the new format is being able to split the sizes part of the config into its own file (more on this in 3 & 4). In this use case, it doesn't make sense to have more than one benchmark problem, so a simplified base config is used alongside the size list. Additionally, the default config format is saddled with a bunch of legacy which can make it difficult parse and edit; the new format is easier (imo) to work with both manually and programatically. This new format is what the SolutionSelection workgroup will be using, but I would still consider it "experimental" and subject to some change.
2: GroupForkParameters
GroupForkParameters are a means to give more control over the list of solutions benchmarked by allowing only certain combinations of parameters to be used. The motivation and process is most clearly explained through an example:
Say you only want to benchmark solutions with a 64x64 macrotiling on vega20; specifically, you're interested in the combinations (WorkGroup: [8, 8, 1], ThreadTile: [8, 8]) and (WorkGroup: [16, 16, 1], ThreadTile: [4, 4]). To achieve this normally, you would have to use ForkParameters:
ForkParameters:
- WorkGroup:
  - [8, 8, 1]
  - [16, 16, 1]
- ThreadTile:
  - [8, 8]
  - [4, 4]

However, this results in four total combinations of WorkGroup and Threadtile: double the number of combinations we care about. Using GroupForkParameters, you can specify only the combinations of parameters you wish to benchmark
GroupForkParameters:
- - WorkGroup: [8, 8, 1]
    ThreadTile: [8, 8]
  - WorkGroup: [16, 16, 1]
    ThreadTile: [4, 4]

Even in this simple example this would reduce the total number of solutions benchmarked by (up to, depending on what parameter combinations are valid) a factor of two. More elaborate cases with more parameters in the group and/or more entries in the group can have an even larger factor compared to the equivalent ForkParameters expression.
Additionally, multiple GroupForkParameters lists can be used and they can be used in combination with regular ForkParameters. For example:
ForkParameters:
- LdcEqualsLdd: [1, 0]
- FractionalLoad: [0, 1]
- TransposeLDS: [1, 0]
GroupForkParameters:
- - WorkGroup: [8, 8, 1]
    ThreadTile: [8, 8]
  - WorkGroup: [16, 16, 1]
    ThreadTile: [4, 4]
- - DepthU: 16
    WorkGroupMapping: 1
  - DepthU: 16
    WorkGroupMapping: 15
  - DepthU: 8
    WorkGroupMapping: 8

In this example, the total number of solutions (before removing invalids) would be (2 * 2 * 2) * (2 * 3) = 48. To get the same solution set with only ForkParameters would require (2 * 2 * 2 * 2 * 2  * 2 * 3) = 192.
3 & 4: Reusing solutions with new list of sizes
For tuning exercises with a large set of solutions, actually generating the solutions can be quite time consuming. When rerunning Tensile, this time consuming work is always repeated, even if the config file being used has not been changed in a way that would result in a different set of solutions being benchmarked.
This PR adds a caching mechanism where solution generation---which includes both the generation of the Solution objects and the building of these solutions into code objects and a Tensile library---are only redone if the solution parameters in the config have changed. This allows the set of sizes and/or the global parameters of the config to be changed, and then Tensile can be rerun and new benchmarks generated using the already existing solutions and code objects.
Changed in this PR, if no sizes are present when running Tensile, it will still do the solution and library generation steps, but will no longer benchmark with a set of default sizes. This is to facilitate a workflow where the solution and library generation are done ahead of time, and then Tensile calls with different size lists are dispatched to different GPUs and/or machines to parallelize tuning without redoing work unnecessarily.
There is also a --no-cache option to bypass this mechanism if you want to force redoing these steps, such as when testing changes to the code generator.
Main Feedback Areas

name for GroupForkParameters is maybe not perfectly clear, but was the best I could come up with
is removing the old behaviour of using default sizes when no size list is present OK?
the cache mechanism is currently opt-out, but perhaps opt-in would be better?

@benjaminulmer
I like the concept of GroupForkParameters. Can we have a fork within the GroupForkParameter? For instance, for the example that you have, can we rewrite it as follows:
ForkParameters:
- LdcEqualsLdd: [1, 0]
- FractionalLoad: [0, 1]
- TransposeLDS: [1, 0]
GroupForkParameters:
- - WorkGroup: [8, 8, 1]
    ThreadTile: [8, 8]
  - WorkGroup: [16, 16, 1]
    ThreadTile: [4, 4]
- - DepthU: 16
    WorkGroupMapping: [1,15]  # here
  - DepthU: 8
    WorkGroupMapping: 8L

@babakpst

Can we have a fork within the GroupForkParameter?

No, but that's a really good idea! Although, I have a feeling it would make the parsing much more complicated, especially if there are multiple forks within a group. It might be more appropriate to try and add that functionality in a future PR, along with some of the checks I mentioned in a TODO comment.

@benjaminulmer For the default sizes, I am not sure how many people are using this. I am fine if you remove this functionality, but that does not seem to be backward compatible.

The "sizes" file is simply a list of exact sizes as they would normally appear in

Does that mean the Range is not acceptable?

@babakpst

GroupForkParameter is basically a sub-category of ForkParameters and makes better sense if we list it under ForkParameters

The name is definitely not super clear as is. They do work very similarly to ForkParameters, so maybe listing the groups in there does make more sense. From a parsing perspective at least, it should make very little difference. I'd still love more feedback from others on this before any final decisions are made.

For the default sizes, I am not sure how many people are using this. I am fine if you remove this functionality, but that does not seem to be backward compatible.

Yes, this is a breaking change. I'm not aware of anyone using the default sizes, and in my opinion they cover such a small set of sizes I find it hard to imagine them being useful. I think they're mostly a vestigial element from the old multistep tuning where it may have been convenient to not specify the sizes for each step.

The "sizes" file is simply a list of exact sizes as they would normally appear in

This was a poor choice of words (I always forget range sizes exist). This file can have sizes specified in any format that is valid normally, including range sizes.

Removing the default sizes broke some tests. However, I've realized the desired behaviour I wanted for this PR could already be achieved by including the size portion of a config but leaving it empty, so I've restored the old behaviour.

@benjaminulmer I had a similar issue with the tests. I guess we need to update some of our tests.

@cgmillette
You would have to do a pre processing step to separate the regular fork parameters from the groups, something like
forkRaw = getNonNoneFromConfig("ForkParameters", [])
self.paramGroups = []
for item in forkRaw:
    if type(item) is list:
        self.paramGroups.append(item)
for item in self.paramGroups:
    forkRaw.remove(item)

forkParams = dict(itertools.chain(*[x.items() for x in forkRaw]))

which isn't the most unwieldy code in the world, but is certainly a bit more verbose and (imo) a bit less self documenting than simply grabbing something by name.

After some discussion, the general consensus is to go with Babak's proposal and have the Groups be listed under ForkParameters.


additional tests info

I think it's helpful to add the npm run linkall step to the test page because I and many others start a new project by looking at the test coverage.
Changed some npm runt -> npm run
Added tap to the development dependencies because it appears to be needed to run the test suite.
Minor wording changes

Thank you for submitting this pull request, however I do not see a valid CLA on file for you. Before we can merge this request please visit https://yahoocla.herokuapp.com/ and agree to the terms. Thanks! :smile:

CLA is valid!

Yay! look who is back! Thanks again for the contribution friend!


No scope distinguishes function use from function definition

Thanks for making this language!
Unlike with the included Javascript language, function invocations receive the entity.name.function scope. This makes it so that there's no scope that a function name in a function definition possesses which the function name in a function invocation does not. Therefore, there's no way to assign a distinguished color for function names in function definitions.

You can match function calls with meta.function-call entity.name.function. Give the scope always package a try.

Thanks for making this language!

Closing for now, re-open if that doesn't work for you.


Created CODE_OF_CONDUCT.md

Fixes #15
Proposed Changes
Added Code of Conduct

Hmm I think this CoC is from a template, so I think it might be best to use it how it is
There are various options, we could use the html one instead of the markdown, but it might not render all html tags https://www.contributor-covenant.org

I have merged, we can always update later if required


about  vuex state problems

I  use 'nuxtServerInit' to  set datault use info ,  when two user login, and They refresh the page at the same time，I can see the other person's message，how to fix this bug ,please help me ,thx.

Can you please provide a repo which can reproduce the issue ?

I think you need reset your state when nuxtServerInit before, because Vuex in server side is global for all clients


Windows: tray icon right click options don't work

Describe the bug
When the app is set to be displayed in Tray and you close the app (using the default Windows close button in app window) - it goes to the tray.
When you right click the tray icon to see the options, I see these: Preferences, Hide Ray, Exit Ray.
Only Exit Ray works fine.
Preferences option doesn't open app preferences, and for some reason, I have Hide Ray while Ray is already hidden for me.
It works only if Ray is opened and displayed to a user.
"Show app" option is set to "On both task bar and system tray".
Versions
Ray: <IP_ADDRESS>
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots

Desktop (please complete the following information):

OS: Windows 10 Pro, 20H2

In Ray 1.0.5 the new "Show/Hide Ray" now works as expected.
Preferences still don't work when Ray is hidden.
Expectation: open Ray and its settings.

In Ray 1.0.5 the new "Show/Hide Ray" now works as expected.
Preferences still don't work when Ray is hidden.
Expectation: open Ray and its settings.

The fix will be released in 1.0.7

The fix will be released in 1.0.7


from apiclient import version

Running into an issue with import version
File "/app/.heroku/python/lib/python2.7/site-packages/apiclient/http.py", line 50, in <module>
 from model import JsonModel
File "/app/.heroku/python/lib/python2.7/site-packages/apiclient/model.py", line 30, in <module>
 from apiclient import __version__
 ImportError: cannot import name __version__

Issue Mentions:
http://xmodulo.com/2013/12/integrate-google-calendar-linux-desktop.html
https://github.com/insanum/gcalcli/issues/123

Great work. And the Oscar goes to AlexanderPease, best performance. https://www.youtube.com/watch?v=W_gYRFDb8_A

$ sudo pip install --upgrade googleapiclient
Downloading/unpacking googleapiclient
Real name of requirement googleapiclient is googleapiclient
Could not find any downloads that satisfy the requirement googleapiclient
Cleaning up...
No distributions at all found for googleapiclient
Storing debug log for failure in /home/rschaufler/.pip/pip.log
and still getting
$ gcalcli agenda
ERROR: Missing module - No module named discovery

there's a name mismatch; you want google-api-python-client for the pip command.

@craigcitro I was trying to follow the 8/1/2014 instructions above from @AlexanderPease.
I had already done pip google-api-python-client, and was getting the discovery module not found error.
Moot point, I somehow got past the discovery issue and ran into another issue, leading me to give up entirely on trying to install gclical. If it had this many problems with just installation, I'm not going to trust it to touch my calendar.

@RobinIsTheBird how did you get past the discovery issue?

@elijahcarrel I'm sorry, but I forget now. It was a couple weeks ago, and since there was a later showstopper, I gave up entirely. Binding my google calendar to a separate chrome window is a sufficient solution to reducing my Chrome tab count, while presenting a unique icon to the application switcher, which is what I mainly cared about.

I am also having this problem. Calling googleapiclient.discovery also throws me a "No module named" error....

@chromafunk,
After many frustrating hours, I finally got my build to import.  Be sure that you have the library googleapiclient within the lib folder in your appengine-flask-skeleton-master directory.  If you do not, you should be able to copy it from the Python Frameworks.  You might as well take this time to copy over any other import libraries that are not already there (this could be apiclient, httplib2, oauth2client, simplejson, six, uritemplate, urllib3, etc.).  I recall having issues with all of them.
On my mac, you can find the Python libraries within:
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Now regarding the import call.
from googleapiclient.discovery import build
I could only get this to work when it was within a flask method.  for example:
@app.route('/oauth2callback')
def oauth():
from googleapiclient.discovery import build
This was the only way I could get it to work!  Hope it helps.  Feel free to reach out if you would like to discuss.

@robmorehead It seems your answer was from years ago, but it did fix my problem. thx

I just had the same problem and @robmorehead trick worked 💯

Please use:
pip install --upgrade google-api-python-client
This worked perfectly for me in python 2.7 and with python 3.6.5

does anybody know what to do if pip install --upgrade google-api-python-client doesn't help?

I have the same issue with python 3.6.5 in 2020......


Cannot read properties of undefined (reading 'TextField')

I'm using "react-native-material-dropdown": "^0.11.1", but I'm having an issue with the textField. I updated to the latest version, but the issue still exists.I think I have to install "react-native-material-textfield".

Hi @talhaakbar22


Integrate validator listing api

Refactored some validator related api to lighten the calls
Implemented validator screen api and model
Integrated listing apis

Desktop
Mobile

based #311 #318
refs #309

plz rebase

@chihimng rebased 🙏


binwalk gets stuck while extracting files

when i tried to extract a rar file from a picture, binwalk no longer outputs after scanning out image part just like this:
$ binwalk -e test.png

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             JPEG image data, JFIF standard 1.01
30            0x1E            TIFF image data, big-endian, offset of first image directory: 8

It will not continue to work unless I hit the enter key in the terminal:
$ binwalk -e test.png

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             JPEG image data, JFIF standard 1.01
30            0x1E            TIFF image data, big-endian, offset of first image directory: 8
[Enter key pressed]
137448        0x218E8         RAR archive data, version 4.x, first volume type: MAIN_HEAD

But when I used it without '-e', it works well:
$ binwalk test.png

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             JPEG image data, JFIF standard 1.01
30            0x1E            TIFF image data, big-endian, offset of first image directory: 8
137448        0x218E8         RAR archive data, version 4.x, first volume type: MAIN_HEAD

I'm trying to use binwalk in my python project, but this bug puzzled me. Since my project is a software with a graphical interface, it is impossible for me to send a carriage return to the terminal while it is running. so it just halted.
My platform:
 OS: Arch Linux x86_64
 Host: AERO 15 Classic-XA
 Kernel: 5.6.6-arch1-1
 Packages: 2015 (pacman)
 Shell: fish 3.1.0
 Resolution: 1920x1080
 DE: Plasma
 WM: KWin

I meet the problem too ,and I'm eager to get the solution.
My environment: Kali Linux latest version arm64.

Sometimes can't exact, and sometimes get stuck

It looks like binwalk is getting "stuck" while attempting to extract the RAR archive. In reality it's probably the external unrar utility that is getting stuck, but without the original file that produced this issue it's impossible to say for sure.
If you run binwalk in debug mode, you'll get a lot more information about what might be happening here:
$ python -O $(which binwalk) -e test.png


US#3: Logout

Priority:  P2
Story Points:  3
User Story:
As a logged in User,
I would like to Logout,
So that my session is terminated and my personal information remains secure.
Potential Risks:

Loss of unsaved Data
Inadequate security (Session hijacking, unauthorized logouts)
Forgotten passwords

Demo Steps:

User must be logged in firstly to be able to log out.
Upon clicking his/her avatar, the last option in the drop-down menu will be a "Log out" button.

User confirms the Log out is genuine and page is refreshed to the home page.

Acceptance Criteria:

User clicks "Log out" button on the drop down, confirms the logout and is redirected to home page

Sub-criteria 1.1: Session is terminated
Sub-criteria 1.2: User remains logged out while navigating the website.

User clicks "Log out" button on the drop down, and clicks cancel on the pop-up window.

Sub-criteria 2.1: User keeps his/her session.

Sub Tasks
#62
#63

Project Progress video : https://youtu.be/g0pme7nBDzI

https://github.com/awaazo/awaazo/assets/46968018/db674005-d1f4-482c-9925-8814373804eb

https://github.com/awaazo/awaazo/assets/31280516/175e5716-8a8e-4db7-af13-7063661c8560
Commit where this was done: https://github.com/awaazo/awaazo/commit/0cd3f5ed12371c6606c69f35b7aa836dfab79b7e

Radwan[frontend]: User logout functionality demo
https://github.com/awaazo/awaazo/assets/68618601/dfb8c095-0082-4046-9d9d-fdbf1d1d5dc7

Sonia[frontend]: Logout Item in Navbar - Code Overview
video link:
https://clipchamp.com/watch/0LN2KWJQ369


Make a new release

Make a new release bc of the updates

just made one, thank you for reminding me!


in-line code brackets [] turned into <>

After po2md,  `[]` turned into `<>`.
Input
msgid ""
"This document describes the method for calibrating the x, y, and z "
"offsets of an \"automatic z probe\" in Klipper. This is useful for "
"users that have a `[probe]` or `[bltouch]` section in their config "
"file."
msgstr ""

Output
This document describes the method for calibrating the x, y, and z offsets of an
"automatic z probe" in Klipper. This is useful for users that have a
`<probe>` or `<bltouch>` section in their config file.

This should have been fixed in v0.3.18. Could you confirm it?

It's fixed :P


Access console window size

Currently, winpty allows to set window size via winpty_set_size in winpty.h.
However, I couldn't find a way to access window size (no winpty_get_size API).
Is it possible to access window size by other means?

There's currently no way to retrieve the window size.
Can you use the value last passed to winpty_set_size, or are you trying to accommodate console programs that resize the console window/buffer?

Thanks, currently, the value last passed to winpty_set_size is used: https://github.com/JetBrains/pty4j/commit/3f0fbce33ce0c2231f84feae28b09abd50fd6fe8#diff-385b08a79e19a17a08ef52bc324383f9
Do you mean that it's impossible to retrieve the window size or it's just not implemented yet, but possible?


Russian language support

I created Russian locale file and updated vcr font, which now contains Russian symbols

I think this would be better on a mod case where you needed to add a new language to it, the base engine will only have English, Spanish and Portuguese
localizations are still in a work in progress state so I won't really accept new translations at all unless they are fixes to the existing ones


The installation script.

This is the script that installs the docker images to syno.

Moved to Synology Repo


Key labels for axes

I have an awesome chart, thanks to you amazing folks making chartist:

One problem that I'm running into is this: Can you tell me what this chart represents? You'd be able to if there were labels! It'd be great if the options had fields like xLabel and yLabel so I could label my chart here. I'd say xLabel: courseVisits and yLabel: date and you'd have a sense of what I'm trying to show here :smile:

Hi there. This is a duplicate of #27 . I'm closing your issue in favor of #27 . Maybe we should reconsider to axis titles but I was always under the impression this could easily be done outside of chartist. Maybe we can discuss more in #27 ?

Oh yes, absolutely. I combed through the issues before I posted, not sure how I missed that, especially since it was so clearly named :) Thanks!


⚠ Bofrost.at has degraded performance

In c2cb56b, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1332 ms

Resolved: Bofrost.at performance has improved in d7730a4 after 15 minutes.


Dashboard search with map disabled

This I'm not sure if this is actually an issue or not, but while you can search on the building list page by dragging and zooming in on the map, this is not the case for the dashboard (and might be handy? Or is this part of future expansions, as being part of the interactions between the charts)

Indeed future feature.


fix: documentation for position control DMS format

Documentation for origo-map/origo#1623.
Also took the liberty to clarify how the control works.

@steff-o Please resolve the conflicts and I'll merge this


boss timer: update crazy archeologist respawn time

Updated crazy archeologist boss respawn timer from 30 seconds to its correct 9 seconds.

This issue was already resolved in #17742

This issue was already resolved in #17742

The timer for crazy archeologist was in fact not resolved in #17742 . At least from reading the files changed section and that master currently still showed 30 seconds as the set timer.
Please correct me if i misunderstood something :)

Oh, you are correct, Crazy Archeologist was not modified in that PR. My mistake.


add estimated cost

If the user using ChatGPT, display the estimated cost and let the user confirm before processing

The cost is composed of input and output. The input cost can be calculated by counting the tokens. We can estimate the tokens for output by averaging several outputs.


[*] Preparing database... failed

hi!
gitrob configure
[*] Preparing database... failed
[!] NameError: undefined method new' for class #Class:BigDecimal'

Yup same problem here as well.

Me too. How can it be solved？？


Update tls_selfsigned.yml

copy/paste error I guess. Thanks for the awesome work!

thank you for the PR 👍
I thought I fixed this copy paste mistake some days ago. seems i've forgotten to commit. -_-'
Stay tuned. I still have improvments to make before releasing to galaxy.


Updated Links

Links are Wrong. Correct links are mentioned below for Article: https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/backup-and-restore-of-analysis-services-databases
First Change:
How to Backup an Analysis Services Database (TechMantra) Link has changed from https://www.mytechmantra.com/LearnSQLServer/Backup_an_Analysis_Services_Database.html to https://www.mytechmantra.com/sql-server-analysis-services/how-to-backup-analysis-services-database-in-sql-server-using-sql-server-management-studio/
Second Change: Step by Step Article is on MyTechMantra.com and not on TechMantra
Third Change: Link has changed for Automate Backup of an Analysis Services Database from https://www.mytechmantra.com/LearnSQLServer/Automate_Backup_of_Analysis_Services_Database.html to https://www.mytechmantra.com/sql-server-analysis-services/how-to-automate-backup-of-analysis-services-database-using-sql-server-agent-job/

@AshishKumarMehta - Thank you for pointing this out. This has been updated.


Build a survey to gauge clients' user experience

Survey needs to highlight what clients do when they work with us(more specifics = better; what mediums do they use while working with us? What apps/services, how do they get in contact?), how they feel while doing so (are they frustrated? annoyed? content?), and what they are thinking when they go through these steps (maybe they wish there was a faster way to fulfill a task, or an easier way, or they might have in mind a better way of conducting these actions between parties).
The more specific information they provide the better we can improve the experience. Although, a super specific survey can be a turn-off to some individuals.

https://docs.google.com/forms/d/1gqD8pG70n2Rwl1oRB_etxC5vXoSRqgMQgCkARxPUdHE/edit


Template loop shelly_current_consumption.yaml

I've tried adding the current_consumption of 2 localtuya plugs in your current_consumption sensor template but i keep getting "Template Loop" warnings in the logs.
"Logger: homeassistant.components.template.template_entity
Source: components/template/template_entity.py:216
Integration: Template (documentation, issues)
First occurred: 10:04:05 AM (2 occurrences)
Last logged: 10:04:38 AM
Template loop detected while processing event: <Event state_changed[L]: entity_id=sensor.current_consumption_home, old_state=<state sensor.current_consumption_home=275.9; unit_of_measurement=W, friendly_name=Current Consumption, icon=mdi:flash-outline @ 2021-07-22T10:04:03.421334+03:00>, new_state=<state sensor.current_consumption_home=277.3; unit_of_measurement=W, friendly_name=Current Consumption, icon=mdi:flash-outline @ 2021-07-22T10:04:04.331133+03:00>>, skipping template render for Template[{% set ns = namespace(states=[]) %} {% for s in states.sensor %} {% if (s.object_id.startswith('shelly_sh') or s.object_id.startswith('plug')) and s.object_id.endswith('_current_consumption') %} {% set ns.states = ns.states + [ s.state | float ] %} {% endif %} {% endfor %} {{ ns.states | sum | round(2) }}]"
I've tried multiple modifications of the code but didn't manage to get it to work. Any ideas?

platform: template
sensors:
current_consumption_home:
friendly_name: Current Consumption
unit_of_measurement: W
icon_template: mdi:flash-outline
value_template: >
{% set ns = namespace(states=[]) %}
{% for s in states.sensor %}
{% if (s.object_id.startswith('shelly_sh') or s.object_id.startswith('plug')) and s.object_id.endswith('_current_consumption') %}
{% set ns.states = ns.states + [ s.state | float ] %}
{% endif %}
{% endfor %}
{{ ns.states | sum | round(2) }}

or

platform: template
sensors:
current_consumption_home:
friendly_name: Current Consumption
unit_of_measurement: W
icon_template: mdi:flash-outline
value_template: >
{% set ns = namespace(states=[]) %}
{% for s in states.sensor %}
{% if s.object_id.startswith('shelly_sh') and s.object_id.endswith('_current_consumption') %}
{% set ns.states = ns.states + [ s.state | float ] %}
{% endif %}
{% endfor %}
{% for s in states.sensor %}
{% if s.object_id.startswith('plug') and s.object_id.endswith('_current_consumption') %}
{% set ns.states = ns.states + [ s.state | float ] %}
{% endif %}
{% endfor %}
{{ ns.states | sum | round(2) }}

Thanks in advance.

Thx for reporting, but I would suggest to wait for 2021.8 and use the new Energy dashboard ;-)
Simone


Get profile info from ID token, use new samples theme for UX

Updates this sample to get and display user profile data from the ID token, using the new Auth0 samples bootstrap theme.
✏ Primary Changes

Uses Spring Security Authentication instead of Java Principal.
Updates this sample's AbstractTokenAuthentication (TokenAuthentication) implementation to be able to get the JWT claims.
Uses new Auth0 Samples theme for UX.
Removes JSP, adds Thymeleaf for view rendering.
Update dependencies to comply with Snyk.
Remove old CSS/JS .
Misc. cleanup (remove IDE artifacts, .gitignore updates).

🗒 Notes

To test profile rendering with custom claim types, I created a rule to add claims of different types. You can see TokenUtilsTest in this PR to see an example JWT used to test with.

⚠ Caveats

Auth0 samples theme artifacts are copied here locally. Per discussions, this seems a good incremental approach until we have a deploy (CDN) strategy in place for the theme.

This PR should not be merged until corresponding updates to the Quickstart is done.

Snyk ran against the latest commit on master, not this PR. Will look into how to fix that.


Update LICENSE

Hi and thanks for you PR!
It seems the current listing layout was done on purpose by @keradus so I don't think we need to change it :)

The spacing makes this not get picked up correctly. I re made the PR as I targeted 3. If you merge this pr github will correctly identify the licence

See https://github.com/FriendsOfPHP/PHP-CS-Fixer/pull/5716

sorry just saw it :+1:

Coverage remained the same at 91.549% when pulling 68ba302a52c4e53e8e9e59d201c9a9d5a055365c on exussum12:patch-2 into f196ab00f59b24ea36795ea0b42728c0f90f8323 on FriendsOfPHP:2.19.

Thank you @exussum12.


rofi-emoji doesnt seem to work anymore

When running rofi, I get a warning about ABI version for rofi-emoji
$ rofi

(process:119994): Rofi-WARNING **: 15:51:54.350: ABI version of plugin: 'emoji.so' does not match: 00000006 expecting: 00000007

Also emoji doesn't show up as an usable mode.

Installed version:
$ pacman -Q rofi-emoji
rofi-emoji 3.2.0-1

Which version of Rofi are you running? Are you running rofi-git or one of the forks, maybe?
This repo recently got a new Rofi version requirement, [documented in the README](https://github.com/Mange/rofi-emoji/blob/7f687720ca06f2478d4539949dc30439d9f5e148/README.md#dependencies:

The master branch of this repo tracks Rofi next. If you use a stable
release of Rofi, then you should use the latest stable release of this
package as well.

rofi-emoji version
Rofi version

3.2.0
1.7.5

Latest master
next

🤦♂ Yeap that did the trick, rofi from the arch repos works. Thanks for the help.
I had rofi-lbonn-wayland-git 1.7.5.wayland2.r154.g36621af0-1 version.

This plugin is compatible with that fork, but you'll have to compile it for that version of Rofi. I don't think AUR offers this, so it'll be a manual compilation if you want it.

For anyone else stumbling onto this, using rofi-emoji-git from the AUR should do the compilation step so that should work fine if you're building with rofi-lbonn-wayland-git already installed (works on my machine™).
I think if you already have rofi-emoji-git installed, you need to force it to rebuild by either clearing the cache or using something like paru with its --rebuild flag.


The plugin failing with error: header field value cannot include CR/LF (ArgumentError)

This seems to be related to a recent change in Ruby that has banned CR/LFs in HTTP header fields.
For reference take a look at: https://github.com/google/google-api-ruby-client/pull/648
Tested with vagrant 2.1.1
The error looks like this:
vagrant up --provider=google
/opt/vagrant/embedded/lib/ruby/2.4.0/net/http/header.rb:23:in block in initialize_http_header': header field value cannot include CR/LF (ArgumentError)         from /opt/vagrant/embedded/lib/ruby/2.4.0/net/http/header.rb:16:in each'
from /opt/vagrant/embedded/lib/ruby/2.4.0/net/http/header.rb:16:in initialize_http_header'         from /opt/vagrant/embedded/lib/ruby/2.4.0/net/http/generic_request.rb:44:in initialize'
from /root/.vagrant.d/gems/2.4.4/gems/faraday-0.15.2/lib/faraday/adapter/net_http.rb:67:in new'         from /root/.vagrant.d/gems/2.4.4/gems/faraday-0.15.2/lib/faraday/adapter/net_http.rb:67:in create_request'
from /root/.vagrant.d/gems/2.4.4/gems/faraday-0.15.2/lib/faraday/adapter/net_http.rb:87:in perform_request'         from /root/.vagrant.d/gems/2.4.4/gems/faraday-0.15.2/lib/faraday/adapter/net_http.rb:43:in block in call'
from /root/.vagrant.d/gems/2.4.4/gems/faraday-0.15.2/lib/faraday/adapter/net_http.rb:92:in with_net_http_connection'         from /root/.vagrant.d/gems/2.4.4/gems/faraday-0.15.2/lib/faraday/adapter/net_http.rb:38:in call'
from /root/.vagrant.d/gems/2.4.4/gems/faraday-0.15.2/lib/faraday/response.rb:8:in call'         from /root/.vagrant.d/gems/2.4.4/gems/google-api-client-0.8.7/lib/google/api_client/request.rb:163:in send'
from /root/.vagrant.d/gems/2.4.4/gems/google-api-client-0.8.7/lib/google/api_client.rb:648:in block (2 levels) in execute!'         from /root/.vagrant.d/gems/2.4.4/gems/retriable-1.4.1/lib/retriable/retry.rb:27:in perform'
from /root/.vagrant.d/gems/2.4.4/gems/retriable-1.4.1/lib/retriable.rb:15:in retriable'         from /root/.vagrant.d/gems/2.4.4/gems/google-api-client-0.8.7/lib/google/api_client.rb:645:in block in execute!'
from /root/.vagrant.d/gems/2.4.4/gems/retriable-1.4.1/lib/retriable/retry.rb:27:in perform'         from /root/.vagrant.d/gems/2.4.4/gems/retriable-1.4.1/lib/retriable.rb:15:in retriable'
from /root/.vagrant.d/gems/2.4.4/gems/google-api-client-0.8.7/lib/google/api_client.rb:636:in execute!'         from /root/.vagrant.d/gems/2.4.4/gems/google-api-client-0.8.7/lib/google/api_client.rb:368:in discovery_document'
from /root/.vagrant.d/gems/2.4.4/gems/google-api-client-0.8.7/lib/google/api_client.rb:413:in discovered_api'         from /root/.vagrant.d/gems/2.4.4/gems/fog-google-0.0.9/lib/fog/google/compute.rb:1063:in initialize'
from /root/.vagrant.d/gems/2.4.4/gems/fog-core-1.45.0/lib/fog/core/service.rb:115:in new'         from /root/.vagrant.d/gems/2.4.4/gems/fog-core-1.45.0/lib/fog/core/service.rb:115:in new'
from /root/.vagrant.d/gems/2.4.4/gems/fog-core-1.45.0/lib/fog/core/services_mixin.rb:16:in new'         from /root/.vagrant.d/gems/2.4.4/gems/fog-core-1.45.0/lib/fog/compute.rb:54:in new'
from /root/.vagrant.d/gems/2.4.4/gems/vagrant-google-0.2.3/lib/vagrant-google/action/connect_google.rb:45:in call'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/action/warden.rb:34:in call'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/action/builtin/config_validate.rb:25:in call'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/action/warden.rb:34:in call'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/action/builder.rb:116:in call'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/action/runner.rb:66:in block in run'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/util/busy.rb:19:in busy'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/action/runner.rb:66:in run'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/machine.rb:239:in action_raw'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/machine.rb:208:in block in action'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/environment.rb:598:in lock'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/machine.rb:194:in call'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/machine.rb:194:in action'         from /root/.vagrant.d/gems/2.4.4/gems/vagrant-google-0.2.3/lib/vagrant-google/provider.rb:45:in state'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/machine.rb:526:in state'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/machine.rb:146:in initialize'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/vagrantfile.rb:79:in new'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/vagrantfile.rb:79:in machine'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/environment.rb:700:in machine'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/plugin/v2/command.rb:180:in block in with_target_vms'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/plugin/v2/command.rb:204:in block in with_target_vms'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/plugin/v2/command.rb:186:in each'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/plugin/v2/command.rb:186:in with_target_vms'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/plugins/commands/up/command.rb:87:in execute'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/cli.rb:54:in execute'         from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/lib/vagrant/environment.rb:275:in cli'
from /opt/vagrant/embedded/gems/2.1.1/gems/vagrant-2.1.1/bin/vagrant:156:in `'

Acknowledged. Thanks for filing this issue!
This’ll require a bit of work since fog sets the google-api-client dependency.
I have some time this weekend for it so will try to attend to it.

Note that my current understanding of the issue is that it affects only the most recent version of Vagrant, but it’s at the top of my stack to fix.
If you experienced otherwise and this is more serious - let me know and I’ll try to carve out more time for it ASAP.

Pending https://github.com/fog/fog-google/pull/354 - need to wait for integration tests to finish and see if this breaks anything since historically there have been very major differences between minor versions of google-api-client.

Ran into some issues integrating the patch. Seems fixed now, but tests take a while, will take a fresh look next morning.

Pending fog release: https://github.com/fog/fog-google/pull/355

Just pushed 2.2.0, you should now be unblocked. Let me know if you still have issues though.


Marc's cakewalk problem:C# solution

Added a new solution for Marc's cakewalk problem using C# programming language

When reviewing this solution I realized that the n log n solution may actually be more efficient than the n+k solution for large k values, so I am going to review this and make adjustments as needed

I went back to my submissions on hackerrank and I can see that the first submission that I made which passed all test cases was done using quick sort only. So it was n log(n). Later, when I came to submit it in your repository then I could see that you used counting sort instead. Although, it is hard for me to imagine that O(n log(n)) will be better than O(n+k). k (=1000) is a constant in this case no matter how big n becomes. Isn't it?


add: Giri Madhan

Description
I have added my profile to the json file.
Related Issues
#153
Checklist

[x] I have read and followed the Contribution Guidelines.
[x] All new and existing tests passed.
[x] I have updated the documentation to reflect the changes I've made.
[x] My code follows the code style of this project.
[x] The title of my pull request is a short description of the requested changes.

@giri-madhan  Thank you so much for your contribution! Your efforts are greatly appreciated and will go a long way in improving our project. Please feel free to share it with others and Star the repo to help us grow even further!


keys with periods in them

A particular third-party API I wish to contact used periods in the key names. I have the keys in my structs labelled as such:
type whatever struct {
CleanupReturnCleaned bool   form:"cleanup.returnCleaned"
}
but when I run form.EncodeToString() I get:
cleanup%5C.returnCleaned=true
I've read the documentation in the Readme and have tried escaping the period with a back slash but that doesnt seem to have the desired effect. Am I misreading the readme, or is this not possible using ajg/form?
Cheers!

Let me investigate.

Hey @JalfResi,
Is what you want to have the period encoded without escaping—i.e. for the output to be cleanup.returnCleaned=true? That's currently not possible, because it would make decoding ambiguous in the general case. Still, you could use the following as a simple workaround:

type whatever struct {
	Cleanup struct {
		ReturnCleaned bool `form:"returnCleaned"`
	} `form:"cleanup"`
}

Would that work for you?

Ok thanks!

FYI @JalfResi, with PR #10 there is now support for literal unescaped periods in key names. (See https://github.com/ajg/form#keys)


NOT WORKING

Why is it not working, I have tried many times but it doesn't work, can you give me the answer?
2022-01-04 (1)
2022-01-04 (2)
https://user-images.githubusercontent.com/97072621/148000807-a5be03f2-b0fd-43cd-a6e0-50d4dcf5c1da.mp4

Yeah ur right Becuase it's a coding problem

@thegoodonehht please use this updated version: https://github.com/Yoxmo/GMH-v3
and close this issue thread thanks! if you have any other problems please send it to my issue on that fork.


Migrate to v9 of ESLint and flat config

With the release of ESLint v9, we will need to move packages/config/eslint to flat config style configuration and also remove all .eslintrc.cjs files and replace them with the modern counterparts.
The only hurdle I see to this being successful is eslint-config-next but honestly I am tempted to remove it because a lot of the useful rules aren't even working anymore, and that way the react config can be both react in general specific so we don't have a next.js and a react specific eslint configs.
https://github.com/antfu/eslint-config should be a big inspiration for this migration, not the formatting with ESLint part because we use prettier for that but the code organisation and config of that package is absolute awesome and we should learn from this and implement our new version with this as the inspiration.

I'd say remove it

Done


Fails to read files in folders named with Korean characters

If you try to load a mod folder that has subfolders or files with Korean letters, the program will be unable to read them.

Renaming these fixes the issue.

well, it seems not caused by korean word
make sure that file is still open well in nifskope
if doesn't open with nifskope then it cause by wrong nif file
if open well, it caused by an access error due to there a program already using that nif file


LAB_07-Manage_Azure_Storage.md

Current Translation:
Skrip PowerShell
Suggested Translation:
PowerShell Script

Hello contributor,
Thank you for your contribution! We are processing your suggestions and we will update you shortly.
Kind regards,
Microsoft Worldwide Learning Team

Run the bugfix tool and waiting for result. ICMS QUERY

This issue has been fixed, so I close the PR.


Add first draft of module that creates short css class names

This module returns 212 992 valid css class names that are 3 chars long.
Note:
This is obviously work in progress. Need to add all versions of valid 1 and 2
char class names + unit tests if this turns out to be a good approach.

@jouni-kantola I've started writing tests but we need to add the test modules to the dev-dependencies in package.config, you fix?


where to start

Hi,
I'm trying to install, but I really don't know where to start,
I've installed ruby (with the link in the readme ruby 2.2.1-p85 x64), downloaded shopify_theme, after that what to do?
I have no idea, I can do liquid for shopify but wanted to do it from my computer no from shopify interface.
I'm on windows.
Never touched to ruby, so I'm very lost, à installation instruction would be very nice for the not initiated to ruby.
tanks,

Please use this tool instead
It has better windows support and just works

Thanks, I'll have a look


Goal Checking for Juggling Commits #2

In the level Juggling Commits#2 (In A Mixed Bag Section), I find if I don't use amend, the level can also passed.
Like these commands:
git checkout main
git cherry-pick C2 C3

I see the description in this level is has something like :

Remember, the exact number of apostrophe's (') on the commit are not important, only the relative differences. For example, I will give credit to a tree that matches the goal tree but has one extra apostrophe everywhere.

I think maybe the credit shouldn't allow the result only one more apostrophe compare to the original tree ?

Ah yes this comes up now and then; the issue is that there are totally valid solutions that involve only one more apostrophe, for example this one:

The real issue here is that we don't have a way to track "did you amend the contents of C2, and then is that amended commit part of the main branch"? in the above picture I did successfully accomplish that, but in your solution the contents were not amended.
I never implemented some kind of state-tracker to tell if a commit has been amended, since it's somewhat complex -- you'd have to have C2'' track that it was a copy of the amended version of C2 (instead of just copied over twice).
If I had that ability, then I could properly validate the solution to this level :)

Oh, I never thought about this possibility.
But it seems if use your solution, the newImage branch will point to the new commit. I see the goal shows the newImage branch is point to the original commit. Could it used to checking credits ?

the position of the newImage branch doesn't matter, that's why it has the dashed line in the goal dialog. I moved it around in my screenshot before I remembered that :P

OK, now I think I can understand this level more clearly. Thank you for explanation and this project, it's very useful for understand the git commands. ^_^


Stocks module

have the ability to lookup stock prices - would be cool to find an api that can lookback in history at pricing

I don't think vanity features like this are relevant to pajbot.