Unable to deobfuscate Invoke-Obfuscation

Nice project :+1:
Testing box-ps out naturally with Invoke-Obfuscation I found out some problems with the test harness:
Using Invoke-Obfuscation inside docker:
pwsh -c 'Import-Module ./Invoke-Obfuscation.psd1 ; Out-SecureStringCommand -ScriptBlock {Write-Host 'Hello World'} -PassThru'
Generated payload using ConvertTo-SecureString method
 . ( $PshomE[4]+$PsHoMe[34]+'x')( ( [rUnTIME.iNTEropSeRviCeS.MARsHaL]::PTrtOsTRINgAuto( [RuntIMe.INTEroPserViCES.MaRsHal]::SeCurEsTRINGtOBsTr( $('76492d1116743f0423413b16050a5345MgB8AFUAbQBvAGgAWAAwAGwAbgBQAHYAaABnADIASABtAFUAYwByAGYAVwBrAEEAPQA9AHwANQAyAGMAMQA0ADQAMwBlADkAYQA1ADMAYwA4AGIANwBlADQAOABiADIAYQA5AGIANABlADkAOQBlADkAMAA0ADAAMgBiADEAOABjAGYAMAA3ADkANQA1ADUAZQAzADMAMgAxAGYAMwAwADMANwBlAGYAMwBiADcAZAA2ADcAZgAwAGIAYgAyAGIANAAyADEANQBmADAAMwBkAGYAMwAwADAAMQAzAGIANwBiADgANQBkAGUAMwBlAGYANAA1ADgA'|CoNveRtTo-seCuREsTring -keY  (207..192)) )) ))

Trying to deobfuscate, we get the following output, should have 'Hello World' in stdin but it is empty:
report.json
{
  "Actions": [
    {
      "Behaviors": [
        "script_exec"
      ],
      "SubBehaviors": [],
      "Actor": "Microsoft.PowerShell.Utility\\Invoke-Expression",
      "Line": ". ( $bshome[4]+$bshome[34]+'x')( ( [rUnTIME.iNTEropSeRviCeS.MARsHaL]::PTrtOsTRINgAuto( [RuntIMe.INTEroPserViCES.MaRsHal]::SeCurEsTRINGtOBsTr( $('76492d1116743f0423413b16050a5345MgB8AFUAbQBvAGgAWAAwAGwAbgBQAHYAaABnADIASABtAFUAYwByAGYAVwBrAEEAPQA9AHwANQAyAGMAMQA0ADQAMwBlADkAYQA1ADMAYwA4AGIANwBlADQAOABiADIAYQA5AGIANABlADkAOQBlADkAMAA0ADAAMgBiADEAOABjAGYAMAA3ADkANQA1ADUAZQAzADMAMgAxAGYAMwAwADMANwBlAGYAMwBiADcAZAA2ADcAZgAwAGIAYgAyAGIANAAyADEANQBmADAAMwBkAGYAMwAwADAAMQAzAGIANwBiADgANQBkAGUAMwBlAGYANAA1ADgA'|CoNveRtTo-seCuREsTring -keY  (207..192)) )) ))",
      "BehaviorProps": {
        "script": "W"
      },
      "Parameters": {
        "Command": "W"
      },
      "ExtraInfo": "",
      "Id": 1,
      "BehaviorId": "F4B3668EA3A7BB00F3D6A8B9FF39F8B1644F66B9E58EB197EFF86B05E9D5F9B4"
    }
  ],
  "PotentialIndicators": {
    "network": [],
    "file_system": []
  },
  "EnvironmentProbes": {},
  "Artifacts": {},
  "WorkingDir": "./working_1"
}

stderr
Get-Variable: /home/appuser/tool/working_1/harnessed_script.ps1:1500
Line |
1500 |  …      $parentVars = Microsoft.PowerShell.Utility\Get-Variable -Scope 1
     |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | The scope number '1' exceeds the number of active scopes.
     | (Parameter 'Scope') Actual value was 1.

This one (generated randomly) works:
( [RUnTIMe.IntErOPSeRVicES.MarshaL]::pTRtOstRiNGbsTR([ruNTime.INtERopSErViCeS.maRsHAl]::SecurestrInGtOBStr($('76492d1116743f0423413b16050a5345MgB8AFIAVQBSAGMAbQBkAHkAMgBSAEkAYwBVAGUAVQA1ADAAbwBkAEsAOABTAEEAPQA9AHwAZgAzADgAMwAzADkAMwAwAGEAZAAzAGEAMgAxADEAMwA1AGUAMABkADEAZABkADEANQA3AGIANAAyAGYAZABlADIAZAA1AGYAZAA2ADAAOQAxADQAMQAzAGQAMQA4AGMANwAzAGMAMgBiADUAZAA3ADMAMQAzAGYANgAzAGYAYQA4ADQAOABjADMAMgBlAGMANwA4ADgANQA1AGEAOQAxADkAYQA1ADEAYgA1AGIAMQAwADQAMwAyADUANAAxAGYA'|cOnverttO-sEcUrEstRING  -k 40,180,4,152,182,235,159,244,39,233,143,172,56,217,76,157,21,198,53,87,155,240,14,249,16,251,55,183,13,114,191,74)))) |INvOKe-ExpRESSION

Some other methods from Invoke-Obfuscation don't work because of some native implementations used, probably because of the limitation of the .NET Core implementation of pwsh on POSIX I believe. AFAIK this looks like a bug in the test harness?

Interesting, thank you. I'll check  it out!

This was definitely due to a difference between Windows and Linux, specifically string encoding. That PtrToStringAuto method in a linux environment interprets null bytes as the end of the string, so when you give it a UTF-16 string it stops after the first character because they're pretty much always padded with null bytes. I added an override for that method in the harness that just takes the pointer and passes it to PtrToStringBSTR to do the string conversion.
Nice find. Thanks again!


Mapping error: trailing characters on tedge-mapper-c8y startup

Describe the bug
Starting the tedge-mapper c8y service I get the following error meassage in the tedge-mapper-c8y.log file:
2022-12-02T06:32:24.6277056Z  INFO flockfile::unix: Lockfile created "/run/lock/tedge-mapper-c8y.lock"
2022-12-02T06:32:24.76629353Z  INFO init: c8y_api::http_proxy: Initialisation
2022-12-02T06:32:25.18990321Z  INFO init: c8y_api::http_proxy: Initialisation done.
2022-12-02T06:32:25.19150392Z  INFO tedge_mapper::core::mapper: tedge-mapper-c8y starting
2022-12-02T06:32:25.19633927Z  INFO tedge-mapper-c8y: tedge_mapper::core::mapper: Running
2022-12-02T06:32:28.36366462Z ERROR tedge-mapper-c8y:messages{ops_dir=Some("/etc/tedge/operations/c8y")}: tedge_mapper::core::converter: Mapping error: trailing characters at line 1 column 81

To Reproduce
This error occurs every time the tedge-mapper c8y service starts.
Expected behavior
Normal startup without an error.
Environment:

OS: Custom yocto build
Phoenix Contact AXC F 2152, Custom embedded hardware ARMv7
System-Architecture: Linux axcf2152 5.4.47-rt28-pxc # 1 SMP PREEMPT_RT Wed Dec 15 20:26:30 UTC 2021 armv7l armv7l armv7l GNU/Linux
thin-edge.io version 0.8.1

Additional context:
I use custom software management plugin. Checked it already if it outputs trailing whitespace characters on the list command, but it looks ok to me.

Thanks @bjoernsauer for providing the details.
Are you able to provide the custom sm plugin?

Hi Reuben, I'm sorry that is not possible.

From the logs below , it looks like there was a malformed alarm message, the mapper failed to parse the message.
[c8y/s/us] 302,temperature_alarm,"The temperature is over 99 grad celcius",2022-12-09T06:31:24Z
[c8y-internal/alarms/major/temperature_alarm] {"time":"2022-12-09T06:31:24Z","text":"The temperature is over 99 grad celcius"}
[tedge/errors] trailing characters at line 1 column 81

The workaround we did is clearing all the retained alarm messages and restarting the mapper. Now sending the alarm/measurement messages will not fail anymore. The mapper is working as expected.
So, the mapper should log verbose error messages.
The error can be reproduced by sending the below alarm message.
sudo tedge mq
tt pub 'tedge/alarms/critical/temperature_high'  '{
    "message": "Temperature is very high",
    "time": "2021-01-01T05:30:45+00:00"
}'  -q 2 -r

@PradeepKiruvale What was the malformation with the body (it is not so obvious, due to multiple lines, or timestamp format)?

@reubenmiller At the end of the json message, there is an invisible non-space character. That is what is causing the parsing error.

Steps to test
Install the thin-edge from below link.
https://github.com/thin-edge/thin-edge.io/actions/runs/3710046820
sudo tedge connect c8y
publish an alarm as below
sudo tedge mq tt pub 'tedge/alarms/critical/temperature_high'  '{     "message": "Temperature is very high",     "time": "2021-01-01T05:30:45+00:00" }'  -q 2 -r
Get the log error message as below
journalctl -u tedge-mapper-c8y.service -n 100 --no-pager | grep ERROR
Observe an error message as below
ERROR tedge-mapper-c8y:messages{ops_dir=Some("/etc/tedge/operations/c8y")}: tedge_mapper::core::converter: Mapping error: Parsing of alarm message received on topic: tedge/alarms/critical/temperature_high failed due to error: trailing characters at line 4 column 2. Snipped payload: {     "message": "Temperature is very high",

Checked and not reproducable, needs to be verified on Yocto still

I will close the ticket (in preparation for a release). If it fails on yocto (though that would be very surprising), then we can open up a new ticket.


Aligned the name of the folders to the name of the devices and add README

After merging #3, I realized there was a mismatch with the use of "S". With this PR I aligned the name of the folders and the CMake variables to the name used in the configuration file to run the corresponding device.
I also added a basic README

After merging this, when updating the setups, we probably need to turn on again the corresponding options, since they changed name

Thanks @mebbaid, merging


Detox does not load Profiler.framework properly, since it's encrypted

🤦♂
Since Detox Instruments 1.10.10266, the included Profiler.framework is encrypted in order to obfuscate its existence and pass Apple notarization.
The current logic in Detox tests is to test if the Profiler framework is loaded by the user, and if not, load it manually:
https://github.com/wix/Detox/blob/3557263d0e6e8329382118e155c9a16ae1bcb0a6/detox/ios/Detox/DetoxInstrumentsManager.m#L76
This is broken now, since the framework is encrypted.
Special care needs to put in place for parallel test support (many processes accessing the same framework).

Fixed in https://github.com/wix/Detox/commit/9b2b60eea5a3b2ecee5c59e29618dbbaf09d7cc1.


[PE-D][Tester C] fish sort by/s does not work

tempSpeciesA Dory is below tempSpeciesB Marlin after fish sort by/s as shown above.

Labels: type.FunctionalityBug severity.High
original: cjyothika/ped#11

This is not an functionality bug. Tester has mixed up name and species of fishes.
Perhaps species is now not as prominent, but Dory's species is Tetra, whilst Marlin's species is Parrot Fish. Correctly, Dory is sorted after Marlin.


This all of a sudden stopped working for me

I've grown quite fond of using Ctrl + Alt + T to immediately run the test function I'm working on or the whole file, right within my development environment. I can tell you that my "T" key was wearing down from all the use it was getting.
This worked great all the way through yesterday evening - September 10.
This morning, Ctrl+Alt+T opens the command drop-down list and asks me to run my test class. If I hit Enter or click it, nothing happens.

This is the same behavior as if I hit Ctrl+Shift+P, then go to PHPUnit Test. It simply won't run tests within the editor any more. :(
I've tried reinstalling the package and restarting VSCode to no avail.
Any advice would be appreciated! Thanks!

Hi, thanks for reporting this. The problem is actually that the output channel isn't shown by default when a test is run.
Make sure you select phpunit as the output channel.

It should show by default though. I will do a fix for this and publish to the marketplace!
Regarding why you get the quick pick window instead of running the whole class is how I updated it to be.
Changelog
You have to have the cursor directly on a function or class to instantly run it. Otherwise the quick pick window is shown. Would you rather never have the quick pick window and just run the whole class? Please try it out this way I think it is better. Otherwise I would consider a configuration flag to allow it to work like before.

Thanks for the quick response!
With phpunit selected as the output channel, I can see that it really does test. I just wasn't seeing it before because the output channel got changed somehow.
However, even with the cursor on a function name (or the entire function name selected) and phpunit selected as the output channel, it will only run the full-class test. It will never run the single-function test (or I can't figure out how to make it).
I really liked the way it behaved before. It was perfectly predictable and took only a quick single key combination to run exactly the test I wanted. No extra steps or keystrokes.
I'm good with learning behavior and patterns to make an editor do what I want with fewer keystrokes and less thinking and looking. I think most developers are.
Thanks again for a great add-on! (It was actually one of the very large drivers in my decision to switch from Atom to VSCode.)

I pushed an update to show the output channel on test run. I noticed though that there is some bug in there. It doesn't always happen but sometimes the function or class runs instantly if the cursor is on it and sometimes not. Will have to fix it and spam ppl to update again =(
I guess I should add a config setting to make it never show the quick pick window just like before.
Thanks, that is really cool to hear!

Yes, please! The option to make it work like previous would be awesome! Thanks!
Don't sweat the update spam. I think most people run enough add-ons that we are prompted to update several times each week anyway. I know I am! :)

Pushed another update. There is now a flag to run the whole class test instead of showing the quick pick window like before preferRunClassTestOverQuickPickWindow (default: false). Change this to true and it will work like before.

The option for running the class works great, thanks!
But it still doesn't auto-run only the function for me if I have a cursor in its name. :(
Is there something I can do to help debug why?

Hmm, ok. I'm on windows 10 and it's working for me. Are you on a mac? I put the cursor in the function name just like before:
public function testSomethingToTry() cursor somewhere on the function name.
What is happening for you? Is it running the whole class then? Could you paste the code snippet or function that you are testing and I can see if there's something with that.
For you to manually debug you'd need to clone the repo and do an npm install. Then it should be debuggable I think.
Thanks for your help, sorry for the trouble.

I'm on Windows 10. VSCode 64-bit.
Reproduction steps:

Create any type of test case, basic simplistic or otherwise. Let's call it this:

<?php

namespace Tests\Unit;

use Tests\TestCase;

class BasicTest extends TestCase
{
    /** @test */
    public function basic_test_one()
    {
        $this->assertTrue(true);
    }

    /** @test */
    public function basic_test_two()
    {
        $this->assertTrue(false);
    }
}

Set the cursor in the name of either test function.

Invoke the hot key I've assigned to run test (Ctrl+Alt+T).

Result (truncated):

...
FAILURES!
Tests: 2, Assertions: 2, Failures: 1.

Notice that it ran two tests, so it ran the whole class, not just the one function I had the cursor inside of.
Same result if I invoke the command from the command menu.
And it's no trouble. I can work around it by running a single function test from a command line. Inside the editor just makes it more convenient, which is why I love this add-on. Just need to figure out why you and I are getting different behavior on the same platform.

Ah I see. I thought functions had to start with test*. There was a PR that expects function names starting with that. Will have to make it not rely on that. Thanks.

Confirmed. Works as expected when "test" is the first 4 characters of the function name.
Must have been a recent PR? Because it worked up until this morning... :(

It should work now. Could you install the phpunit-2.1.1.vsix manually and check?

Don't want to spam even more. Thanks a lot!

Awesome! That worked!
And sorry for the delay. Long drive home.

No problem. Pushed the new version to the marketplace, thanks for your help.


Potentional bug or is it possible? (identical alphas outcome)

Hello, in attached files, I got two rows with identical archetype alpha equal to 1, it is possible (row 8 and 52 in results.csv)??
import pandas as pd
import archetypes as arch

data = pd.read_csv("input.csv", header=None).to_numpy()

n_archetypes = 4
n_init = 10
max_iter = 10000
aa = arch.AA(n_archetypes=n_archetypes, n_init=n_init, max_iter=max_iter)
aa_trans = aa.fit_transform(data)
pd.DataFrame(aa_trans).to_csv("results.csv")

Thanks!
input.csv
results.csv

It is possible :) Two observations with the same aa_trans (alphas) means that in the "archetypal space" these two observations are equal to each other.
In addition, the alphas of these two observations [i.e. (0, 0, 1, 0)] are saying to you that these observations are equal to the archetype 3. Remember that you can get the archetypes with aa.archetypes_.
You can also use arch.simplex() to plot the alphas of your data to interpret them. See https://archetypes.readthedocs.io/en/latest/getting_started/examples/aa.html

So it is possible to have two guys with same alpha values [0, 0, 1, 0] but different input variables? I will try to test your package with package from R to see, if the numbers are the same or not.
Thank you!

Yes, it is. By its definition (see the original paper), alphas @ archetypes will be an apriximation of your dataset, so you lose information in the transformation.
In your case, the projection into the hull space determined by the archetypes is equal for both observations. If you are interested in this topic, I can pass you some papers to read.
Anyway, as it is a numerical algorithm, it is very likely that the results will not be the same on R (but let me know the results)
Aleix :)


No cycle detection = crash

Taking the output of a node and feeding it back into the input of a previous portion of the graph causes recursion crash.
eg:
Create Node A = 5
Create Node B = 5
Create Node Add (A+B), connect A and B, output is 10.
Create Node Add (A+B), connect previous add result as both A and B.
Disconnect node A from the first add.
Connect the output of the 2nd add node as input to the first add node.
Crash because dataUpdated() propagating through the graph where the output comes back as an input, causing stack overflow due to infinite recursion.

Oops, this is a duplicate of #198.
https://github.com/paceholder/nodeeditor/issues/198


⚠ Fortnite has degraded performance

In 36d2379, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1574 ms

Resolved: Fortnite performance has improved in 705d8d0.


EFDE: Migrate docker-compose (v1) to docker compose (v2)

Resumen

The docker compose (with a space) is a newer project to migrate compose to Go with the rest of the docker project. This is the v2 branch of the docker/compose repo. It's been first introduced to Docker Desktop users, so docker users on Linux didn't see the command. In addition to migrating to Go, it uses the compose-spec, and part of the rewrite may result in behavior differences.
The original python project, called docker-compose, aka v1 of docker/compose repo, has now been deprecated and development has moved over to v2. To install the v2 docker compose as a CLI plugin on Linux, supported distribution can now install the docker-compose-plugin package. E.g. on debian, I run apt-get install docker-compose-plugin

More info
https://docs.docker.com/compose/reference/
https://docs.docker.com/compose/install/linux/
https://stackoverflow.com/questions/66514436/difference-between-docker-compose-and-docker-compose

Release 1.2.0


Allow build-magic to be installed with homebrew

Is your feature request related to a problem? Please describe.
Homebrew is a popular package manager on MacOS and would make for a great way to install build-magic as opposed to installing via python and virtual environments.
Describe the solution you'd like
Create a homebrew formula for build-magic so that a user only needs to add the tap and install build-magic.

This has been released for 0.4.0.


Support tests for macOS targets

One of the documented limitations of macOS targets is that AppCenter doesn't support testing. I could really use this - could you consider adding it, please?

Hi @tonyarnold,
Can you elaborate on why the tests in our Build system isn't enough?
https://docs.microsoft.com/en-gb/appcenter/build/macos/first-build#35-tests

It's right there in your documentation:

App Center does not support launch tests for Mac builds.

That's… pretty much all testing on macOS, isn't it?

It also appears that iOS targets get a dedicated Test tab in the AppCenter UI. That doesn't seem to appear for macOS targets.
I'm looking for parity of features, and support for all testing approaches in a macOS-based project.

I understand. The Test tab for iOS and Android is for UI testing on real devices, and no other operating systems are supported. The launch test is a UI test that runs on a random device and asserts if the app can start.
But running unit tests with XCTest in Build is still a possibility, for MacOS.
If you have a use-case for cloud UI testing for MacOS I would love to hear about it.

@Oddj0b If you have a use-case for cloud UI testing for MacOS I would love to hear about it.

This question is strange. The use case is the same for Mac OS and Windows as it is for iOS and Android. It makes sure that app functions work automatically which makes releases a lot safer. We pay for App Center UI testing, for a Xamain Forms app, but only supporting 2 of the 4 OSes we deploy to makes a limited and IMO overpriced service.


[backport] Document CHAINERX_ENABLE_BLAS environment variable

Backport of #7098

[automatic post] Jenkins, test this please.

Jenkins CI test (for commit d56903925ff87c449b534235a85c97384dff9afc, target branch v6) failed with status FAILURE.

LGTM!


Normative: add option to omit padding

Fixes https://github.com/tc39/proposal-arraybuffer-base64/issues/59.

I support this addition.

This got consensus; landing, but I do still need to update tests.


Add DataflowStartYamlJobOperator

Add DataflowStartYamlJobOperator as a replacement option for DataflowStartSqlJobOperator.

^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@MaksYermak , hi
Please take a look


interval/README.md issue

Hi, awesome work. I was just a bit confused about the interval/README.md file until I realized that the contents under a headline belongs to the next headline. Something seems to be shifted: e.g. under Interval.num(interval) ⇒ String you find the explanation of Interval.name(ivl).

I think this brings up something I thought of the other day: is there even a need for multiple points of entry for the API documentation? One would expect the live API docs site to be the central (and hopefully only) authority on it but as we can see from this issue, people are finding inconsistencies and errors and it's not made clear where to go to fix this problem. I can't even find the documentation for the Interval module in the live site, for some reason.

 Currently, there are too many documentation resources and Invertal module is not present (I don't know why)... Do you have any suggestions? Also PR are welcomed...

My suggestion to fix this immediate issue would be to use only the central tonal module to generate documentation and have the live API site always reflect the latest version. This way you could get rid of the docs script in each of the packages that generates the respective module's docs to its README file.
I think it would also be worth merging the extensions with all of the packages. I don't know what the decision behind splitting them up was initially but I think it makes the whole process simpler from the end-user perspective to have everything loaded up (and exported from the Tonal module) on install.
I would like to contribute to this library, and I forked it a while ago but I have no experience with Lerna or Typescript (or really any project of this scale) so I've been hesitant to make any big changes.

Hi @glhrmv!
Thanks a lot for the feedback. I answer inline:

My suggestion to fix this immediate issue would be to use only the central tonal module to generate documentation and have the live API site always reflect the latest version. This way you could get rid of the docs script in each of the packages that generates the respective module's docs to its README file.

I've recently removed the docs folder. And yes, I'd be really nice that docs always reflect the latest version, but I didn't find a way to automate this.
The "source of truth" is the source files itself, where all jsdoc is written. Currently, there are two versions: the README.md and the official docs: http://danigb.github.io/tonal/. I don't know why Interval is not listed there (I'll take a look to that issue)

I think it would also be worth merging the extensions with all of the packages.

Agree. On my TODO list.

I would like to contribute to this library, and I forked it a while ago but I have no experience with Lerna or Typescript (or really any project of this scale) so I've been hesitant to make any big changes.

Yes, I'm not happy with the infrastructure. Too complex for this kind of project... But I don't know how to simplify it without losing the ability to have single packages for each module.

Not sure how it's been already 3 days since I commented that, time is wild.
I think the main issue with keeping docs separate is it might hinder working with more than one Tonal module. With one source of reference in the same website, a developer using tonal can just always go back to it for all of their Tonal needs. If they are split up (i.e., if the official docs site did not exist), developers would need to keep track of all of the repos and READMEs for all of the modules they need, and I can see that quickly becoming frustrating.
I don't know how you're currently updating the contents of the site, but from what you said I'm assuming Lerna does not have a way to run a script that goes through all subprojects in your umbrella? That's a pretty big issue, if so. It seems like a common use case.

Now documentation is handwritten. Hope it's everything clear now.


[e2e]: nodejs workflow_dispatch main default slsa3

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/7335616740
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.nodejs.workflow_dispatch.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.nodejs.workflow_dispatch.main.default.slsa3.yml
Trigger: workflow_dispatch
Branch: main
Date: Wed Dec 27 06:09:59 UTC 2023

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/7344967181
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.nodejs.workflow_dispatch.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.nodejs.workflow_dispatch.main.default.slsa3.yml
Trigger: workflow_dispatch
Branch: main
Date: Thu Dec 28 06:12:12 UTC 2023
Tests are passing now. Closing this issue.


Refactor: clean persistence tests to avoid duplicate testing

Resolves #198
After introducing dumps and loads, we ran all persistence tests twice, once with those functions and once with dump and load. This is inefficient, since they're basically testing the same thing but running 400+ tests twice is costly. With this PR, we only use the more efficient dumps and loads. On top of that, there is one test that very specifically tests dump  and load.

@skops-dev/maintainers ready for review


Review loss of axioms

SubClassOf(http://purl.obolibrary.org/obo/CL_0000108 http://purl.obolibrary.org/obo/CL_0000381)
SubClassOf(http://purl.obolibrary.org/obo/CL_0000125 ObjectSomeValuesFrom(http://purl.obolibrary.org/obo/RO_0002202 http://purl.obolibrary.org/obo/CL_0000030))
SubClassOf(http://purl.obolibrary.org/obo/CL_0008016 ObjectSomeValuesFrom(http://purl.obolibrary.org/obo/RO_0002202 http://purl.obolibrary.org/obo/CL_0008012))

(Redundancy stripping?)

@shawntanzk @gouttegd  I'm reviewing a previous note by @matentzn investigating loss of axioms. The top one is about neurons:

SubClassOf(http://purl.obolibrary.org/obo/CL_0000108 http://purl.obolibrary.org/obo/CL_0000381)

Should 'cholinergic neuron' be a subclass of 'neurosecretory neuron'? The latter is asserted as being an efferent neuron: is that correct across taxa? ('neurosecretory neuron' has an FBbt xref.) Are all cholinergic neurons efferent? I'm not convinced that we should add that subclass.

@dosumis
The original request in this ticket was a note from Nico to review loss of 3 axioms. The last one pertains to 2 terms that you created. The lost axiom is
'activated skeletal muscle satellite cell' develops from 'quiescent skeletal muscle satellite cell'
Their common parent 'skeletal muscle satellite cell' is textually defined as "...These cells are mostly quiescent, but upon activation they divide to produce cells that generate new muscle fibers." and 'activated skeletal muscle satellite cell''s def says "A skeletal muscle cell that has become mitotically active - typically following muscle damage.". Therefore, I believe that the lack/loss of that axiom is correct. Could you confirm please?

SubClassOf(http://purl.obolibrary.org/obo/CL_0000108 http://purl.obolibrary.org/obo/CL_0000381)

I think this might come down to if acetylcholine is secreted as a hormone by cholinergic neurons. I had to google this cause I forgot my undergrad on which neurotransmitter is a hormone too >.< and like everything, the answer isn't super simple. I THINK that the removal of this axiom is right as ACh from the neuronal system doesn't pass the blood brain barrier (from wiki), and this paper where ACh is noted as a hormone (https://academic.oup.com/endo/article/145/5/2498/2878537) calls it nonneuronal cholinergic signaling.
tl;dr: removal of this axiom is probably right.

glial cell is taxon-agnostic, while glioblast has subclasses specific to invertebrates vs. vertebrates. Is it true/known for all taxa that glial cells develop from glioblasts? Thanks.

Isnt the definition of glioblast basically pre-glial?
Taking for fbbt: "Cell that divides to give rise to glial cells."
Don't see why it should be species specific.
The axiom in question is in CL atm and I think it should be there, no changes are needed I think.

Is it true/known for all taxa that glial cells develop from glioblasts?

I don‘t think we can positively affirm that. Microglia at least certainly don’t seem to derive from glioblasts (see Ginoux & Prinz, 2015).

Microglia at least certainly don’t seem to derive from glioblasts (see Ginoux & Prinz, 2015).

Ah, I think microglial needs a relooking at then.
Currently microglial has the subclass axiom
'develops from' some 'oligodendrocyte precursor cell'
which seems wrong
glial cell therefore also cannot have the axiom 'develops from' some glioblast - this needs to be pushed down to all child that actually do.
I'll make a ticket specifically for this. If you are experienced enough to do edits on this without much research @gouttegd I would appreciate it, but I do get you're quite busy too, so happy to do it too, just might take a bit of time for me to get to it.


Importing the old repo into this one

@jrgns can you add tests? Even if they are mocks should be ok

I've added some boilerplate for tests and a single test to check that the register method works.

@jrgns thanks. I merged and bumped version to 1.1.0. Can you please add<EMAIL_ADDRESS>to RubyGems.org owners so we can push this?

@suyograo Done
Awesome, thanx!


Fail to parse multi-line (g)string with some escape character

'''\
'''

"""\
"""

Fixed by: https://github.com/jespersm/groovy/commit/902bbb66676a22a79d2c88d49186f5322b30c56b


Indentation consistency

I'm seeing this style of indentation in various places, with method calls indented by 2 spaces. Is this what we want? My IDE is set up for 4 spaces so it's a pain having different indentations - I'm thinking it would be a good idea to agree on a style.

Should be 4 spaces for JS - must have been changed by accident in a sweeping change which we missed in review.

Interesting that ESLint isn't picking this up. Any ideas?
https://github.com/ScottLogic/d3fc-showcase/blob/a2bca708b5a8aeb2172b6e521a8dbe1eba20ad44/.eslintrc#L113

I looks like if the line begins with a dot that eslint doesn't mind indents that aren't 4 spaces.
It seems like it enforces 4 spaces from that location onwards though.
I'll have a look and see if there's a way to enforce 4 spaces on the dot lines as well

We can blame #453 for the changes, sorry!
@rjmcneill, you're right - The ESLint rule for indent 'validates a specific tab width for your code in block statements'. It's validating the indent level of the line that starts a statement in a block, but ignores the indent level of subsequent lines when the statement spans multiple lines. So this would be valid:
var foo = function() {
    return 1 +
                                              2;
};

I can't find any ESLint option or rule to do what we want.
Maybe we should submit a change request?

Actually it's already a known issue https://github.com/eslint/eslint/issues/1801

Doesn't look like it's massively active at the minute :disappointed:


Don't override a dirty flag from true to false

Fix from @Kubuxu

Can someone try creating a test for the dirty flag being overwritten.

Can someone try creating a test for the dirty flag being overwritten.

Most likely entry point is SetIfAbsent.

Most likely entry point is SetIfAbsent.


*: update api proto

Update proto to reflect two changes:

add lease field to kv: fix https://github.com/coreos/etcd/issues/3919

do not allow modifying a key several times in one txn

After this pull request, we also need to clean up api document, add more examples, regenerate protobuf files.

/cc @heyitsanthony @gyuho

API LGTM as we discussed at the meeting. Are you going to change all Go code in the same PR as well?

@gyuho Yes. In next pull request probably. There might be other places I want to change while I clean doc this afternoon.

lgtm, rmw-free leases can be added later if needed


Spurious argument parsing in gfpgan_tools.py

I'm writing some code that uses ldm.generate and it's working fine for generating images. I wanted to add upscaler support to my tool, with the new release of this repo.
I added upscale and gfpgan_strength arguments to my prompt2image() call and now I get a usage error after the image has been generated:
/Users/administrator/hacking/stable-diffusion/ldm/modules/embedding_manager.py:153: UserWarning: The operator 'aten::nonzero' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications. (Triggered internally at  /Users/runner/work/_temp/anaconda/conda-bld/pytorch_1659484612588/work/aten/src/ATen/mps/MPSFallback.mm:11.)
  placeholder_idx = torch.where(
Generating:   0%|                                                                                | 0/1 [00:00<?, ?it/s]Global seed set to 42
PLMS Sampler: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [02:33<00:00,  3.08s/it]
Generating: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [02:39<00:00, 159.79s/it]
usage: dreambot_backend.py [-h] [--laion400m] [--from_file INFILE] [-n ITERATIONS] [-F] [-g] [-A SAMPLER_NAME] [--outdir OUTDIR] [--seamless] [--embedding_path EMBEDDING_PATH] [--prompt_as_dir]
                           [--gfpgan_bg_upsampler GFPGAN_BG_UPSAMPLER] [--gfpgan_bg_tile GFPGAN_BG_TILE] [--gfpgan_model_path GFPGAN_MODEL_PATH] [--gfpgan_dir GFPGAN_DIR] [--web] [--host HOST]
                           [--port PORT] [--weights WEIGHTS] [--device DEVICE] [--model MODEL] [--config CONFIG]

This is coming from here because it's unconditionally parsing command line arguments even though it's been called as part of ldm.generate's API.
Unless I'm missing something, this makes it impossible to use the upscaling feature outside of dream.py.

Yes, you are so right. I was looking at this just this morning and thinking that gfpgan's way of getting the options could be a problem down the road. And bingo!
I'll get this fixed sometime tomorrow if @blessedcoolant doesn't beat me to it.

Seems like that file was changed since my implementation. I had a look at it just now and it is calling the boot arguments from the arg parser which makes sense because they are never passed down to ldm.generate. All that ldm.generate controls is the activation and strength of the restoration. Nothing else.
And that makes sense too because you are basically initializing the dir and path at boot -- which is when you want it to happen. There's no reason to pass that info down to Generate unless you are planning on changing these paths mid prompt usage which is almost never the case.
I would like to take a look at your dreambot_backend.py file implementation first and see where exactly things are going wrong before I suggest changes to this.

@blessedcoolant sure, the relevant portion is here.
tl;dr that function is running on its own thread and it just waits for new incoming prompts to appear on a queue, parses them for arguments, generates the requested image and puts the result on a queue.
FWIW I would think that because Generate is responsible for calling into gfpgan, it should take the 4 extra arguments required. I'd be happy to work up a PR for that, but I figured it was worth starting with an Issue first :)

Yes. Unlike the Dream Script where dream.py processes the boot, when you directly load the API, there is nothing that is initializing GFGPAN. The same would be the case for any boot argument that is not passed on to Generate. Feel like we need to streamline this a bit more so the API is fully independent of the Dream script.
Feel free to go ahead and make the PR. I'll have a look when it's up.

If you've already got something, go ahead. Right now all I have is a really ugly bodge job I did locally to get it working at all, but it's using awful global variables :)

Yeah. I like the idea. Like you said, we can't keep bloating up generate or prompt2png's argument list. Maybe the ideal choice is to do a subclass. Not just for this but for almost any other functionality that is NOT dependent on the SD image generation code. This way, anyone who wants to create their own script on top of the API will be able to load and unload modules as per will.
My current fix was just doing to be adding them as args to the generate class which solves the issue but I am a not a fan of the idea because of argument overload in the long run.

p.process(img_path)

Just curious, and obviously that was just a quick example of how the post processing could be handled, but would this actually be passing around Image objects rather than files on disk?

@cmsj #547 -- Something like this should solve your problem.

Nice! Thanks @blessedcoolant

The root issue was resolved by the major Restoration class refactor.


add jupyter lab as dependency ?

If providing notebooks in the repository in future, should we add jupyter lab as dependency for install ?

Absolutely


Support 'to not contain' tests

It would be nice if it was possible to write inverse expectations.
For example,
expect(renderer, 'to not contain', <UnwantedNode/>)

Yes, it's on the todo list - should be really easy too.
I think the unexpected standard is the not at the start:
expect(renderer, 'not to contain', <UnwantedNode />);

Great, thanks Dave

+1 for this :+1:

Just to say, this is coming. I'm almost ready with a completely new version. More news over the next day or 3 :-)

@bruderstein any news on this?

This is supported in unexpected-react.
I'll be deprecating this library in favour of unexpected-react shortly. Unexpected-react supports  better output, and can optionally test against the virtual DOM, not just the shallow renderer (although it works with the shallow renderer just as well.  It also allows inline assertions (using expect.it), so you can validate a prop value matches a regular expression, for example.
The only reason to still use unexpected-react-shallow, is that it's still faster. I'm basically finished fixing that, so that unexpected-react will be almost as fast as unexpected-react-shallow (although it will never be 100% as fast, due to the extra features, like wrapper detection).
Once the new version of unexpected-react is released, I'll deprecate this library.


Appointments with same start and end time spanning two days

As above, appointments with same start and end time (i.e. 0 minute duration reminders) span across two days when rendered in the calendar.  It appears that Calendar EXT3 (or the main calendar module?) are mis-rendering the events.

Thanks. I’ll look inside.

Hmmmm... weird. In my test, there is no problem at all.

I have no outlook calendar so I couldn't test it. But I cannot guess without the real ics.
Could you share me the ics URL or downloaded ics file<EMAIL_ADDRESS>


No "number" before References section in HTML

Hi. I managed to generate the per-chapter references but the header will not follow the proper numbering:

Here is the relevant part of the config file:
filters:
  - section-bibliographies
bibliography: references.bib
reference-section-title: References

format:
  html:
    toc: true
    toc-expand: 1
    toc-depth: 4
  pdf:
    documentclass: scrreprt

crossref:
  chapters: true

I'm trying to tinker with the lua code to see if I can debug this

One way to (temporarily) fix this would be to run another Lua filter after this one:
function Div (div)
  div.classes = div.classes:filter(function (cls) return cls == 'unnumbered' end)
  return div
end

This should drop the unnumbered class from all headings.
We could make this configurable and include it in this filter.

The alternative solution is to manually add a heading at the end of each section. The filter will not add a new bibliography heading if the last element in a section is a heading. E.g.:
## Summary

Text goes here.

### References

The alternative solution is to manually add a heading at the end of each section. The filter will not add a new bibliography heading if the last element in a section is a heading. E.g.:
## Summary

Text goes here.

### References

This worked thanks!


[Functions] Update zipDeploy to use Run From Package

Plugin name and version
Functions
Please see https://github.com/Azure/app-service-announcements/issues/84 and update zipDeploy to use "Run from Package"
This is the recommended approach for deploying.

cc : @davidebbo
@jdneo - can you please look into this?

Other relevant post: https://github.com/Azure/app-service-announcements/issues/110

Ping!


[bug] I cannot generate changelog due to  NoneType object has no attribute group Error

Describe the bug
I was running changelog event under github actions. But getting below error as response . That's why I cannot generate changelog .
=========Here is the runner log============
Collecting charset-normalizer<3,>=2   Downloading charset_normalizer-2.1.0-py3-none-any.whl (39 kB) Collecting certifi>=2017.4.17   Downloading certifi-2022.6.15-py3-none-any.whl (1[60](https://github.com/arif98741/decathlon-project/runs/7529632918?check_suite_focus=true#step:4:61) kB)      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 160.2/160.2 kB 362.9 MB/s eta 0:00:00 Collecting urllib3<1.27,>=1.21.1   Downloading urllib3-1.26.11-py2.py3-none-any.whl (139 kB)      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 139.9/139.9 kB 343.9 MB/s eta 0:00:00 Collecting idna<4,>=2.5   Downloading idna-3.3-py3-none-any.whl ([61](https://github.com/arif98741/decathlon-project/runs/7529632918?check_suite_focus=true#step:4:62) kB)      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.2/61.2 kB 311.8 MB/s eta 0:00:00 Collecting wrapt<2,>=1.10   Downloading wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_[64](https://github.com/arif98741/decathlon-project/runs/7529632918?check_suite_focus=true#step:4:65).manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (77 kB)      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 77.9/77.9 kB 309.5 MB/s eta 0:00:00 Collecting pycparser   Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 118.7/118.7 kB 337.2 MB/s eta 0:00:00 Installing collected packages: wrapt, urllib3, tqdm, PyYAML, pyjwt, pycparser, idna, charset-normalizer, certifi, requests, deprecated, cffi, pynacl, PyGithub WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv Successfully installed PyGithub-1.55 PyYAML-6.0 certifi-2022.6.15 cffi-1.15.1 charset-normalizer-2.1.0 deprecated-1.2.13 idna-3.3 pycparser-2.21 pyjwt-2.4.0 pynacl-1.5.0 requests-2.28.1 tqdm-4.64.0 urllib3-1.26.11 wrapt-1.14.1 Traceback (most recent call last):   File "/main.py", line [65](https://github.com/arif98741/decathlon-project/runs/7529632918?check_suite_focus=true#step:4:66)3, in <module>     main()   File "/main.py", line 643, in main     changelog.get_data()   File "/main.py", line 1[75](https://github.com/arif98741/decathlon-project/runs/7529632918?check_suite_focus=true#step:4:76), in get_data     self.get_exist_changelog()   File "/main.py", line 2[82](https://github.com/arif98741/decathlon-project/runs/7529632918?check_suite_focus=true#step:4:83), in get_exist_changelog     self.analyze_changelog()   File "/main.py", line 302, in analyze_changelog     release_tag = re.search(r'\[.*?\]', release_body).group()[1:-1] AttributeError: 'NoneType' object has no attribute 'group'
To Reproduce

NOTE:Self-contained, minimal reproducing samples are extremely helpful and will expedite addressing your issue

Steps to reproduce the behavior:

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

Expected behavior
I want it be done without any issue. I previously generated changelog without any issue at all. But today I am getting . This is pretty surprising.
Screenshots

Environment

Device: [e.g. HP-Laptop]
OS: [e.g. Win 10]
Browser [e.g. chrome, firefox]
Version [e.g. 103]

Additional context

@arif98741 Thank you for reporting the bug.
I probably know what is the problem. This error happens when the GA tries to analyze your existing changelog which is the new feature I added in recent 2 releases. Is it convenient for you to add the link to the repo or simply paste the content of your existing changelog.md file so that I can be easier to figure out what causes the problem?

I make a hotfix in new release v1.2.2 for bypassing the bug which might be helpful. If this works, I wonder if you can paste the log of the GA and your previous CHANGELOG?

ok. I will paste that worked in paste

This is working GA for generating changelog using this @BobAnkh/auto-generate-changelog
``/usr/bin/docker run --name f1554fa68151ee3b34ed6a36ba31c342c9f99_fe475b --label 6f1554 --workdir /github/workspace --rm -e INPUT_REPO_NAME -e INPUT_ACCESS_TOKEN -e INPUT_PATH -e INPUT_COMMIT_MESSAGE -e INPUT_TYPE -e INPUT_BRANCH -e INPUT_PULL_REQUEST -e INPUT_COMMITTER -e INPUT_DEFAULT_SCOPE -e INPUT_SUPPRESS_UNSCOPED -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_RUN_ATTEMPT -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_REF_NAME -e GITHUB_REF_PROTECTED -e GITHUB_REF_TYPE -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e GITHUB_STEP_SUMMARY -e RUNNER_OS -e RUNNER_ARCH -e RUNNER_NAME -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/takecareweb/takecareweb":"/github/workspace" 6f1554:fa68151ee3b34ed6a36ba31c342c9f99
WARNING: The directory '/github/home/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag.
Requirement already satisfied: pip in /usr/local/lib/python3.9/site-packages (21.2.4)
Collecting pip
Downloading pip-22.1.2-py3-none-any.whl (2.1 MB)
Requirement already satisfied: setuptools in /usr/local/lib/python3.9/site-packages (57.5.0)
Collecting setuptools
Downloading setuptools-62.3.2-py3-none-any.whl (1.2 MB)
Requirement already satisfied: wheel in /usr/local/lib/python3.9/site-packages (0.37.0)
Collecting wheel
Downloading wheel-0.37.1-py2.py3-none-any.whl (35 kB)
Installing collected packages: wheel, setuptools, pip
Attempting uninstall: wheel
Found existing installation: wheel 0.37.0
Uninstalling wheel-0.37.0:
Successfully uninstalled wheel-0.37.0
Attempting uninstall: setuptools
Found existing installation: setuptools 57.5.0
Uninstalling setuptools-57.5.0:
Successfully uninstalled setuptools-57.5.0
Attempting uninstall: pip
Found existing installation: pip 21.2.4
Uninstalling pip-21.2.4:
Successfully uninstalled pip-21.2.4
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Successfully installed pip-22.1.2 setuptools-62.3.2 wheel-0.37.1
WARNING: The directory '/github/home/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag.
 It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Successfully installed PyGithub-1.55 PyYAML-6.0 certifi-2<IP_ADDRESS> cffi-1.15.0 charset-normalizer-2.0.12 deprecated-1.2.13 idna-3.3 pycparser-2.21 pyjwt-2.4.0 pynacl-1.5.0 requests-2.27.1 tqdm-4.64.0 urllib3-1.26.9 wrapt-1.14.1
Commits progress:   0%|          | 0/322 [00:00<?, ?it/s]
Commits progress:   0%|          | 1/322 [00:00<01:27,  3.68it/s]
Commits progress:   1%|          | 2/322 [00:00<01:00,  5.28it/s]
Commits progress:   1%|          | 3/322 [00:00<00:50,  6.26it/s]
Commits progress:   1%|          | 4/322 [00:00<00:47,  6.71it/s]
Commits progress:   2%|▏         | 5/322 [00:00<00:48,  6.52it/s]
Commits progress:   2%|▏         | 6/322 [00:00<00:49,  6.42it/s]
Commits progress:   2%|▏         | 7/322 [00:01<00:45,  6.92it/s]
Commits progress:   2%|▏         | 8/322 [00:01<00:45,  6.92it/s]
Commits progress:   3%|▎         | 9/322 [00:01<00:46,  6.78it/s]
Commits progress:   3%|▎         | 10/322 [00:01<00:46,  6.67it/s]
Commits progress:   3%|▎         | 11/322 [00:01<00:46,  6.73it/s]
Commits progress:   4%|▎         | 12/322 [00:01<00:43,  7.08it/s]
Commits progress:   4%|▍         | 13/322 [00:02<00:46,  6.62it/s]
Commits progress:   4%|▍         | 14/322 [00:02<00:43,  7.15it/s]
Commits progress:   5%|▍         | 15/322 [00:02<00:41,  7.42it/s]
Commits progress:   5%|▍         | 16/322 [00:02<00:41,  7.46it/s]
Commits progress:   5%|▌         | 17/322 [00:02<00:44,  6.89it/s]
Commits progress:   6%|▌         | 18/322 [00:02<00:42,  7.17it/s]
Commits progress:   6%|▌         | 19/322 [00:02<00:42,  7.17it/s]
Commits progress:   6%|▌         | 20/322 [00:02<00:43,  6.99it/s]
Commits progress:   7%|▋         | 21/322 [00:03<00:41,  7.30it/s]
Commits progress:   7%|▋         | 22/322 [00:03<00:39,  7.55it/s]
Commits progress:   7%|▋         | 23/322 [00:03<00:53,  5.61it/s]
Commits progress:   7%|▋         | 24/322 [00:03<00:51,  5.79it/s]
Commits progress:   8%|▊         | 25/322 [00:03<00:49,  6.05it/s]
Commits progress:   8%|▊         | 26/322 [00:03<00:45,  6.52it/s]
Commits progress:   8%|▊         | 27/322 [00:04<00:41,  7.08it/s]
Commits progress:   9%|▊         | 28/322 [00:04<00:39,  7.38it/s]
Commits progress:   9%|▉         | 29/322 [00:04<00:41,  6.99it/s]
Commits progress:   9%|▉         | 30/322 [00:04<00:39,  7.32it/s]
Commits progress:  10%|▉         | 31/322 [00:04<00:37,  7.70it/s]
Commits progress:  10%|▉         | 32/322 [00:04<00:40,  7.17it/s]
Commits progress:  10%|█         | 33/322 [00:04<00:38,  7.55it/s]
Commits progress:  11%|█         | 34/322 [00:04<00:39,  7.33it/s]
Commits progress:  11%|█         | 35/322 [00:05<00:37,  7.56it/s]
Commits progress:  11%|█         | 36/322 [00:05<00:37,  7.56it/s]
Commits progress:  11%|█▏        | 37/322 [00:05<00:40,  7.11it/s]
Commits progress:  12%|█▏        | 38/322 [00:05<00:38,  7.37it/s]
Commits progress:  12%|█▏        | 39/322 [00:05<00:36,  7.67it/s]
Commits progress:  12%|█▏        | 40/322 [00:05<00:35,  7.87it/s]
Commits progress:  13%|█▎        | 41/322 [00:05<00:35,  7.91it/s]
Commits progress:  13%|█▎        | 42/322 [00:05<00:34,  8.15it/s]
Commits progress:  13%|█▎        | 43/322 [00:06<00:37,  7.45it/s]
Commits progress:  14%|█▎        | 44/322 [00:06<00:38,  7.25it/s]
Commits progress:  14%|█▍        | 45/322 [00:06<00:39,  7.07it/s]
Commits progress:  14%|█▍        | 46/322 [00:06<00:38,  7.09it/s]
Commits progress:  15%|█▍        | 47/322 [00:06<00:39,  7.05it/s]
Commits progress:  15%|█▍        | 48/322 [00:06<00:36,  7.44it/s]
Commits progress:  15%|█▌        | 49/322 [00:06<00:37,  7.37it/s]
Commits progress:  16%|█▌        | 50/322 [00:07<00:35,  7.57it/s]
Commits progress:  16%|█▌        | 51/322 [00:07<00:35,  7.72it/s]
Commits progress:  16%|█▌        | 52/322 [00:07<00:34,  7.80it/s]
Commits progress:  16%|█▋        | 53/322 [00:07<00:49,  5.45it/s]
Commits progress:  17%|█▋        | 54/322 [00:07<00:43,  6.11it/s]
Commits progress:  17%|█▋        | 55/322 [00:07<00:43,  6.11it/s]
Commits progress:  17%|█▋        | 56/322 [00:08<00:43,  6.15it/s]
Commits progress:  18%|█▊        | 57/322 [00:08<00:39,  6.69it/s]
Commits progress:  18%|█▊        | 58/322 [00:08<00:37,  6.96it/s]
Commits progress:  18%|█▊        | 59/322 [00:08<00:38,  6.80it/s]
Commits progress:  19%|█▊        | 60/322 [00:08<00:36,  7.19it/s]
Commits progress:  19%|█▉        | 61/322 [00:08<00:36,  7.24it/s]
Commits progress:  19%|█▉        | 62/322 [00:08<00:34,  7.51it/s]
Commits progress:  20%|█▉        | 63/322 [00:09<00:34,  7.53it/s]
Commits progress:  20%|█▉        | 64/322 [00:09<00:33,  7.73it/s]
Commits progress:  20%|██        | 65/322 [00:09<00:33,  7.70it/s]
Commits progress:  20%|██        | 66/322 [00:09<00:31,  8.05it/s]
Commits progress:  21%|██        | 67/322 [00:09<00:31,  8.14it/s]
Commits progress:  21%|██        | 68/322 [00:09<00:31,  8.15it/s]
Commits progress:  21%|██▏       | 69/322 [00:09<00:30,  8.27it/s]
Commits progress:  22%|██▏       | 70/322 [00:09<00:31,  8.11it/s]
Commits progress:  22%|██▏       | 71/322 [00:10<00:30,  8.10it/s]
Commits progress:  22%|██▏       | 72/322 [00:10<00:33,  7.41it/s]
Commits progress:  23%|██▎       | 73/322 [00:10<00:32,  7.66it/s]
Commits progress:  23%|██▎       | 74/322 [00:10<00:35,  6.94it/s]
Commits progress:  23%|██▎       | 75/322 [00:10<00:38,  6.40it/s]
Commits progress:  24%|██▎       | 76/322 [00:10<00:36,  6.71it/s]
Commits progress:  24%|██▍       | 77/322 [00:10<00:35,  6.90it/s]
Commits progress:  24%|██▍       | 78/322 [00:11<00:33,  7.28it/s]
Commits progress:  25%|██▍       | 79/322 [00:11<00:33,  7.21it/s]
Commits progress:  25%|██▍       | 80/322 [00:11<00:33,  7.16it/s]
Commits progress:  25%|██▌       | 81/322 [00:11<00:34,  6.99it/s]
Commits progress:  25%|██▌       | 82/322 [00:11<00:32,  7.33it/s]
Commits progress:  26%|██▌       | 83/322 [00:11<00:44,  5.32it/s]
Commits progress:  26%|██▌       | 84/322 [00:12<00:39,  6.07it/s]
Commits progress:  26%|██▋       | 85/322 [00:12<00:35,  6.66it/s]
Commits progress:  27%|██▋       | 86/322 [00:12<00:32,  7.20it/s]
Commits progress:  27%|██▋       | 87/322 [00:12<00:33,  7.04it/s]
Commits progress:  27%|██▋       | 88/322 [00:12<00:41,  5.65it/s]
Commits progress:  28%|██▊       | 89/322 [00:12<00:39,  5.97it/s]
Commits progress:  28%|██▊       | 90/322 [00:12<00:36,  6.30it/s]
Commits progress:  28%|██▊       | 91/322 [00:13<00:33,  6.86it/s]
Commits progress:  29%|██▊       | 92/322 [00:13<00:35,  6.48it/s]
Commits progress:  29%|██▉       | 93/322 [00:13<00:33,  6.86it/s]
Commits progress:  29%|██▉       | 94/322 [00:13<00:31,  7.32it/s]
Commits progress:  30%|██▉       | 95/322 [00:13<00:29,  7.59it/s]
Commits progress:  30%|██▉       | 96/322 [00:13<00:28,  7.92it/s]
Commits progress:  30%|███       | 97/322 [00:13<00:28,  7.80it/s]
Commits progress:  30%|███       | 98/322 [00:13<00:27,  8.12it/s]
Commits progress:  31%|███       | 99/322 [00:14<00:26,  8.35it/s]
Commits progress:  31%|███       | 100/322 [00:14<00:27,  7.97it/s]
Commits progress:  31%|███▏      | 101/322 [00:14<00:29,  7.62it/s]
Commits progress:  32%|███▏      | 102/322 [00:14<00:28,  7.70it/s]
Commits progress:  32%|███▏      | 103/322 [00:14<00:28,  7.75it/s]
Commits progress:  32%|███▏      | 104/322 [00:14<00:28,  7.72it/s]
Commits progress:  33%|███▎      | 105/322 [00:14<00:27,  7.76it/s]
Commits progress:  33%|███▎      | 106/322 [00:14<00:27,  7.99it/s]
Commits progress:  33%|███▎      | 107/322 [00:15<00:26,  8.09it/s]
Commits progress:  34%|███▎      | 108/322 [00:15<00:27,  7.88it/s]
Commits progress:  34%|███▍      | 109/322 [00:15<00:27,  7.68it/s]
Commits progress:  34%|███▍      | 110/322 [00:15<00:27,  7.67it/s]
Commits progress:  34%|███▍      | 111/322 [00:15<00:26,  7.98it/s]
Commits progress:  35%|███▍      | 112/322 [00:15<00:26,  8.01it/s]
Commits progress:  35%|███▌      | 113/322 [00:16<00:41,  5.08it/s]
Commits progress:  35%|███▌      | 114/322 [00:16<00:35,  5.80it/s]
Commits progress:  36%|███▌      | 115/322 [00:16<00:34,  5.93it/s]
Commits progress:  36%|███▌      | 116/322 [00:16<00:32,  6.43it/s]
Commits progress:  36%|███▋      | 117/322 [00:16<00:29,  6.85it/s]
Commits progress:  37%|███▋      | 118/322 [00:16<00:28,  7.16it/s]
Commits progress:  37%|███▋      | 119/322 [00:16<00:27,  7.41it/s]
Commits progress:  37%|███▋      | 120/322 [00:17<00:30,  6.71it/s]
Commits progress:  38%|███▊      | 121/322 [00:17<00:28,  7.14it/s]
Commits progress:  38%|███▊      | 122/322 [00:17<00:27,  7.14it/s]
Commits progress:  38%|███▊      | 123/322 [00:17<00:29,  6.69it/s]
Commits progress:  39%|███▊      | 124/322 [00:17<00:30,  6.51it/s]
Commits progress:  39%|███▉      | 125/322 [00:17<00:29,  6.58it/s]
Commits progress:  39%|███▉      | 126/322 [00:17<00:28,  6.88it/s]
Commits progress:  39%|███▉      | 127/322 [00:18<00:26,  7.34it/s]
Commits progress:  40%|███▉      | 128/322 [00:18<00:25,  7.51it/s]
Commits progress:  40%|████      | 129/322 [00:18<00:25,  7.58it/s]
Commits progress:  40%|████      | 130/322 [00:18<00:26,  7.32it/s]
Commits progress:  41%|████      | 131/322 [00:18<00:26,  7.27it/s]
Commits progress:  41%|████      | 132/322 [00:18<00:24,  7.61it/s]
Commits progress:  41%|████▏     | 133/322 [00:18<00:26,  7.23it/s]
Commits progress:  42%|████▏     | 134/322 [00:18<00:26,  7.06it/s]
Commits progress:  42%|████▏     | 135/322 [00:19<00:25,  7.45it/s]
Commits progress:  42%|████▏     | 136/322 [00:19<00:23,  7.75it/s]
Commits progress:  43%|████▎     | 137/322 [00:19<00:23,  7.95it/s]
Commits progress:  43%|████▎     | 138/322 [00:19<00:25,  7.22it/s]
Commits progress:  43%|████▎     | 139/322 [00:19<00:24,  7.58it/s]
Commits progress:  43%|████▎     | 140/322 [00:19<00:24,  7.43it/s]
Commits progress:  44%|████▍     | 141/322 [00:20<00:30,  5.98it/s]
Commits progress:  44%|████▍     | 142/322 [00:20<00:28,  6.35it/s]
Commits progress:  44%|████▍     | 143/322 [00:21<01:43,  1.73it/s]
Commits progress:  45%|████▍     | 144/322 [00:21<01:21,  2.19it/s]
Commits progress:  45%|████▌     | 145/322 [00:22<01:03,  2.80it/s]
Commits progress:  45%|████▌     | 146/322 [00:22<00:51,  3.39it/s]
Commits progress:  46%|████▌     | 147/322 [00:22<00:42,  4.12it/s]
Commits progress:  46%|████▌     | 148/322 [00:22<00:39,  4.43it/s]
Commits progress:  46%|████▋     | 149/322 [00:22<00:33,  5.12it/s]
Commits progress:  47%|████▋     | 150/322 [00:22<00:30,  5.60it/s]
Commits progress:  47%|████▋     | 151/322 [00:22<00:28,  6.08it/s]
Commits progress:  47%|████▋     | 152/322 [00:22<00:26,  6.35it/s]
Commits progress:  48%|████▊     | 153/322 [00:23<00:25,  6.63it/s]
Commits progress:  48%|████▊     | 154/322 [00:23<00:24,  6.96it/s]
Commits progress:  48%|████▊     | 155/322 [00:23<00:23,  6.99it/s]
Commits progress:  48%|████▊     | 156/322 [00:23<00:23,  7.09it/s]
Commits progress:  49%|████▉     | 157/322 [00:23<00:22,  7.27it/s]
Commits progress:  49%|████▉     | 158/322 [00:23<00:22,  7.33it/s]
Commits progress:  49%|████▉     | 159/322 [00:23<00:24,  6.69it/s]
Commits progress:  50%|████▉     | 160/322 [00:24<00:25,  6.44it/s]
Commits progress:  50%|█████     | 161/322 [00:24<00:24,  6.55it/s]
Commits progress:  50%|█████     | 162/322 [00:24<00:25,  6.19it/s]
Commits progress:  51%|█████     | 163/322 [00:24<00:26,  6.11it/s]
Commits progress:  51%|█████     | 164/322 [00:24<00:24,  6.51it/s]
Commits progress:  51%|█████     | 165/322 [00:24<00:24,  6.51it/s]
Commits progress:  52%|█████▏    | 166/322 [00:25<00:24,  6.42it/s]
Commits progress:  52%|█████▏    | 167/322 [00:25<00:23,  6.46it/s]
Commits progress:  52%|█████▏    | 168/322 [00:25<00:23,  6.51it/s]
Commits progress:  52%|█████▏    | 169/322 [00:25<00:23,  6.42it/s]
Commits progress:  53%|█████▎    | 170/322 [00:25<00:22,  6.66it/s]
Commits progress:  53%|█████▎    | 171/322 [00:25<00:21,  7.10it/s]
Commits progress:  53%|█████▎    | 172/322 [00:25<00:20,  7.15it/s]
Commits progress:  54%|█████▎    | 173/322 [00:26<00:28,  5.22it/s]
Commits progress:  54%|█████▍    | 174/322 [00:26<00:26,  5.61it/s]
Commits progress:  54%|█████▍    | 175/322 [00:26<00:23,  6.17it/s]
Commits progress:  55%|█████▍    | 176/322 [00:26<00:21,  6.66it/s]
Commits progress:  55%|█████▍    | 177/322 [00:26<00:21,  6.72it/s]
Commits progress:  55%|█████▌    | 178/322 [00:26<00:22,  6.31it/s]
Commits progress:  56%|█████▌    | 179/322 [00:27<00:23,  6.21it/s]
Commits progress:  56%|█████▌    | 180/322 [00:27<00:24,  5.85it/s]
Commits progress:  56%|█████▌    | 181/322 [00:27<00:25,  5.52it/s]
Commits progress:  57%|█████▋    | 182/322 [00:27<00:23,  5.96it/s]
Commits progress:  57%|█████▋    | 183/322 [00:27<00:22,  6.22it/s]
Commits progress:  57%|█████▋    | 184/322 [00:27<00:20,  6.59it/s]
Commits progress:  57%|█████▋    | 185/322 [00:28<00:19,  7.06it/s]
Commits progress:  58%|█████▊    | 186/322 [00:28<00:18,  7.35it/s]
Commits progress:  58%|█████▊    | 187/322 [00:28<00:18,  7.29it/s]
Commits progress:  58%|█████▊    | 188/322 [00:28<00:20,  6.48it/s]
Commits progress:  59%|█████▊    | 189/322 [00:28<00:18,  7.04it/s]
Commits progress:  59%|█████▉    | 190/322 [00:28<00:19,  6.91it/s]
Commits progress:  59%|█████▉    | 191/322 [00:28<00:19,  6.61it/s]
Commits progress:  60%|█████▉    | 192/322 [00:29<00:24,  5.35it/s]
Commits progress:  60%|█████▉    | 193/322 [00:29<00:21,  6.01it/s]
Commits progress:  60%|██████    | 194/322 [00:29<00:19,  6.48it/s]
Commits progress:  61%|██████    | 195/322 [00:29<00:18,  6.97it/s]
Commits progress:  61%|██████    | 196/322 [00:29<00:19,  6.47it/s]
Commits progress:  61%|██████    | 197/322 [00:29<00:18,  6.91it/s]
Commits progress:  61%|██████▏   | 198/322 [00:30<00:17,  7.04it/s]
Commits progress:  62%|██████▏   | 199/322 [00:30<00:17,  7.18it/s]
Commits progress:  62%|██████▏   | 200/322 [00:30<00:17,  6.91it/s]
Commits progress:  62%|██████▏   | 201/322 [00:30<00:16,  7.13it/s]
Commits progress:  63%|██████▎   | 202/322 [00:30<00:16,  7.48it/s]
Commits progress:  63%|██████▎   | 203/322 [00:30<00:21,  5.53it/s]
Commits progress:  63%|██████▎   | 204/322 [00:31<00:20,  5.62it/s]
Commits progress:  64%|██████▎   | 205/322 [00:31<00:20,  5.75it/s]
Commits progress:  64%|██████▍   | 206/322 [00:31<00:18,  6.30it/s]
Commits progress:  64%|██████▍   | 207/322 [00:31<00:16,  6.91it/s]
Commits progress:  65%|██████▍   | 208/322 [00:31<00:15,  7.28it/s]
Commits progress:  65%|██████▍   | 209/322 [00:31<00:15,  7.37it/s]
Commits progress:  65%|██████▌   | 210/322 [00:31<00:14,  7.73it/s]
Commits progress:  66%|██████▌   | 211/322 [00:31<00:14,  7.73it/s]
Commits progress:  66%|██████▌   | 212/322 [00:32<00:13,  7.91it/s]
Commits progress:  66%|██████▌   | 213/322 [00:32<00:13,  7.93it/s]
Commits progress:  66%|██████▋   | 214/322 [00:32<00:13,  8.04it/s]
Commits progress:  67%|██████▋   | 215/322 [00:32<00:13,  8.06it/s]
Commits progress:  67%|██████▋   | 216/322 [00:32<00:13,  8.09it/s]
Commits progress:  67%|██████▋   | 217/322 [00:32<00:13,  7.83it/s]
Commits progress:  68%|██████▊   | 218/322 [00:32<00:12,  8.15it/s]
Commits progress:  68%|██████▊   | 219/322 [00:32<00:12,  8.35it/s]
Commits progress:  68%|██████▊   | 220/322 [00:33<00:12,  8.35it/s]
Commits progress:  69%|██████▊   | 221/322 [00:33<00:13,  7.58it/s]
Commits progress:  69%|██████▉   | 222/322 [00:33<00:13,  7.56it/s]
Commits progress:  69%|██████▉   | 223/322 [00:33<00:12,  7.85it/s]
Commits progress:  70%|██████▉   | 224/322 [00:33<00:13,  7.45it/s]
Commits progress:  70%|██████▉   | 225/322 [00:33<00:12,  7.77it/s]
Commits progress:  70%|███████   | 226/322 [00:33<00:11,  8.06it/s]
Commits progress:  70%|███████   | 227/322 [00:33<00:12,  7.62it/s]
Commits progress:  71%|███████   | 228/322 [00:34<00:11,  7.89it/s]
Commits progress:  71%|███████   | 229/322 [00:34<00:12,  7.38it/s]
Commits progress:  71%|███████▏  | 230/322 [00:34<00:13,  6.87it/s]
Commits progress:  72%|███████▏  | 231/322 [00:34<00:14,  6.24it/s]
Commits progress:  72%|███████▏  | 232/322 [00:34<00:14,  6.37it/s]
Commits progress:  72%|███████▏  | 233/322 [00:35<00:17,  5.12it/s]
Commits progress:  73%|███████▎  | 234/322 [00:35<00:15,  5.77it/s]
Commits progress:  73%|███████▎  | 235/322 [00:35<00:13,  6.24it/s]
Commits progress:  73%|███████▎  | 236/322 [00:35<00:12,  6.69it/s]
Commits progress:  74%|███████▎  | 237/322 [00:35<00:12,  7.08it/s]
Commits progress:  74%|███████▍  | 238/322 [00:35<00:11,  7.31it/s]
Commits progress:  74%|███████▍  | 239/322 [00:35<00:10,  7.71it/s]
Commits progress:  75%|███████▍  | 240/322 [00:35<00:10,  7.83it/s]
Commits progress:  75%|███████▍  | 241/322 [00:36<00:10,  7.54it/s]
Commits progress:  75%|███████▌  | 242/322 [00:36<00:10,  7.56it/s]
Commits progress:  75%|███████▌  | 243/322 [00:36<00:10,  7.62it/s]
Commits progress:  76%|███████▌  | 244/322 [00:36<00:09,  7.90it/s]
Commits progress:  76%|███████▌  | 245/322 [00:36<00:09,  8.05it/s]
Commits progress:  76%|███████▋  | 246/322 [00:36<00:09,  8.16it/s]
Commits progress:  77%|███████▋  | 247/322 [00:36<00:10,  7.39it/s]
Commits progress:  77%|███████▋  | 248/322 [00:36<00:09,  7.60it/s]
Commits progress:  77%|███████▋  | 249/322 [00:37<00:09,  7.63it/s]
Commits progress:  78%|███████▊  | 250/322 [00:37<00:11,  6.44it/s]
Commits progress:  78%|███████▊  | 251/322 [00:37<00:10,  6.94it/s]
Commits progress:  78%|███████▊  | 252/322 [00:37<00:10,  6.52it/s]
Commits progress:  79%|███████▊  | 253/322 [00:37<00:09,  7.00it/s]
Commits progress:  79%|███████▉  | 254/322 [00:37<00:10,  6.62it/s]
Commits progress:  79%|███████▉  | 255/322 [00:37<00:09,  7.09it/s]
Commits progress:  80%|███████▉  | 256/322 [00:38<00:09,  7.28it/s]
Commits progress:  80%|███████▉  | 257/322 [00:38<00:08,  7.64it/s]
Commits progress:  80%|████████  | 258/322 [00:38<00:07,  8.05it/s]
Commits progress:  80%|████████  | 259/322 [00:38<00:07,  8.34it/s]
Commits progress:  81%|████████  | 260/322 [00:38<00:07,  8.05it/s]
Commits progress:  81%|████████  | 261/322 [00:38<00:07,  8.15it/s]
Commits progress:  81%|████████▏ | 262/322 [00:38<00:08,  7.42it/s]
Commits progress:  82%|████████▏ | 263/322 [00:39<00:10,  5.57it/s]
Commits progress:  82%|████████▏ | 264/322 [00:39<00:09,  5.96it/s]
Commits progress:  82%|████████▏ | 265/322 [00:39<00:08,  6.50it/s]
Commits progress:  83%|████████▎ | 266/322 [00:39<00:07,  7.03it/s]
Commits progress:  83%|████████▎ | 267/322 [00:39<00:07,  6.89it/s]
Commits progress:  83%|████████▎ | 268/322 [00:39<00:08,  6.38it/s]
Commits progress:  84%|████████▎ | 269/322 [00:39<00:07,  6.75it/s]
Commits progress:  84%|████████▍ | 270/322 [00:40<00:07,  6.91it/s]
Commits progress:  84%|████████▍ | 271/322 [00:40<00:06,  7.30it/s]
Commits progress:  84%|████████▍ | 272/322 [00:40<00:06,  7.65it/s]
Commits progress:  85%|████████▍ | 273/322 [00:40<00:06,  7.91it/s]
Commits progress:  85%|████████▌ | 274/322 [00:40<00:06,  7.90it/s]
Commits progress:  85%|████████▌ | 275/322 [00:40<00:05,  8.02it/s]
Commits progress:  86%|████████▌ | 276/322 [00:40<00:05,  7.87it/s]
Commits progress:  86%|████████▌ | 277/322 [00:40<00:05,  7.88it/s]
Commits progress:  86%|████████▋ | 278/322 [00:41<00:06,  7.24it/s]
Commits progress:  87%|████████▋ | 279/322 [00:41<00:05,  7.23it/s]
Commits progress:  87%|████████▋ | 280/322 [00:41<00:06,  6.87it/s]
Commits progress:  87%|████████▋ | 281/322 [00:41<00:05,  6.89it/s]
Commits progress:  88%|████████▊ | 282/322 [00:41<00:05,  7.16it/s]
Commits progress:  88%|████████▊ | 283/322 [00:41<00:05,  7.51it/s]
Commits progress:  88%|████████▊ | 284/322 [00:41<00:04,  7.93it/s]
Commits progress:  89%|████████▊ | 285/322 [00:42<00:04,  7.48it/s]
Commits progress:  89%|████████▉ | 286/322 [00:42<00:04,  7.83it/s]
Commits progress:  89%|████████▉ | 287/322 [00:42<00:04,  7.98it/s]
Commits progress:  89%|████████▉ | 288/322 [00:42<00:04,  8.19it/s]
Commits progress:  90%|████████▉ | 289/322 [00:42<00:03,  8.37it/s]
Commits progress:  90%|█████████ | 290/322 [00:42<00:03,  8.17it/s]
Commits progress:  90%|█████████ | 291/322 [00:42<00:03,  8.52it/s]
Commits progress:  91%|█████████ | 292/322 [00:42<00:03,  8.44it/s]
Commits progress:  91%|█████████ | 293/322 [00:43<00:04,  6.26it/s]
Commits progress:  91%|█████████▏| 294/322 [00:43<00:04,  6.18it/s]
Commits progress:  92%|█████████▏| 295/322 [00:43<00:04,  6.74it/s]
Commits progress:  92%|█████████▏| 296/322 [00:43<00:03,  7.14it/s]
Commits progress:  92%|█████████▏| 297/322 [00:43<00:03,  7.57it/s]
Commits progress:  93%|█████████▎| 298/322 [00:43<00:03,  7.17it/s]
Commits progress:  93%|█████████▎| 299/322 [00:43<00:03,  7.40it/s]
Commits progress:  93%|█████████▎| 300/322 [00:44<00:02,  7.81it/s]
Commits progress:  93%|█████████▎| 301/322 [00:44<00:03,  6.76it/s]
Commits progress:  94%|█████████▍| 302/322 [00:44<00:02,  6.69it/s]
Commits progress:  94%|█████████▍| 303/322 [00:44<00:02,  7.18it/s]
Commits progress:  94%|█████████▍| 304/322 [00:44<00:02,  7.21it/s]
Commits progress:  95%|█████████▍| 305/322 [00:44<00:02,  6.56it/s]
Commits progress:  95%|█████████▌| 306/322 [00:44<00:02,  6.87it/s]
Commits progress:  95%|█████████▌| 307/322 [00:45<00:02,  7.41it/s]
Commits progress:  96%|█████████▌| 308/322 [00:45<00:01,  7.66it/s]
Commits progress:  96%|█████████▌| 309/322 [00:45<00:01,  7.71it/s]
Commits progress:  96%|█████████▋| 310/322 [00:45<00:01,  7.98it/s]
Commits progress:  97%|█████████▋| 311/322 [00:45<00:01,  8.05it/s]
Commits progress:  97%|█████████▋| 312/322 [00:45<00:01,  8.40it/s]
Commits progress:  97%|█████████▋| 313/322 [00:45<00:01,  7.97it/s]
Commits progress:  98%|█████████▊| 314/322 [00:45<00:00,  8.12it/s]
Commits progress:  98%|█████████▊| 315/322 [00:46<00:00,  7.97it/s]
Commits progress:  98%|█████████▊| 316/322 [00:46<00:00,  7.12it/s]
Commits progress:  98%|█████████▊| 317/322 [00:46<00:00,  6.87it/s]
Commits progress:  99%|█████████▉| 318/322 [00:46<00:00,  7.23it/s]
Commits progress:  99%|█████████▉| 319/322 [00:46<00:00,  7.48it/s]
Commits progress:  99%|█████████▉| 320/322 [00:46<00:00,  7.68it/s]
Commits progress: 100%|█████████▉| 321/322 [00:46<00:00,  6.49it/s]
Commits progress: 100%|██████████| 322/322 [00:47<00:00,  6.36it/s]
Commits progress: 100%|██████████| 322/322 [00:47<00:00,  6.83it/s]
[DEBUG] Update changelog
[DEBUG] BRANCH: NotSet, PULL_REQUEST:``

I want to mention your last release v1.2.2 solved the issue. Its generating changelog

I want to mention your last release v1.2.2 solved the issue. Its generating changelog

Ok, glad to hear that.

I make a hotfix in new release v1.2.2 for bypassing the bug which might be helpful. If this works, I wonder if you can paste the log of the GA and your previous CHANGELOG?

What I really mean is that could you please provide the GA log of the success one with release v1.2.2 if possible? I have added more log on what causes the previous failure(it is some sentences in your previous changelog.md)

This is success log for v1.2.2
/usr/bin/docker run --name cd98f1b6fa3f0e5de4b43ae3fa62fefe6ab25_ebd698 --label 4cd98f --workdir /github/workspace --rm -e INPUT_REPO_NAME -e INPUT_ACCESS_TOKEN -e INPUT_PATH -e INPUT_COMMIT_MESSAGE -e INPUT_TYPE -e INPUT_BRANCH -e INPUT_PULL_REQUEST -e INPUT_COMMITTER -e INPUT_DEFAULT_SCOPE -e INPUT_SUPPRESS_UNSCOPED -e INPUT_UNRELEASED_COMMITS -e INPUT_REGENERATE_COUNT -e INPUT_REPLACE_EMPTY_RELEASE_INFO -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_RUN_ATTEMPT -e GITHUB_ACTOR -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_REF_NAME -e GITHUB_REF_PROTECTED -e GITHUB_REF_TYPE -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e GITHUB_STEP_SUMMARY -e RUNNER_OS -e RUNNER_ARCH -e RUNNER_NAME -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/decathlon-project/decathlon-project":"/github/workspace" 4cd98f:1b6fa3f0e5de4b43ae3fa62fefe6ab25 WARNING: The directory '/github/home/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag. Requirement already satisfied: pip in /usr/local/lib/python3.10/site-packages (22.0.4) Collecting pip   Downloading pip-22.2-py3-none-any.whl (2.0 MB)      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 76.6 MB/s eta 0:00:00 Requirement already satisfied: setuptools in /usr/local/lib/python3.10/site-packages (58.1.0) Collecting setuptools   Downloading setuptools-63.2.0-py3-none-any.whl (1.2 MB)      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 179.7 MB/s eta 0:00:00 Requirement already satisfied: wheel in /usr/local/lib/python3.10/site-packages (0.37.1) Installing collected packages: setuptools, pip   Attempting uninstall: setuptools     Found existing installation: setuptools 58.1.0     Uninstalling setuptools-58.1.0:       Successfully uninstalled setuptools-58.1.0   Attempting uninstall: pip     Found existing installation: pip 22.0.4     Uninstalling pip-22.0.4:       Successfully uninstalled pip-22.0.4 Successfully installed pip-22.2 setuptools-63.2.0 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv WARNING: The directory '/github/home/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag.  It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv Successfully installed PyGithub-1.55 PyYAML-6.0 certifi-[20](https://github.com/arif98741/decathlon-project/runs/7533280667?check_suite_focus=true#step:4:21)22.6.15 cffi-1.15.1 charset-normalizer-2.1.0 deprecated-1.2.13 idna-3.3 pycparser-2.[21](https://github.com/arif98741/decathlon-project/runs/7533280667?check_suite_focus=true#step:4:22) pyjwt-2.4.0 pynacl-1.5.0 requests-2.28.1 tqdm-4.64.0 urllib3-1.[26](https://github.com/arif98741/decathlon-project/runs/7533280667?check_suite_focus=true#step:4:27).11 wrapt-1.14.1 [WARN] This part is not in the correct format! Will ignore this part.  [INFO] Regenerate releases: ['v0.0.1-dev'] [INFO] Update changelog [INFO] BRANCH: NotSet, PULL_REQUEST:

Thank you ,get it!
Since the bug is fixed I will close the issue

of course. Thanks for your quick response.


Opened crate multiple times

SPT Version
3.10-BE
Project Type
No response
Expected Result
When I open a crate, I expect it to only open one window of the crate's contents
Actual Result
No idea how or what I did to cause it, but it opened three different windows. They all controlled the same container, but it didn't have the same loot in all of them.
Steps To Reproduce
Unknown, I don't know if my game lagged when opening a crate. I wasn't recording when the glitch happened. I killed a scav and opened a tech crate on woods when I think it lagged and displayed three windows. This happened on BE 320835.
Server Log
Click and attach file. ↓
BepinEx Log
Click and attach file. ↓
Client Log
Click and attach file. ↓
Player Profile
No idea if this is needed to catch the bug. Probably not related to profile information.
Screenshots
https://streamable.com/wgeout
https://youtu.be/8ibsY8_QsGc (Same clip uploaded to youtube, is uploading extremely slowly)

Attachments

server-2024-11-23.log (225 KiB)
LogOutput.log (17 KiB)
2024.11.23_19-54-34_<IP_ADDRESS>.33420 traces.log (108 KiB)
673aaa9500029f6a34a86926.json (385 KiB)

Originally written by ToonByte.

I believe we've seen this issue before. Unsure if we ever had a ticket but i remember it happening with PMC bodies. Last time we labeled it as a Live bug.

Originally written by TetrisGG.

As Tetris has mentioned, this is a live issue

Originally written by chomp.


Guitar Ui

I want to add an attractive Guitar UI
Like these and much more

Please assign this , I am interested to contribute my self in hacktoberfest _23 : )

assigned

I had just resolved this issue and I made a PR #108 once please check and merge it _hacktoberfest_23 : )


Better image type support

Get real image type from content.
Favor quality option over format.
Don't ruin quality twice when resizing by outputting a PNG buffer.

@ysugimoto before we go around fixing the failing test (which is due to changing logic), what do you think about the solution, implementation, and logic?

@odedniv Ah, sorry I'm late. It looks good. so please pass the test (failings seems to check extension).

@ysugimoto done (I dunno if you get an update, please let me know for future)

Thank you for your improvement!


JS Error: Unable to process binding "options: function (){return matchingSlicers }

After installing the slicer and rebooting the system, the JS code fails with this error, rendering me unable to login to the web app and uninstall the plugin.

What browser/version are you using? Also what OctoPrint version are you using (this may be difficult to get if you can't get into OctoPrint).
A few suggestions to get around this problem:

Try a different browser. I have been testing OctoPrint and this plugin on Chrome 53.0.
(if you are comfortable with command line) SSH to your Raspberry Pi (ssh pi@octopi.local), run command "/home/pi/oprint/bin/pip uninstall --yes OctoPrint-Slicer"

@LVNCELOT Can you please provide the info on what browser and which version you were using when you had that error. I tested my plug in on latest version of Chrome, Firefox and IE11. I'll be happy to fix it if you can offer more info about this issue.

Maybe you should also test in Safari to make Mac users happy :)

@kennethjiang Please excuse the late reply. The issue arose on 1.2.11 on both Chrome and Firefox. I've since reinstalled octoprint and on 1.2.16 everything is working fine.

Thank you so much @LVNCELOT for pointing out this compatibility issue. Based on your info I found out that Slicer plugin requires OctoPrint 1.2.14 and up. I have created a PR (https://github.com/OctoPrint/plugins.octoprint.org/pull/47) and hopefully it'll get merged soon.
Once my PR get merged I will close this issue. But let me know if there is anything else.


Implement Spark executor node affinity using custom resource

What Problem Does the PR Solve
This PR enable raydp pin Spark executors on a specific set of machines in a Ray cluster -- a feature we found useful in our production. It is useful when the Ray cluster contains heterogeneous workloads (i.e. workloads using both Spark and Native Ray) and the total resource is less than the max resource Spark could potentially request -- which is possible in following cases:

User specify large number of Spark executors, which is more than the total amount of CPU in the cluster. In this case it could cause other Ray workload starving because Spark occupied all resources.
Dynamic allocation requests more actors than total CPU -- this is possible when dynamic allocation starts

In both scenarios, we want to limit the scheduling of the Spark executor actors into a subset of machines to avoid the Spark job take all resources in the ray cluster and starve other Ray workloads.
Another scenario this feature is useful is the Spark cluster needs to be schedule on special nodes i.e. spot vs. on demand.
This feature could also benefit multi-tenant Ray clusters where different users want to run their job on different nodegroups.
With the new feature, we can define a set of machines that only for scheduling Spark executors in the Ray cluster, for example:
# Ray cluster config
  # ....
  spark_on_spot:  # Spark only nodes
    resources:
      spark_executor: 100 # custom resource indicates these node group is for Spark only
    min_workers: 2
    max_workers: 10  # changing this also need to change the global max_workers
    node_config:
      # ....
  general_spot:  # Nodes for general Ray workloads
    min_workers: 2
    max_workers: 10  # changing this also need to change the global max_workers
    node_config:
      # ...

Then when initialize Spark session:
spark = raydp.init_spark(app_name='RayDP Example',
                         num_executors=executor_count,
                         executor_cores=3,
                         executor_memory=1 * 1024 * 1024 * 1024,
                         configs = {
                             ...
                             'spark.ray.raydp_spark_executor.actor.resource.spark_executor': 1,  # Schedule executor on nodes with custom resource spark_executor
                         })

Thanks for the contributing the PR. This will be very useful. Can you please also update this in the document? Previously you introduced node affinity for the Spark driver and introduced the configuration like spark.ray.raydp_spark_master.actor.resource.spark_master. For this new configuration which is for executor, should we add raydp_executor to the name to be consistent like spark.ray.raydp_executor.actor.resource.spark_executor?

why delete the test test_spark_on_fractional_custom_resource?

@kira-lin When doing my local test, I found that test interferes with the new tests -- it could be the Spark context is partially created. I can bring it back.
Another issue is the CI is failing -- I probably need some help there..

@pang-wu Look at raydp.yml:108, that test is run explicitly. CI failure may be due to no tests are selected.

@kira-lin fixed.

@pang-wu thanks


Fix linting issues and add goreportcard badge

This should bring goreportcard to 100%. I've only changed function signatures in a private method, so this should be a non-breaking change.

I have reverted and pushed the changes.

@theckman Can this be merged?

Yes. But I forgot my PGP key at the office, and I won't be back until Thursday, so I'll merge it then.

Sounds good. Thanks :)

Thank you for the contribution!


export RuleGroup just like Rule

export RuleGroup from the query builder just like Rule
since RuleGroup is customizable through the controlElements property, it'd make sense exporting it for reusing purpose.

Hey, @ZigZagT! Thanks for the PR. Looks like our prettier job is broken (maybe only works on branches within this repo?). I'll see if I can figure out what's going on and you can fix that in this same PR.

Yeah, looks like the checkout action is looking for patch-1 from the main repo rather than the forked repo.
I found this thread that might help for this situation.
Feel free to use this patch to test things around ;)

@all-contributors please add @ZigZagT for code


Error creating Evernote file from md files

Hi,
I'm getting this error when trying to convert md files from Obsidian to the Evernote format.
Any help is welcome
❯ ./md2enex.py -d /Users/carlsen/Desktop/md_source/ -o /Users/carlsen/Desktop/md_output/
Traceback (most recent call last):
  File "/Users/carlsen/md2enex/./md2enex.py", line 221, in <module>
    main(args.directory, args.output)
  File "/Users/carlsen/md2enex/./md2enex.py", line 209, in main
    write_enex(target_directory, output_filename)
  File "/Users/carlsen/md2enex/./md2enex.py", line 192, in write_enex
    tree.write(output_file, encoding="UTF-8", method='xml', pretty_print=True,
  File "src/lxml/etree.pyx", line 2075, in lxml.etree._ElementTree.write
  File "src/lxml/serializer.pxi", line 747, in lxml.etree._tofilelike
  File "src/lxml/serializer.pxi", line 815, in lxml.etree._create_output_buffer
  File "src/lxml/serializer.pxi", line 805, in lxml.etree._create_output_buffer
IsADirectoryError: [Errno 21] Is a directory

@prebencarlsen the -o parameter should be a filename, not a directory, as the output is a single .enex file.

@prebencarlsen the -o parameter should be a filename, not a directory, as the output is a single .enex file.


Docs: API Gateway REST, with CORS and Lambda proxy integration results in Malformed Lambda proxy response

What were you searching in the docs?
Hi,
we are looking at using the CORS settings from the powertools to replace our custom handling to the headers based on the AWS docs.
Unfortunately, we get a 502 Execution failed due to configuration error: Malformed Lambda proxy response error in the API Gateway logs. The only difference that we can spot between our implementation based on the docs is that we return a header where as the powertools response adds the headers in the multiValueHeaders
Is this related to an existing documentation section?
https://docs.powertools.aws.dev/lambda/python/latest/core/event_handler/api_gateway/#cors
How can we improve?
Is there any way to clarify what is exactly required here? I am not sure if there is a special setting for the REST API Gateway that we need to enable the support of multiValueHeaders? Or would there be any other explanation for why the API Gateway runtime is rejecting the response from powertools?
Got a suggestion in mind?
No response
Acknowledgment

[x] I understand the final update might be different from my proposed suggestion, or refused.

We have sorted this out ourselves. The docs are correct, we just had the wrong content_type in the response


Is there a way to skip preserving the original jar file?

Could you please provide an option to do that? I wouldn't like to generate the "xxx_proguard_base.jar".

Have you tried specifying the outjars to be same as their respective injars?

I would like this option too. I have outjar and injar set to the same path, and can confirm the "xxx_proguard_base.jar" file gets created and not deleted.


Grappelli not removed from INSTALLED_APPS list by GrappelliGuardedModelAdminTests tearDown method.

I've commented on the line in question, which is in a very old commit.
We just hit on this bug today, through some weird confluence of bad luck. It was causing some later tests of ours to fail, because they ended up searching for templates in all INSTALLED_APPS. We don't have Grapelli installed, so they failed.
I've suggested an easier way to restore the INSTALLED_APPS state in my comment. Am I missing something there?

Django provides a utility decorator called override_settings for cases like this. I haven't used it, but I'd suggest giving it a try:
https://docs.djangoproject.com/en/dev/topics/testing/#django.test.utils.override_settings
Also, you need a way to test that the fix actually works. We had a hard time with the issue in our environment because it was only happening to some of us, so nailing down good way to test might be tricky.

See this pull request: https://github.com/lukaszb/django-guardian/pull/58

My pull request was merged.


[Insert] Fix Too many SQL variables error by using prepared statements

Requires a new release of go-zetasqlite pending goccy/go-zetasqlite#171
Closes #270

Thank you for your contribution !! This PR's commit is merged with https://github.com/goccy/bigquery-emulator/pull/283

Closed with #283


[Documentation] add missing fields

Documentation: Adapters => Drizzle ORM

add missing expires fields for PostgreSQL and SQLite

Thanks!


Remove top level loc folder

It's our belief that these were checked in accidentally 3 years ago and never touched again, and we just didn't remove them. We've been shipping this since TS 3.7, and it consists of 78 files (~45%) or 2.7 MB (~4%) of our package.

I did some searching and it looks like these are the localization files for TS in VS, so, I feel less worried merging this now.