Navigation pages in HTTPS

First off thank you for your work !
My blog is hosted on the following subdomain of my website: https://blog.christopherkade.com, when I navigate to a second page, it uses HTTP and not HTTPS. Why is that?
If I understand correctly, you handle pagination in the following lines:
{% if paginator.next_page %}
      {{ site.text.pagination.older }}
{% else %}
      {{ site.text.pagination.older }}
{% endif %}

Note that my config's blogurl is https://blog.christopherkade.com.
Thank you in advance.

Looks like you need to contact your hosting service.  Pixyll appears to be doing the right thing.  The redirect is server-side:
$ curl -I https://blog.christopherkade.com/page2
HTTP/1.1 301 Moved Permanently
Date: Sun, 24 Dec 2017 19:44:48 GMT
Content-Type: text/html
Connection: keep-alive
Set-Cookie: __cfduid=d53d884010b9e170f6dac076c61ca08341514144688; expires=Mon, 24-Dec-18 19:44:48 GMT; path=/; domain=.christopherkade.com; HttpOnly
Location: http://blog.christopherkade.com/page2/
Access-Control-Allow-Origin: *
Expires: Sun, 24 Dec 2017 19:54:48 GMT
Cache-Control: max-age=600
Accept-Ranges: bytes
Via: 1.1 varnish
Age: 0
X-Served-By: cache-jfk8138-JFK
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1514144689.577321,VS0,VE11
Vary: Accept-Encoding
X-Fastly-Request-ID: 06e5b5f9e41da5a5a40650d46dcdfb69213e3555
Server: cloudflare
CF-RAY: 3d260eaf08fc924e-EWR

Thanks for the heads up, it was a problem on my side, I changed a redirection rule and all seems perfect now.

Cool, I'm glad you were able to resolve it.
What is the significance of blogurl?  I'm not seeing a reference to it in pixyll.  Is it something elsewhere in jekyll?

I added it a while back to tweak Pixyll (and forgot, hence the mention).


UofT-DSI | Algorithms and Data Structures - Assignment 1

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
Adding code to solve the missing numbers problem in the range [0, n].
What did you learn from the changes you have made?
I learned how to efficiently find missing numbers using sets and boolean arrays.
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
Yes, using a boolean array to identify the missing ones by collecting indices still marked as False.
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
Understanding the edge cases like an empty list or no missing numbers.
How were these changes tested?
By running multiple test cases, including edge cases, to validate the output.
A reference to a related issue in your repository (if applicable)
N/A
Checklist

[x] I can confirm that my changes are working as intended

Hi A1 marked complete. Just two things to note:

If all numbers in the range [0, n] sre present, the code returns an empty list ([]) instead of -1, which contradicts the problem requirements.
The use of set(range(n + 1)) may be inefficient for large values of n, as it requires creating a set for all numbers in the range.


Bank transfer payments not activated after inputting bank info

Describe the bug
If you create a new Collective, click start accepting contributions, click "add bank account" as part of the setup process, and put in the bank details, the "contribute" options will activate but no payment is actually available. Noticed when helping a new Collective get setup, and then I was able to reproduce myself.
To Reproduce
Steps to reproduce the behavior:

Create a new Collective
Click "start accepting contributions"
Select "ourselves" as host
Select "bank transfer" for how will you accept money
Enter bank details and proceed
Land back on Collective page, with contribute options activated
Try making a contribution
See error: "There is no payment provider available"

I set up this Collective for testing and it's currently in this state: https://opencollective.com/testing-bank-setup
To enable contributions by bank transfer in the Collective I was setting up with the user, she had to go to the "receiving money" settings and add the bank account all over again, then it started working.

We did some QA on Wednesday for this and could not reproduce.


jit: grow stack automatically.

This commit resolves one TODO for growing stack automatically
when the engine enters new JITed function frames and sees the necessity
to grow the stack.
Signed-off-by: Takeshi Yoneda<EMAIL_ADDRESS>part of #65.

I will put the comments on the struct and then merge this :D

@codefromthecrypt thanks for the reviews! 💯 🏅 🙏


Typo

https://github.com/twbs/bootstrap/blob/main/site/content/docs/5.0/components/navs-tabs.md
http://prntscr.com/zge58w

@nightw0lv You could have created a PR only.


Decrease font size for long results or split to lines

At now long results are cuts by widget edge, here is example:

Will be good to auto decrease size of result font, or split it to several lines.
Also, imho, default size of result font is too large, will be good to make it configurable.

Same problem for pi result:

Also will be good to replace approx. to ~ symbol.

Can you test if this works in the latest version?

Thanks, now it decreased well:

Will be good to decrease padding of results line, because on smaller fonts it is too large:

This is not so easy because there is no real access to the actual text width. Instead I am using the average font width, which will look too small for narrow letters like l and i and too big for w or m.
I did some research but I didn't find any better method to determine the scaling factor.


Fix typo in Element.getBBox documentation

I need you to sign CLA in order to merge your patch. So, I will just made this change myself for now. Next time, sign the CLA.

Ok!


⚠ Fetchers has degraded performance

In 44e9513, Fetchers ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 300 ms

Resolved: Fetchers performance has improved in b9df2b6.


HAI-1977 Hide map in hanke list and hanke page if there are no hanke areas

Description
In case there are no hanke areas don't show map in hanke list when opening hanke card or in hanke page.
Jira Issue: https://helsinkisolutionoffice.atlassian.net/browse/HAI-1977
Type of change

[ ] Bug fix
[ ] New feature
[x] Other

Instructions for testing

Make sure you have a hanke which has areas and a hanke which doesn't
Check in hanke list that when you open hanke card for hanke which has areas map is shown and for hanke which doesn't have areas map is not shown
Check the same in those hankkeet hanke pages

Checklist:

[x] I have written new tests (if applicable)
[x] I have ran the tests myself (if applicable)
[ ] I have made necessary changes to the documentation, link to confluence
or other location:

Other relevant info
Please describe here if there is e.g. some requirements for this change or
other info that the tester/user needs to know.

This seems to work in hankesalkku only? Not in hanke form section "Vaihe 2/6: Alueet"?  I was just a bit confused about the description in Jira issue:
"Mikäli hankkeella ei ole hankealueita, niin karttaa ei näytetä ollenkaan hankkeen tietojen yhteydessä.
Tällä tiketillä siis poistetaan tällä hetkellä näkyvillä oleva kartta, jos alueita ei ole.
Tehdään muutos hankelistaan sekä hankesivulle. "


Android return cancel button index

I think the callback should return the cancelButtonIndex when cancelled via the android back button.
This is our example of our usage in our app. The issue is that when the android back button is invoked the callback is invoked with undefined, which crashes at options[index].action(). If the cancelButtonIndex is instead returned then the code works as expected.
import ActionSheet from 'react-native-action-sheet';

let options = [
  { name: 'Option 0', action: () => {...} },
  { name: 'Option 1', action: () => {...} },
  { name: 'Option 2', action: () => {...} },
  { name: 'Cancel', action: () => {...} },
];

ActionSheet.showActionSheetWithOptions({
  options: options.map(o => o.name),
  cancelButtonIndex: 3,
},
index => {
  options[index].action()
});

I think this is a better solution as it more closely matches the behavior of the iOS API. Here's the updated readme. Which also seems simpler.
import ActionSheet from 'react-native-action-sheet';

var options = [
  'Option 0',
  'Option 1',
  'Option 2',
  'Delete',
  'Cancel'
];

var DESTRUCTIVE_INDEX = 3;
var CANCEL_INDEX = 4;

ActionSheet.showActionSheetWithOptions({
  options: options,
  cancelButtonIndex: CANCEL_INDEX,
  destructiveButtonIndex: DESTRUCTIVE_INDEX,
  tintColor: 'blue'
},
(buttonIndex) => {
  console.log('button clicked :', buttonIndex);
});

@yfuks

Great ! Sorry for the late response.
You can also update the @note in the README

@yfuks updated the @note section. Thanks for getting back to me

@yfuks ^


How to interact with JavaScript?

For example, how to know in the App after it was opened by clicking the widget button?
Are there some examples or API to do this? Thanks!

From the official Apple docs:

Opening the Containing App
In some cases, it can make sense for a Today widget to request its containing app to open. For example, the Calendar widget in OS X opens Calendar when users click an event. (Note that in iOS, a user may have to unlock the device before the containing app can open.) To ensure that your containing app opens in a way that makes sense in the context of the user’s current task, you need to define a custom URL scheme that both the app and its widgets can use.
A widget doesn’t directly tell its containing app to open; instead, it uses the openURL:completionHandler: method of NSExtensionContext to tell the system to open its containing app. When a widget uses this method to open a URL, the system validates the request before fulfilling it.

So you will probably need cordova-plugin-customurlscheme to create your own url-scheme, add it to your iOS app and then open your app via openUrl in your widget, then you will be able to send a parameter which tells your app that it was opened by your widget.

Thanks @DavidStrausz ! That's really helpful! ❤

No problem, glad to help! :)
Usually you use shared user defaults to exchange (simple) data (your app and your widget are in the same app-group and can therefore access the same user defaults).
Check this article.
You will probably want to use cordova-plugin-nativestorage to save e.g. the TODO list. Especially this section will be of interest for your use-case.
If you need a more advanced data-exchange you could also think about sharing an API-key in the user defaults, so your widget and your app can access the same backend.

@DavidStrausz Thanks so much!


Result of known devices should include manufacturer

The results (fallback) of unknown devices contain the manufacturer. The results of known devices mostly don't include the manufacturer.

Will you please provide an example?

E.g. result for 1. Generation Motorola Moto G is just Moto G (1st Gen).

Please provide an example with code.

I simply call DeviceName.getDeviceName().
Result of Log.d("Device name", DeviceName.getDeviceName()); is
D/Device name: Moto G (1st Gen)

You can get the manufacturer using Build.MANUFACTURER and add that as a prefix to the device name.
String name = Build.MANUFACTURER + " " + DeviceName.getDeviceName();

I think this is working as intended. The name of the device comes from Google's list, so I won't be changing anything here.
You can also use the following method to get the manufacturer of other device names:
DeviceName.with(context).setCodename("XT1028").request(new DeviceName.Callback() {

  @Override public void onFinished(DeviceName.DeviceInfo info, Exception error) {
    String manufacturer = info.manufacturer;  // "Motorola"
    String name = info.marketName;            // "Moto G (1st Gen)"
    String model = info.model;                // "XT1028"
  }
});

If I just concatenate the string the manufacturer is doubled for unknown devices.
For unknown devices you are checking if Build.MODEL contains the manufacturer:
  public static String getDeviceName() {
    String manufacturer = Build.MANUFACTURER;
    String model = Build.MODEL;
    String fallback;
    if (model.startsWith(manufacturer)) {
      fallback = capitalize(model);
    } else {
      fallback = capitalize(manufacturer) + " " + model;
    }
    return getDeviceName(Build.DEVICE, model, fallback);
  }

Why not do the same for the top 600 devices? At the moment I use the following code to solve this but for consistency I think it's worth considering to implement this in your library.
String manufacturer = capitalize(Build.MANUFACTURER);
String devName = DeviceName.getDeviceName();
    if ( !devName.startsWith(manufacturer)) {
        devName = manufacturer + " " + devName;
    }

For consistency, I removed the manufacturer from the fallback name instead of adding it for each device.


Run terraform -chdir mydir init using the extension

Hello team,
Is it possible to use task: TerraformTaskV1@0 to run the slightly different  command "terraform -chdir mydir init"
The extension gives me an error and says i can only run tf init, tf plan etc

I'm not sure what diffrennt TerraformTaskV1 and TerraformCLI. but I bet it works with workingDirectory input.
- task: TerraformCLI@0
  displayName: 'Terraform Initialize'
  inputs:
    command: 'init'
    backendType: 'azurerm'
    ...
    workingDirectory: [path as you need]

so you can close this case.


Object type declaration, syntax error

The parser doesn't recognize type object declaration. Maybe it's not a native C type so I just want to point it out. But method argument hint type works as intended.
object obj = new stdClass; //---> throw error syntax

A workaround is to use var obj

@flyingangel Thank you for pointing this out. Actually this was in my personal TODO list.


replace webinar announcement with Zowe survey

Quarterly webinar has passed, the Zowe survey needs advertising
Signed-off-by: Ilya Kreynin<EMAIL_ADDRESS>under the direction of Rose Sakach

Quarterly webinar has passed, the Zowe survey needs advertising
Signed-off-by: Ilya Kreynin<EMAIL_ADDRESS>under the direction of Rose Sakach

Quarterly webinar has passed, the Zowe survey needs advertising
Signed-off-by: Ilya Kreynin<EMAIL_ADDRESS>under the direction of Rose Sakach

Quarterly webinar has passed, the Zowe survey needs advertising
Signed-off-by: Ilya Kreynin<EMAIL_ADDRESS>

Quarterly webinar has passed, the Zowe survey needs advertising
Signed-off-by: Ilya Kreynin<EMAIL_ADDRESS>

Quarterly webinar has passed, and the Zowe survey needs advertising. Edit made by request of Rose Sakach.
Signed-off-by: Ilya Kreynin<EMAIL_ADDRESS>

Quarterly webinar has passed, and the Zowe survey needs advertising. Edit made by request of Rose Sakach.
Signed-off-by: Ilya Kreynin<EMAIL_ADDRESS>


vscode automatically add .i extension after I save as ipynb file

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version: Version: 1.92.1
Commit: eaa41d57266683296de7d118f574d0c2652e1fc4
Date: 2024-08-07T20:16:39.455Z
Electron: 30.1.2
ElectronBuildId: 9870757
Chromium: 124.0.6367.243
Node.js: 20.14.0
V8: <IP_ADDRESS>-electron.0
OS: Darwin arm64 24.1.0

I have try to use new profile without any extension and settings, the issue still there
Steps to Reproduce:

command + N create new file
command + S save to a ipynb file,
the file will add a new .i extension to the end

I have the same issue

This is a macOS bug fixed in 15.2.


Update Ember Concurrency to remove obsolete packages

There’s (at least?) one broken test 🤔

This is proceeding in #253, hopefully the full removal of taskFor can happen soon 🤞🏻


identifier field for License Objects

License Objects should have an identifier field,  which can hold Software Package Data Exchange license identifiers 😄
From the SPDX Specification:

Identifying the license for open source software is critical for both reporting purposes and license compliance. However, determining the license can sometimes be difficult due to a lack of information or ambiguous information. Even when licensing information is present, a lack of consistent notation can make automating the task of license detection very difficult, thus requiring vast amounts of human effort.
https://spdx.org/spdx-specification-21-web-version#h.twlc0ztnng3b

Rationale
The OpenAPI Specification, as we all know, is meant to be machine and human readable1.
Adding a standardized, machine-readable license field would allow for the following:

more precision w/r/t specific licenses, without the brittleness of a url field (URL rot is a thing!)
automatic linking to common licenses in documentation tools, even if the author omits a link
an index that categorizes APIs by license without relying on license.name string comparison
an OpenAPI client that automatically checks for compliance with services it interacts with

From first glance at the SPDX spec, that looks like significant overkill for what the API license is trying to do in OpenAPI.  If link rot in licenses is an issue, then we should address that because for well known OSS licenses, it shouldn't be an issue.

Based on @OAI/tsc conversations, this is something we would consider.  Identifier could be added as a mutually exclusive value with Url.

I also think adopting SPDX would be a good idea. Note however that for proprietary/closed cases, there is neither a SPDX license not a URL. NPM suggests to use UNLICENSED in place of an SPDX identifier in this case.

@lorenzleutgeb I've personally found that creates confusion with the Unlicense license. I think omitting an identifier and relying on the name/url would be preferable. Why would there not be a url for a proprietary license?

@MikeRalphson I agree that confusion with the Unlicense is too probable for this to be a nice solution. Still hoping for a better one... My proposal would be to make the license object not required.
The thing that bugs me is that a license is required in any case, even if there is none. The case without license protects the exclusive rights of the author. It is a little unclear what to do with the required name in this case, since there is no licensing. What one might do now is use "proprietary", "NONE", "UNLICENSED" or "All rights reserved." as license name. But that is a hack since effectively there is no license. This is why I pointed at NPM. They have a convention on how to express that there is no license. OpenAPI does not have that.
But I realize that I am hijacking the original issue a little. If you are considering changing the license object for SPDX then it would be nice to also address my concerns about no license.

In both OAS 2.0 and 3.0.x the info.license object is optional.

@shockey do you have the time to move this to a PR?

If a license is not listed on the SPDX License List, you can still use SPDX annotation to indicate a unique license by prepending LicenseRef- to the (unique) license name. E.g. LicenseRef-My_Very_Own_Look_But_Do_Not_Touch_License-2.0 is a valid SPDX license identifier.

Is there support for SPDX license expressions yet?

@SamuelMarks not yet, we just need someone with bandwidth to create a PR against the next minor version.

#2105 was merged into v3.1.0-dev, look out for an RC-0 release soon.


Hostname is not changed by Vagrant

I'm using the official Vagrant box imaged published in the Vagrant Cloud website so I'm not sure if this is its source code  but if I use the following Vagrantfile:
Vagrant.configure("2") do |config|
  config.vm.box = "opensuse/openSUSE-Tumbleweed-Vagrant.x86_64"
  config.vm.box_version = "1.0.20190815"
  config.vm.hostname = "testing"
end

The hostname remains as  localhost
$ vagrant ssh
Have a lot of fun...
vagrant@localhost:~> hostnamectl
   Static hostname: n/a
Transient hostname: localhost
         Icon name: computer-vm
           Chassis: vm
        Machine ID: f076b7f9485f4007b46843ea225a7d41
           Boot ID: ffe05284129e47d7928fb24ca0c87016
    Virtualization: kvm
  Operating System: openSUSE Tumbleweed
       CPE OS Name: cpe:/o:opensuse:tumbleweed:20190815
            Kernel: Linux 5.2.8-1-default
      Architecture: x86-64

As result, these VMs are only reachable through its IP address.

@electrocucaracha Could you retry it with the openSUSE/Tumbleweed.x86_64 box? I have made some changes with respect to the hostname in vagrant recently.

Hey @dcermak , thanks for responding to this issue. I just tried with the latest available box  but it seems like it's not setting up the host name.
$ cat Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "opensuse/Tumbleweed.x86_64"
  config.vm.box_version = "1.0.20191110"
  config.vm.hostname = "testing"
end
$ vagrant ssh -- -t hostnamectl
   Static hostname: n/a
Transient hostname: localhost
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 08560f5137b643d9bb004bdee24ee10e
           Boot ID: 652ca5d5aa3a41c28b3c8c89c566f74d
    Virtualization: kvm
  Operating System: openSUSE Tumbleweed
       CPE OS Name: cpe:/o:opensuse:tumbleweed:20191110
            Kernel: Linux 5.3.8-1-default
      Architecture: x86-64
Connection to <IP_ADDRESS> closed.

I'm not using the latest Vagrant version available but I don't think that could be an issue.
$ vagrant version
Installed Version: 2.2.5

Victor Morales<EMAIL_ADDRESS>writes:

Hey @dcermak , thanks for responding to this issue. I just tried with the latest available box  but it seems like it's not setting up the host name.
$ cat Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "opensuse/Tumbleweed.x86_64"
  config.vm.box_version = "1.0.20191110"
  config.vm.hostname = "testing"
end
$ vagrant ssh -- -t hostnamectl
   Static hostname: n/a
Transient hostname: localhost
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 08560f5137b643d9bb004bdee24ee10e
           Boot ID: 652ca5d5aa3a41c28b3c8c89c566f74d
    Virtualization: kvm
  Operating System: openSUSE Tumbleweed
       CPE OS Name: cpe:/o:opensuse:tumbleweed:20191110
            Kernel: Linux 5.3.8-1-default
      Architecture: x86-64
Connection to <IP_ADDRESS> closed.

I'm not using the latest Vagrant version available but I don't think that could be an issue.
$ vagrant version
Installed Version: 2.2.5

That is actually the issue, because the fix didn't make it into
2.2.5. You'll have to update vagrant to 2.2.6. If you are running
openSUSE yourself, then you can get the latest version from the
Virtualization:vagrant project on https://build.opensuse.org

Ok, I have updated vagrant to 2.2.6 version and now works
$ vagrant version
Installed Version: 2.2.6
Latest Version: 2.2.6

You're running an up-to-date version of Vagrant!
$ vagrant ssh -- -t hostnamectl
   Static hostname: testing
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 3cf73258a8af48acafdd17b7b33e6c88
           Boot ID:<PHONE_NUMBER>a54e1eb5ecdeff293a7357
    Virtualization: kvm
  Operating System: openSUSE Tumbleweed
       CPE OS Name: cpe:/o:opensuse:tumbleweed:20191110
            Kernel: Linux 5.3.8-1-default
      Architecture: x86-64
Connection to <IP_ADDRESS> closed.

Maybe this can be prevented adding a require_version value like
$ cat ~/.vagrant.d/boxes/opensuse-VAGRANTSLASH-Tumbleweed.x86_64/1.0.20191110/libvirt/Vagrantfile
Vagrant.require_version ">= 2.2.6"

Vagrant.configure("2") do |config|
  config.vm.synced_folder ".", "/vagrant", type: "rsync"
  config.vm.provider :libvirt do |libvirt|
    libvirt.driver = "kvm"
  end
end

Thanks @dcermak

Victor Morales<EMAIL_ADDRESS>writes:

Ok, I have updated vagrant to 2.2.6 version and now works
$ vagrant version
Installed Version: 2.2.6
Latest Version: 2.2.6

You're running an up-to-date version of Vagrant!
$ vagrant ssh -- -t hostnamectl
   Static hostname: testing
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 3cf73258a8af48acafdd17b7b33e6c88
           Boot ID:<PHONE_NUMBER>a54e1eb5ecdeff293a7357
    Virtualization: kvm
  Operating System: openSUSE Tumbleweed
       CPE OS Name: cpe:/o:opensuse:tumbleweed:20191110
            Kernel: Linux 5.3.8-1-default
      Architecture: x86-64
Connection to <IP_ADDRESS> closed.

Maybe this can be prevented adding a require_version value like
$ cat ~/.vagrant.d/boxes/opensuse-VAGRANTSLASH-Tumbleweed.x86_64/1.0.20191110/libvirt/Vagrantfile
Vagrant.require_version ">= 2.2.6"

Vagrant.configure("2") do |config|
  config.vm.synced_folder ".", "/vagrant", type: "rsync"
  config.vm.provider :libvirt do |libvirt|
    libvirt.driver = "kvm"
  end
end

Wouldn't that break this box for everyone without the latest vagrant
version? That's imho too drastic because of a (imho) minor vagrant bug.

Thanks @dcermak

You are very much welcome. Thank you for using the openSUSE vagrant
boxes!


color incorrect

I want molokai colorscheme in my kali2.0.But the color seems incorrect.I don't know why?

It's working for me on Kali 2.0 using the default gnome-terminal, which supports 256 colors and Vim 7.4.963

Check if your terminal supports 256 colors and that TERM is set to a 256-color identifier like xterm-256color or screen-256color; see http://www.robmeerman.co.uk/unix/256colours

I fix it with your help.Thank you so much!

Try adding set termguicolors to your .vimrc.


[lit] Fix a typo causing us to not put a space in between an && and a run command.

Noticed while debugging why a test was failing locally. It was causing my test not to run with the proper env AFAIKT.

@swift-ci smoke test and merge


k8s-install-restart-pods.rst: WARNING: document isn't included in any toctree

make render-docs returns the following error:
Documentation/gettingstarted/k8s-install-restart-pods.rst: WARNING: document isn't included in any toctree

I don't see this error in master. This file as actually included by Documentation/gettingstarted/k8s-install-gke.rst.

I was probably running a non-master version. Thanks for taking a look!


Standard teardown method for removing all unpacked images

Using the unpack method, leads to the balenaOS image being extracted to a file called this.image.path
With the introduction of unique image names of unpacked images, these need to be cleaned by using a standard teardown method in place of what we use currently.

After brief discussions, we opted for the long term solution of unpacking all images to a temporary download directory located at /tmp/downloads by default. The directory will be wiped out after the tests. This was change was made in PR #433
Location: https://github.com/balena-os/leviathan/blob/88b2a5f8d4ace9b5b064d37bf4a7c08b5cc92e7d/core/config/default.js#L15


[max-line-length] ignore strings and regex in max line length

PR checklist

[X] Addresses an existing issue: fixes #3905
[X] New feature, bugfix, or enhancement

[X] Includes tests

[X] Documentation update

Overview of change:
Added functionality to ignore strings exceeding the max line length, it is by default enabled.
Added option check-strings to control if exceeding strings are skipped or treated as errors.
Added the same option for regex called check-regex.
Is there anything you'd like reviewers to focus on?

Are all "string"-cases covered?
Does this new functionality behave as expected?
Should it be split into different options like check-plain-strings and check-template-strings?

CHANGELOG.md entry:

[enhancement] Added check-strings and check-regex options to max-line-lenght rule.

Failing in testNext because of #4784

@JoshuaKGoldberg Thanks for reviewing so fast. I made all requested changes.
How about the functionality and the options? Do you think they should be more granular like check-strings and check-template-strings?

How about the functionality and the options? Do you think they should be more granular like check-strings and check-template-strings?

No, this looks fine. TSLint's being deprecated soon (#4534) and has been recommending using Prettier instead of formatting rules for quite some time. I don't think that extra logic will be worth the added complexity.

Are all "string"-cases covered?
Does this new functionality behave as expected?

Looks good! 😄 I played around with this locally a bit and it worked great.


Update redirect URI if deployment uses a custom domain

Summary of the Pull Request
Deployments with a custom domain should have that custom domain as a URI in the associated App Registration.
Fixes #3228
Info on Pull Request
updated:

src/deployment/deploy.py

Validation Steps Performed
verified deployment has correct URI on app registration in manual OneFuzz deployments

Codecov Report

Merging #3341 (bddf237) into main (62c3f07) will increase coverage by 2.33%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #3341      +/-   ##
==========================================
+ Coverage   31.83%   34.17%   +2.33%
==========================================
  Files         307      141     -166
  Lines       37358    17417   -19941
==========================================
- Hits        11894     5952    -5942
+ Misses      25464    11465   -13999

see 188 files with indirect coverage changes


Optimizing deployment process (With the new release candidate of knuu) for large-scale network tests

For the large-scale network test consisting of roughly 100 nodes, the current e2e tests require building an image for each node locally before deployment. This process is very time-consuming and slows down deployment as we need to build one image per node. knuu developers are already investigating this issue, and a new release  v0.13.3.-rc.4 is on the way to make the process faster.
In an attempt to incorporate the first release candidate from that repository, a few errors have surfaced (for more details please see https://github.com/celestiaorg/celestia-app/pull/3456). In this issue, I aim to investigate these issues, resolve them, and ultimately integrate the new release candidate  v0.13.3.-rc.4 into our network tests to enable a faster deployment process.

Cross posting from #3456
https://github.com/celestiaorg/celestia-app/pull/3456#issue-2288462562

Closes #3480
This is a test PR attempting to integrate the new release candidate v0.13.3-rc.4 of knuu and checking the e2e tests results against the updated version (primarily to use the more efficient deployment process by adding files and folders after creating the image). However, the following error occurs for the very first validator (just by merely bumping the knuu version without even swapping the order of AddFolder and Commit method calls):
Command to run:
go run ./test/e2e E2ESimple  -v

go run ./test/e2e E2ESimple  -v
test-e2e2024/05/09 13:56:44 === RUN E2ESimple
test-e2e2024/05/09 13:56:44 Running simple e2e test version 171a547
WARN[0000] The .env file does not exist, continuing without loading environment variables.
INFO[2024-05-09T13:56:44-07:00]knuu/knuu.go:175 LOG_LEVEL: info
WARN[2024-05-09T13:56:44-07:00]knuu/knuu.go:77 KNUU_NAMESPACE is deprecated. Scope overridden to: test-sanaz
INFO[2024-05-09T13:56:44-07:00]knuu/knuu.go:80 Initializing knuu with scope: test-sanaz
test-e2e2024/05/09 13:56:54 Creating testnet validators
test-e2e2024/05/09 13:56:54 Creating account
{"level":"info","name":"alice","pk":"PubKeySecp256k1{02A80BAE7BD0A69597FE3CA95073EC49AE381564C68DB8F2E8456AE0550AEE5A0B}","time":"2024-05-09T13:56:54-07:00","message":"txsim account created and added to genesis"}
test-e2e2024/05/09 13:56:54 Setting up testnets
{"level":"info","name":"val0","directory":"/var/folders/gl/8f7g64t91rxc6hsz_gj0mqfh0000gn/T/val0","time":"2024-05-09T13:56:57-07:00","message":"Creating validator's config and data directories"}
{"level":"info","name":"val1","directory":"/var/folders/gl/8f7g64t91rxc6hsz_gj0mqfh0000gn/T/val1","time":"2024-05-09T13:57:17-07:00","message":"Creating validator's config and data directories"}
{"level":"info","name":"val2","directory":"/var/folders/gl/8f7g64t91rxc6hsz_gj0mqfh0000gn/T/val2","time":"2024-05-09T13:57:34-07:00","message":"Creating validator's config and data directories"}
{"level":"info","name":"val3","directory":"/var/folders/gl/8f7g64t91rxc6hsz_gj0mqfh0000gn/T/val3","time":"2024-05-09T13:57:51-07:00","message":"Creating validator's config and data directories"}
test-e2e2024/05/09 13:58:08 Starting testnets
2024/05/09 13:59:09 failed to start testnets: node val0 failed to start: error waiting for instance 'val0-64b6f7c2' to be running: timeout while waiting for instance 'val0-64b6f7c2' to be running
exit status 1

Logs from val0-64b6f7c2:
2024-05-09 14:01:28.603
cp: can't create directory '/knuu/home/celestia/.celestia-app/data': No such file or directory
2024-05-09 14:01:28.603
cp: can't create directory '/knuu/home/celestia/.celestia-app/config': No such file or directory
2024-05-09 13:59:56.545
cp: can't create directory '/knuu/home/celestia/.celestia-app/data': No such file or directory
2024-05-09 13:59:56.545
cp: can't create directory '/knuu/home/celestia/.celestia-app/config': No such file or directory
2024-05-09 13:59:06.527
cp: can't create directory '/knuu/home/celestia/.celestia-app/data': No such file or directory
2024-05-09 13:59:06.527
cp: can't create directory '/knuu/home/celestia/.celestia-app/config': No such file or directory
2024-05-09 13:58:40.556
cp: can't create directory '/knuu/home/celestia/.celestia-app/data': No such file or directory

2024-05-09 13:58:40.556
cp: can't create directory '/knuu/home/celestia/.celestia-app/config': No such file or directory
2024-05-09 13:58:23.305
cp: can't create directory '/knuu/home/celestia/.celestia-app/data': No such file or directory
2024-05-09 13:58:23.305
cp: can't create directory '/knuu/home/celestia/.celestia-app/config': No such file or directory

After investigating with @jrmanes, it has been established that the fix for this issue is to ensure calls to Commit always precede calls to AddFolder.

There is another issue under the radar (resulting from the rc.5) and that is the port forwarding started failing. It happens in the invocation of PortForwardTCP func, with the following error message forwarding port 26657: error forwarding port after 5 retries.
Replicating the issue:

Fetch the branch in #3456
Run go run ./test/e2e E2ESimple  -v


Cyclomatic complexity computation

As discussed in #132, this will enable cyclomatic complexity to be computed and emited to Cobertura and OpenCover reports.

@NorekZ thanks for the contribution, kindly link your commits to your profile so you can be properly attributed. Thanks

@tonerdo done, unfortunately had to rewrite commit email... thanks


QAI Submission visual bug

For some reason, the view is a little strange on the QAI Submission list page.
The action column contains a json object instead of an action button.

resolved


kbpagesd: use new way to specify protocols in params

Merging without CI, since this fixes CI.  I ran lint and vet locally.


Problem with edit_event route.

While visiting the route of localhost:3000/#/edit_event the edit page appears. But when i logged out. the page is not redirect to localhost:3000/#/home

Yup there is a redirect problem

#Solved
The problem was that the edit-event.js file was hard coded with the link of an event.
I have changed it to dynamically load event's id when it got saved.


Added source selection for Denon AVR Media Player

Description:
Added source selection for Denon AVR Media Player.
Can select between TV, Tuner, Internet Radio and Favorite.
Tested with AVR2000 model.
Only modified denon.py
Related issue (if applicable): fixes #
Pull request in home-assistant.github.io with documentation (if applicable): home-assistant/home-assistant.github.io#<home-assistant.github.io PR number goes here>
Example entry for configuration.yaml (if applicable):

Checklist:
If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated in home-assistant.github.io

If the code communicates with devices, web services, or third-party tools:

[ ] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[ ] New dependencies have been added to the REQUIREMENTS variable (example).
[ ] New dependencies are only imported inside functions that use them (example).
[ ] New dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
[ ] New files were added to .coveragerc.

If the code does not interact with devices:

[ ] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[ ] Tests have been added to verify that the new code works.

Hello,
I have created this pull request 3 days ago, made some modification to pass coveralls and travis-ci checks, but the check for farcy never progress and seems stuck to "farcy — Waiting for status to be reported".
Can anyone advice?
Fyi, that my first pull request.
Thanks
Gilles

Closing Pull request due to "Farcy - Waiting for status to be reported" issue.
Will open a new pull request.

Please change file permissions back.

Don't worry about Farcy. It has hiccups when a PR gets updated.

You based your PR off the wrong branch. You should never have a PR that branches off master and also wants to merge back into master. Once you have that addressed it's ok to merge.

Hi Balloob,
Thanks for checking and your feedback.
Gilles95

All good !

@Gilles95 is it possible to configure the source? I saw it came with last update to public and i want to configure my inputs not the one that are predefined. But what i see is that the source list is hardcoded and only name and host still can be configured. Can you make the source list configurable like the name and host and maybe just pre define your source list as default.

Hello Skycryer ( @skycryer ),
I know for other players the list is dynamic but with that one I am not sure we can get it through telnet. Which source you would be interested to add? Or/and do you have an example of other player configurable that way?
Thanks

I do not know any other player with a source selection, but what should be the problem with telnet? Your code could be like it is, plus the source list can come from the confit file. The we could add the json with our source and telnet command for our players. Ich would like to have sat/cable, bd for example instead of favorites. Then I could configure what I need. I am no python coder so I do not know how it should work. But I hope you can change that.

I couldn't test those additional sources, so i didn't add them, I can add
'Sat-Cbl', 'BD': ,'USB', 'Ipod'
That will show up as addition sources to the existing list hope that is ok, anything else?
(won't be able right now to do through the conf file)

Yes that sources would be great for me but maybe not for others. I hope this commands will work with my demon. That's why I would prefer to configure that myself.
Is it not allowed to add the source list to configure like name and host?

Hello,
@skycryer , I have added the additional sources. If you could test that would be great.
https://github.com/home-assistant/home-assistant/pull/4890
There are not too many sources within the list so I guess we are fine to have them embedded in the code, going forward if the list become unmanageable you are right we should look to customise it through the configuration file. I hope that help.

If you tell me how i will test the new sources. I see there are now 2 denon component in media player folder, wich one is yours?

Actually, i saw that additional sources have been implemented already by glance- . if you wait for the next update that will be available to you.


feat(tier4_autoware_utils): add inset target point function by length

Description
Since the use can use current  insertPoint funcion only when we know the inserted point, it's not useful when we don't know the inserted point in advance.  To deal with this limitation, I added a new insertPoint function that only takes trajectory and insert point length. This function will be used insertStopPoint function in the future.
Note that insertStopPoint function has many implementations in autoware.universe now.

obstacle_cruise_planner
behavior_path_planner
motion_velocity_smoother
obstacle_stop_planner

Related links

Tests performed

Notes for reviewers

Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.
[ ] The PR has been properly tested.
[ ] The PR has been reviewed by the code owners.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.
[ ] The PR is ready for merge.

After all checkboxes are checked, anyone who has write access can merge the PR.

https://github.com/autowarefoundation/autoware.universe/issues/596

Could you show the example usage of this function or psuedo code in your insertStopPoint() ? :pray:

Almost Ok :+1:

@satoshi-ota
Example Usage
void insertStopPoint(const double lenght, T & points)
{
   idx = insertPoint(length, poitns)
   for(i=idx; i<points.size(); ++I)
   {
      points.vel = 0.0;
   }
}


fix: field extra_args recursive growth caused by Resource and Subreso…

What type of PR is this?
/kind bug
What this PR does / why we need it:
Field extra_args grow recursively caused by the to_dict method of Resource and Subresource  when decode with CacheDecoder. The cache file fragment is shown below.

the pr also fix another problem which Resource lost valid attribute singularName and shortNames when CacheDecoder decode from cache file.

/assign @fabianvf

/approve

/hold

please squash the commits

please squash the commits
Done

/lgtm
/approve


Add rustdoc for Latch.

LGTM

Good job @weidagang

Thanks, I'll keep adding docs as I'm getting familiar with the source code.


SSIM AttributeError when reduction='none'

🐛 Bug
File "/root/miniconda3/envs/ngpnew/lib/python3.8/site-packages/torchmetrics/image/ssim.py", line 146, in update
self.similarity.append(similarity)
AttributeError: 'Tensor' object has no attribute 'append'
To Reproduce
torchmetrics_ssim = torchmetrics.StructuralSimilarityIndexMeasure(data_range=1.0).cuda()
torchmetrics_ssim.reduction='none'
ssim = torchmetrics_ssim(patch_list,gt_list)#both of them with tensor shape of [4,3,128,128]
Expected behavior
The return value should be a tensor with shape = batchsize (4 in the example)
represents 4 batches ssim value
Environment
torch                          2.0.0
torchmetrics                   0.11.4
Python 3.8.17
Additional context

I update torchmetrics to torchmetrics-1.3.0.post0 and the error still exist.
File "/root/miniconda3/envs/ngpnew/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/root/miniconda3/envs/ngpnew/lib/python3.8/site-packages/torchmetrics/metric.py", line 303, in forward
self._forward_cache = self._forward_reduce_state_update(*args, **kwargs)
File "/root/miniconda3/envs/ngpnew/lib/python3.8/site-packages/torchmetrics/metric.py", line 372, in _forward_reduce_state_update
self.update(*args, **kwargs)
File "/root/miniconda3/envs/ngpnew/lib/python3.8/site-packages/torchmetrics/metric.py", line 465, in wrapped_func
update(*args, **kwargs)
File "/root/miniconda3/envs/ngpnew/lib/python3.8/site-packages/torchmetrics/image/ssim.py", line 156, in update
self.similarity.append(similarity)
AttributeError: 'Tensor' object has no attribute 'append'

Hi @Miles629, thanks for reporting this issue.
This happens because you are directly setting the reduction attribute after initialization instead of providing it as an argument.
Your code should therefore just be
import torchmetrics
import torch
patch_list = torch.randint(0,255,(4,3,128,128)).float().cuda()
gt_list = torch.randint(0,255,(4,3,128,128)).float().cuda()
torchmetrics_ssim = torchmetrics.StructuralSimilarityIndexMeasure(data_range=1.0,reduction='none').cuda()
ssim = torchmetrics_ssim(patch_list,gt_list)

The reason for this being that the states which are used doing metric calculations are initialized in __init__ and therefore setting the reduction attribute after leads to errors later.
https://github.com/Lightning-AI/torchmetrics/blob/a68455afb9041d1d32c1d6546897fee416abdc41/src/torchmetrics/image/ssim.py#L101-L116
Closing issue.


Adding boolean field in Datatable widget

I found the issue. I have added an Boolean as the new field in the attribute search fields. This gives me the java script error in the datatable.js attrval.toLowercase(). I modified the js as attrval.toString().toLowercase() but also it doesnt work. May be its an bug in widget?

Sorry for the slow response. Please check the documentation and the sample project. You should use an enumeration for a boolean search .


Cities that Can't Supply Enough Food Grow Negatively Forever

Best illustrated with a screenshot:

Rome grew to size 2 but couldn't supply enough food, so every turn the counter of how long until it grows decreases by 1.  Instead it should shrink to size 1.

Related: In civ3 the city tile has a minimum yield of 2/1/1 (is it affected by food consumption per citizen?) so it's impossible to starve below size 1.

We do have the 2/1 food/prod minimum, although commerce is 3 for some reason (I thought that was the min?  or maybe only for the capital?).  But C7 cities shouldn't be starving below size 1; in this case Rome had 3 food total for 2 citizens.
I do not know whether that 2/1/(1/3) is affected by food consumed per citizen; it might be.

Currently this can be reproduced on the 295_City_Production_Adjustment branch.  Settle in place, and by turn 100 (even with a Worker being built) Carthage will reach this state.

Interesting results: if food consumption is 1 or 2, the city tile produces the same number. If 3+, it produces 1 less than consumption, making it possible for the last population to starve. When this happens the city turns to ruins as if razed. If your last city starves, you win a conquest victory. I'm not sure what to do with that information or how faithful we want to be, but there you go.

You do indeed win a conquest victory if your last city is destroyed, at least by non-military-related means... Chieftess discovered that around 2004 with the then-new volcanoes.
Interesting observations.  So if food consumption is 5, it produces 4, i.e. it's not a hard cap at 2 but always one less?
I would reckon only city destroyed = conquest victory to be an esoteric bug of Civ3.  We could have it as an option in a "legacy rule set", but I would not prioritize it.

I don't know of anyone discovering that specific case of last-city-starvation-victory though... might be worth a C&C post for the "easter egg" nature of the discovery.

So if food consumption is 5, it produces 4, i.e. it's not a hard cap at 2 but always one less?

You know, I just realized I was observing the despotism tile penalty. So the rule is presumably yield = production and subject to the penalty if >2.

Ahhh, the infamous despotism penalty.  That makes sense.

This can be reproduced from today's Develop branch with seed 643368717; Carthage starts close enough to the target area to reproduce the issue.


Change Request: Guidelines for C - Introduction.md

On Dependable
The Basics

We must not introduce breaking changes, no exceptions.  The sentences are too vague.

Replace: Incompatibilities should never be introduced deliberately without thorough review and very strong justification.
By: Incompatibilities should never be introduced. Any change on signature or in the behavior that is incompatible with the previous behavior, shall be done introducing a new API and deprecating the previous one.

Reasoning

Breaking changes are bad behavior.
Breaking changes harm our customers and became strong arguments to customers avoid our services.
Other teams in Microsoft relies their services on our SDK, in some cases offering 30 years of guaranty over our LTS. Introduce a breaking change on our code will break the contract of these other teams. Ex: Azure Sphere.

This is a design principal change, so it needs to be approved by the whole board, and it needs to go into all the guidelines (not just C99)

I agree that we have a strong goal of maintaining compatibility. However, to a large extent, this is out of our hands as most of the operations implementation is controlled by the service we are wrapping and the service may break compatibility. So, I'm hesitant to use such strong wording when we don't control the whole implementation.
However, if the guideline allows us to produce a new, non-backwards compatible library that customers opt into allowing us to slowly deprecate older libraries, then I'm OK with the strong wording.

I think here it's more important to look at what azure as a whole guarantees, do we promise to our customers that we'll never introduce a breaking change? We want to align this with what we are telling our customers, not with what we wish were true.

We have some customers, like Azure Sphere, that has a contract with theier customers with guarantees of 30 years on the public API. On Azure IoT we inherited this guarantees and we never introduce breaking changes. If other Azure Services intend to work with theses customers, they should do the same thing.


Login process should have 'remember me' option

To reduce unnecessary visits to landing page and enhance experience of returning users

Sites are typically moving away from the remember me button, I'm not sure having this in the interface is necessary.

Do we need to be more careful, since we're dealing with medical data? For instance, if somebody was to log in on a public computer and leave without logging out, they're leaving their protected info open for others to easily access.
Perhaps we can auto-check the box.

Yes we need to be careful of this for exactly the reason Kyle pointed out.
From: Kyle Rand<EMAIL_ADDRESS>Sent: Tuesday, May 5, 2015 1:24 PM
To: myapnea/www.myapnea.org
Subject: Re: [www.myapnea.org] Login process should have 'remember me' option (#616)
Do we need to be more careful, since we're dealing with medical data? For instance, if somebody was to log in on a public computer and leave without logging out, they're leaving their protected info open for others to easily access.
Perhaps we can auto-check the box.
—
Reply to this email directly or view it on GitHubhttps://github.com/myapnea/www.myapnea.org/issues/616#issuecomment-99148617.
The information in this e-mail is intended only for the person to whom it is
addressed. If you believe this e-mail was sent to you in error and the e-mail
contains patient information, please contact the Partners Compliance HelpLine at
http://www.partners.org/complianceline . If the e-mail was sent to you in error
but does not contain patient information, please contact the sender and properly
dispose of the e-mail.

Also true, I think the current process of needing to login when you get to the site should be ok, so remove the "keep me signed in"

Here is the latest text:
The information provided on this site is not intended nor recommended as a substitute for advice from a health care professional who has evaluated you.
From: Kyle Rand<EMAIL_ADDRESS>Sent: Tuesday, May 5, 2015 1:24 PM
To: myapnea/www.myapnea.org
Subject: Re: [www.myapnea.org] Login process should have 'remember me' option (#616)
Do we need to be more careful, since we're dealing with medical data? For instance, if somebody was to log in on a public computer and leave without logging out, they're leaving their protected info open for others to easily access.
Perhaps we can auto-check the box.
—
Reply to this email directly or view it on GitHubhttps://github.com/myapnea/www.myapnea.org/issues/616#issuecomment-99148617.
The information in this e-mail is intended only for the person to whom it is
addressed. If you believe this e-mail was sent to you in error and the e-mail
contains patient information, please contact the Partners Compliance HelpLine at
http://www.partners.org/complianceline . If the e-mail was sent to you in error
but does not contain patient information, please contact the sender and properly
dispose of the e-mail.


New version: Watfaq.PowerSession version 0.1.10

Pull request has been created with WinGet Releaser v2 :rocket:
Microsoft Reviewers: Open in CodeFlow

@wingetbot waivers Add Validation-Executable-Error


torch.iinfo() support for sub byte dtypes

Add an override for torch.iinfo for sub byte dtypes so that the following doesn't happen:

@jerryzh168  should this be moved to pytorch/pytorch?

this can probably be implemented in tensor subclass I think, will need to figure out what torch.iinfo calls in the end, I'll take a look next week


Sorting DataFrame on encoded String corrupts data

Hello,
If you have a dataframe that contains strings, then you cannot sort it.  So I tried to use the label encoder and create a new column filled with the encoded labels.  If you sort on the encoded labels, the dataframe is corrupted.
Here is an browser example:
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script<EMAIL_ADDRESS>    <title>Document</title>
  </head>
  <body>
    <script>
      df = new dfd.DataFrame({
        X1: ["c", "a", "b", "c", "c", "a", "b"],
        X2: ["^", "%", "!", "#", "$", "&", "*"],
      });
      let encoder = new dfd.LabelEncoder();
      let x2 = df.X1.unique().values.sort();
      console.log(x2);
      encoder.fit(x2);
      df.addColumn({ column: "X1_encoded", value: encoder.transform(df.X1) });
      df2 = df.sort_values({ by: "X1_encoded" });

      df.print()
      df2.print()
    </script>
  </body>
</html>

The output is:

i
X1
X2
X1_encoded

0
c
^
2

1
a
%
0

2
b
!
1

3
c
#
2

4
c
$
2

5
a
&
0

6
b
*
1

i
X1
X2
X1_encoded

1
a
%
0

1
a
%
0

2
b
!
1

2
b
!
1

0
c
^
2

0
c
^
2

Notice that the rows are all the same for each level of X1_encoded.  The original rows 3-6 are lost.

It has being fixed. Update your version to 0.1.2. Thanks

I updated the link for the CDN to 0.1.2, and I got the same results.
<script<EMAIL_ADDRESS>

That's true. I was able to reproduce the error. we will fix it.

Hello,
If you have a dataframe that contains strings, then you cannot sort it. So I tried to use the label encoder and create a new column filled with the encoded labels. If you sort on the encoded labels, the dataframe is corrupted.
Here is an browser example:
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script<EMAIL_ADDRESS>    <title>Document</title>
  </head>
  <body>
    <script>
      df = new dfd.DataFrame({
        X1: ["c", "a", "b", "c", "c", "a", "b"],
        X2: ["^", "%", "!", "#", "$", "&", "*"],
      });
      let encoder = new dfd.LabelEncoder();
      let x2 = df.X1.unique().values.sort();
      console.log(x2);
      encoder.fit(x2);
      df.addColumn({ column: "X1_encoded", value: encoder.transform(df.X1) });
      df2 = df.sort_values({ by: "X1_encoded" });

      df.print()
      df2.print()
    </script>
  </body>
</html>

The output is:
i	X1	X2	X1_encoded
0	c	^	2
1	a	%	0
2	b	!	1
3	c	#	2
4	c	$	2
5	a	&	0
6	b	*	1
i	X1	X2	X1_encoded
1	a	%	0
1	a	%	0
2	b	!	1
2	b	!	1
0	c	^	2
0	c	^	2
Notice that the rows are all the same for each level of X1_encoded. The original rows 3-6 are lost.

I was also able to reproduce this error. It occurs when sorting a column with non-unique entries. The index gets duplicated. This is a minor fix @steveoni is currently on it.

The sorting is now fixed.


MUMUP-1441: 'Show all' doesn't display hint

Works:

:+1:

:+1: Curious if people will get annoyed that the popover is popping over the button on which they need to enable said feature.

Good catch, @timlevett .  Yes, that's annoying.


[BUG]: UseDotNet@2 with global.json installs incorrect SDK version

New issue checklist

[X] I searched for existing GitHub issues
[X] I read pipeline troubleshooting guide
[X] I checked how to collect logs

Task name
UseDotNet
Task version
2
Issue Description
I'm using the following task:
- task: UseDotNet@2
  displayName: "Install .NET SDK"
    inputs:
      packageType: sdk
      useGlobalJson: true

with the following global.json
{
  "sdk": {
    "version": "8.0.301",
    "rollForward": "latestFeature"
  }
}

latestFeature should install the latest feature band version, meaning 8.0.xxx. At the time of writing, this is 8.0.302.
However, it installs 8.0.301, which is not desired. I am using latestFeature to ensure I always get the latest feature bands and security patches.
Environment type (Please select at least one enviroment where you face this issue)

[ ] Self-Hosted
[X] Microsoft Hosted
[ ] VMSS Pool
[ ] Container

Azure DevOps Server type
dev.azure.com (formerly visualstudio.com)
Azure DevOps Server Version (if applicable)
No response
Operation system
Windows-Latest
Relevant log output
Found version 8.0.301 in channel 8.0 for user specified version spec: 8.0.301
Getting URL to download .NET Core sdk version: 8.0.301.
Detecting OS platform to find correct download package for the OS.
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "& 'D:\a\_tasks\UseDotNet_b0ce7256-7898-45d3-9cb5-176b752bfea6\2.238.1\externals\get-os-platform.ps1'"
Primary:win-x64
Detected platform (Primary): win-x64
Version 8.0.301 was not found in cache.
Downloading: https://download.visualstudio.microsoft.com/download/pr/7ac2d880-2d57-4008-850e-4b42b829c354/e1c92cb3b6a85f53cab6fa55b14b49e3/dotnet-sdk-8.0.301-win-x64.zip
Extracting downloaded package D:\a\_temp\7024317f-ea64-4710-afa8-0435e0f177ed.
Extracting archive
C:\Windows\system32\chcp.com 65001
Active code page: 65001

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('D:\a\_temp\7024317f-ea64-4710-afa8-0435e0f177ed', 'D:\a\_temp\9404')"

Successfully installed .NET Core sdk version 8.0.301.
Creating global tool path and pre-pending to PATH.
Finishing: Install .NET SDK

Full task logs with system.debug enabled

##[debug]adjustedPattern: 'D:\a\1\s\**/global.json'
##[debug]1 matches
##[debug]1 final results
##[debug]Agent environment resources - Disk: D:\ Available 12325.00 MB out of 14333.00 MB, Memory: Used 1972.00 MB out of 7167.00 MB, CPU: Usage 39.92%
##[debug]Finding channel 8.0 for version 8.0.301
Found version 8.0.301 in channel 8.0 for user specified version spec: 8.0.301
##[debug]Processed: ##vso[telemetry.publish area=TaskDeploymentMethod;feature=UseDotNetV2]{"userVersion":"8.0.301", "resolvedVersion":"8.0.301"}
Getting URL to download .NET Core sdk version: 8.0.301.
Detecting OS platform to find correct download package for the OS.
##[debug]which 'powershell'
##[debug]found: 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
##[debug]which 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
##[debug]found: 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
##[debug]C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe arg: -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command
##[debug]C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe arg: & 'D:\a\_tasks\UseDotNet_b0ce7256-7898-45d3-9cb5-176b752bfea6\2.238.1\externals\get-os-platform.ps1'
##[debug]exec tool: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
##[debug]arguments:
##[debug]   -NoLogo
##[debug]   -Sta
##[debug]   -NoProfile
##[debug]   -NonInteractive
##[debug]   -ExecutionPolicy
##[debug]   Unrestricted
##[debug]   -Command
##[debug]   & 'D:\a\_tasks\UseDotNet_b0ce7256-7898-45d3-9cb5-176b752bfea6\2.238.1\externals\get-os-platform.ps1'
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "& 'D:\a\_tasks\UseDotNet_b0ce7256-7898-45d3-9cb5-176b752bfea6\2.238.1\externals\get-os-platform.ps1'"
Primary:win-x64
Detected platform (Primary): win-x64
##[debug]Got download URL for platform with rid: win-x64
##[debug]isExplicit: 8.0.301
##[debug]explicit? true
Version 8.0.301 was not found in cache.
##[debug]
##[debug]Agent.Version=3.241.0
##[debug]Agent.TempDirectory=D:\a\_temp
##[debug]testing directory 'D:\a\_temp'
Downloading: https://download.visualstudio.microsoft.com/download/pr/7ac2d880-2d57-4008-850e-4b42b829c354/e1c92cb3b6a85f53cab6fa55b14b49e3/dotnet-sdk-8.0.301-win-x64.zip
##[debug]destination D:\a\_temp\b2f183bc-a169-4704-b09d-7fef1b4ff772
##[debug]downloading

Repro steps
name: $(major).$(minor)$(rev:.r)
trigger:
  branches:
    include:
    - main
  paths:
    exclude:
    - '**/*.md'

pool:
  vmImage: "windows-latest"

stages:
  - stage: build
    displayName: Build
    jobs:
      - job: Build_Code
        displayName: Build code
        steps:

          - task: UseDotNet@2
            displayName: "Install .NET SDK"
            inputs:
              packageType: sdk
              useGlobalJson: true

I've also posted a question on StackOverflow to get some more assistance: https://stackoverflow.com/questions/78667998/why-is-azure-pipelines-installing-the-wrong-net-sdk-version-according-to-globa

The SO post has been answered. Apparently ,the .NET install task just installs the version specified and doesn't care about the rollForward.

This should be considered with a bit more urgency as more and more people use the SDK in different ways. One such case is #20289 raised more recently, but part of the same main problem. I understand that the docs state:
"Use global json: This checkbox indicates that all versions from all global.json files will be used to install the sdk versions. You can set the search root path with Working Directory."
But not all projects or solutions need to be stuck on a pinned revision just to make it work on CI without additional hacks or duplication/manual config.
Each project can have its own global.json, some which may want to get the latest patches or minors.
One use case that forced us to use global.json for developers who use VisualStudio is major version releases around LTS switches or periods when projects are in the process of migrating to new LTS versions.
I have noticed two major concerns that led us to using global.json:

When VS updates its Lifecycle and a new major is pushed
When agents (particularly self-hosted agents) have multiple majors installed

In both cases, the latest major is used to build the project/solution if not locked down with a global.json file, which has historically produced us a lot of headaches when net6.0 projects were being built with net8.0 SDKs and producing runtime issues which were difficult to understand and debug.
I would suggest at least one of the solutions be considered going forward:

Have the sdk.version in global.json accept wildcards as in the task version parameter (8.x, 8.0.x, 8.0.4xx)
Use the sdk.rollForward if present to translate the sdk.version before downloading from the dotnet channel or default to the exact value in the sdk.version

To tackle the problem on CI so far, we had to use a script to do the above translation ourselves and set a pipeline variable as output to feed to the UseDotNet version task parameter. However, this is not perfect or covering all requirements for rollForward needs, particularly around solutions with some projects needing latest patches and some latest minors.


fixed DataError usage examples

The usage examples in README.md didn't indicate that all DataErrors are not top-level properties, causing a modicum of confusion for me (maybe others). Quick fix!

Thanks!


Feature/addon 34762 save validator and error messages

ADDON-34762

Added SaveValidator function used for validating custom function written in globalConfig.json
Updated basic Validation function

:tada: This PR is included in version 5.0.0-develop.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

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


MGDCTRS-1121: Update/edit service account fields in edit flow.

Fixes https://issues.redhat.com/browse/MGDCTRS-1121
This PR adds the feature for users to update/edit the Service account details in the edit flow.
Screenshot

Also updated the file names and structure in the connector details page to match with the implementation.

Just one typo that's worth fixing and also some questions. Thanks!

good catch, updated on some comments :)


Issues while evaluating your submission

We got following issues while running your code:
python test.py
2024-11-20 13:32:51.141934: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2024-11-20 13:32:51.142319: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used.
2024-11-20 13:32:51.144143: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used.
2024-11-20 13:32:51.149322: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:477] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1732131171.158225 3392193 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1732131171.160724 3392193 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
2024-11-20 13:32:51.169653: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
W0000 00:00:1732131171.859781 3392193 gpu_device.cc:2344] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
Traceback (most recent call last):
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/ops/operation.py", line 234, in from_config
    return cls(**config)
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/layers/normalization/batch_normalization.py", line 143, in __init__
    self.axis = int(axis)
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'list'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/saving/serialization_lib.py", line 718, in deserialize_keras_object
    instance = cls.from_config(inner_config)
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/ops/operation.py", line 236, in from_config
    raise TypeError(
TypeError: Error when deserializing class 'BatchNormalization' using config={'name': 'conv1_bn', 'trainable': True, 'dtype': 'float32', 'axis': [3], 'momentum': 0.99, 'epsilon': 1.001e-05, 'center': True, 'scale': True, 'beta_initializer': {'module': 'keras.initializers', 'class_name': 'Zeros', 'config': {}, 'registered_name': None}, 'gamma_initializer': {'module': 'keras.initializers', 'class_name': 'Ones', 'config': {}, 'registered_name': None}, 'moving_mean_initializer': {'module': 'keras.initializers', 'class_name': 'Zeros', 'config': {}, 'registered_name': None}, 'moving_variance_initializer': {'module': 'keras.initializers', 'class_name': 'Ones', 'config': {}, 'registered_name': None}, 'beta_regularizer': None, 'gamma_regularizer': None, 'beta_constraint': None, 'gamma_constraint': None}.

Exception encountered: int() argument must be a string, a bytes-like object or a real number, not 'list'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/test.py", line 48, in <module>
    model = tf.keras.models.load_model(weights_path)
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/saving/saving_api.py", line 196, in load_model
    return legacy_h5_format.load_model_from_hdf5(
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/legacy/saving/legacy_h5_format.py", line 133, in load_model_from_hdf5
    model = saving_utils.model_from_config(
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/legacy/saving/saving_utils.py", line 85, in model_from_config
    return serialization.deserialize_keras_object(
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/legacy/saving/serialization.py", line 495, in deserialize_keras_object
    deserialized_obj = cls.from_config(
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/models/sequential.py", line 350, in from_config
    layer = saving_utils.model_from_config(
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/legacy/saving/saving_utils.py", line 85, in model_from_config
    return serialization.deserialize_keras_object(
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/legacy/saving/serialization.py", line 495, in deserialize_keras_object
    deserialized_obj = cls.from_config(
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/models/model.py", line 526, in from_config
    return functional_from_config(
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/models/functional.py", line 499, in functional_from_config
    process_layer(layer_data)
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/models/functional.py", line 483, in process_layer
    layer = serialization_lib.deserialize_keras_object(
  File "/home/sg/AI-Club/Evaluation-Challenge/Evaluated-Submission/GavinJiangFanClub-MSU-AI-Building-Classification/venv/lib/python3.10/site-packages/keras/src/saving/serialization_lib.py", line 720, in deserialize_keras_object
    raise TypeError(
TypeError: <class 'keras.src.layers.normalization.batch_normalization.BatchNormalization'> could not be deserialized properly. Please ensure that components that are Python object instances (layers, models, etc.) returned by `get_config()` are explicitly deserialized in the model's `from_config()` method.

config={'module': 'keras.layers', 'class_name': 'BatchNormalization', 'config': {'name': 'conv1_bn', 'trainable': True, 'dtype': 'float32', 'axis': [3], 'momentum': 0.99, 'epsilon': 1.001e-05, 'center': True, 'scale': True, 'beta_initializer': {'module': 'keras.initializers', 'class_name': 'Zeros', 'config': {}, 'registered_name': None}, 'gamma_initializer': {'module': 'keras.initializers', 'class_name': 'Ones', 'config': {}, 'registered_name': None}, 'moving_mean_initializer': {'module': 'keras.initializers', 'class_name': 'Zeros', 'config': {}, 'registered_name': None}, 'moving_variance_initializer': {'module': 'keras.initializers', 'class_name': 'Ones', 'config': {}, 'registered_name': None}, 'beta_regularizer': None, 'gamma_regularizer': None, 'beta_constraint': None, 'gamma_constraint': None}, 'registered_name': None, 'build_config': {'input_shape': [None, 256, 256, 64]}, 'name': 'conv1_bn', 'inbound_nodes': [[['conv1_conv', 0, 0, {}]]]}.

Exception encountered: Error when deserializing class 'BatchNormalization' using config={'name': 'conv1_bn', 'trainable': True, 'dtype': 'float32', 'axis': [3], 'momentum': 0.99, 'epsilon': 1.001e-05, 'center': True, 'scale': True, 'beta_initializer': {'module': 'keras.initializers', 'class_name': 'Zeros', 'config': {}, 'registered_name': None}, 'gamma_initializer': {'module': 'keras.initializers', 'class_name': 'Ones', 'config': {}, 'registered_name': None}, 'moving_mean_initializer': {'module': 'keras.initializers', 'class_name': 'Zeros', 'config': {}, 'registered_name': None}, 'moving_variance_initializer': {'module': 'keras.initializers', 'class_name': 'Ones', 'config': {}, 'registered_name': None}, 'beta_regularizer': None, 'gamma_regularizer': None, 'beta_constraint': None, 'gamma_constraint': None}.

Exception encountered: int() argument must be a string, a bytes-like object or a real number, not 'list'

The code we used:
import os
import sys

import matplotlib.pyplot as plt
import seaborn as sns
import tensorflow as tf
from sklearn.metrics import (
    accuracy_score,
    confusion_matrix,
    f1_score,
    precision_score,
    recall_score,
)
from tensorflow.keras.preprocessing.image import ImageDataGenerator

class Logger:
    """Log print statements to a file and the console."""

    def __init__(self, log_file):
        self.console = sys.stdout
        self.file = open(log_file, "w")

    def write(self, message):
        self.console.write(message)
        self.file.write(message)

    def flush(self):
        self.console.flush()
        self.file.flush()

# Define paths
test_dir = "../private-dataset"  # Test dataset directory
weights_path = "model_epoch_17.h5"  # Path to model weights
output_dir = "evaluation_results"  # Directory for saving results

# Create the output directory if it doesn't exist
os.makedirs(output_dir, exist_ok=True)

# Set up logging
log_file = "analysis.txt"
sys.stdout = Logger(log_file)

# Load the trained model
if not os.path.exists(weights_path):
    raise FileNotFoundError(f"Model weights file not found at: {weights_path}")
model = tf.keras.models.load_model(weights_path)

print(f"Model loaded from {weights_path}")

# Define image dimensions and batch size
img_height, img_width = 224, 224  # Adjust based on your model input
batch_size = 16

# Load the test dataset
if not os.path.exists(test_dir):
    raise FileNotFoundError(f"Test dataset directory not found at: {test_dir}")
test_datagen = ImageDataGenerator(rescale=1.0 / 255)
test_generator = test_datagen.flow_from_directory(
    test_dir,
    target_size=(img_height, img_width),
    batch_size=batch_size,
    class_mode="categorical",
    shuffle=False,  # Important for confusion matrix
)

# Make predictions on the test set
predictions = model.predict(test_generator)
predicted_classes = tf.argmax(predictions, axis=1).numpy()

# Get true classes
true_classes = test_generator.classes
class_labels = list(test_generator.class_indices.keys())

# Calculate metrics
accuracy = accuracy_score(true_classes, predicted_classes)
precision = precision_score(
    true_classes, predicted_classes, average="weighted", zero_division=0
)
recall = recall_score(
    true_classes, predicted_classes, average="weighted", zero_division=0
)
f1 = f1_score(true_classes, predicted_classes, average="weighted", zero_division=0)

# Print metrics
print(f"Accuracy: {accuracy:.4f}")
print(f"Precision: {precision:.4f}")
print(f"Recall: {recall:.4f}")
print(f"F1-Score: {f1:.4f}")

# Save metrics to a file
metrics_file = os.path.join(output_dir, "metrics.txt")
with open(metrics_file, "w") as f:
    f.write(f"Accuracy: {accuracy:.4f}\n")
    f.write(f"Precision: {precision:.4f}\n")
    f.write(f"Recall: {recall:.4f}\n")
    f.write(f"F1-Score: {f1:.4f}\n")
print(f"Metrics saved to {metrics_file}")

# Generate confusion matrix
cm = confusion_matrix(true_classes, predicted_classes)

# Plot confusion matrix
plt.figure(figsize=(10, 8))
sns.heatmap(
    cm,
    annot=True,
    fmt="d",
    cmap="Blues",
    xticklabels=class_labels,
    yticklabels=class_labels,
)
plt.xlabel("Predicted")
plt.ylabel("True")
plt.title("Confusion Matrix")

# Save confusion matrix to file
confusion_matrix_file = os.path.join(output_dir, "confusion_matrix.png")
plt.savefig(confusion_matrix_file, dpi=300, bbox_inches="tight")
plt.close()
print(f"Confusion matrix saved to {confusion_matrix_file}")

requirements.txt:
tensorflow
scikit-learn
seaborn
matplotlib

The complete project structure looks like this:

├── evaluation_results/          # Output folder for evaluation results
│   ├── analysis.txt             # Logs and detailed evaluation output
│
├── model_epoch_17.h5  # model weights
├── venv/                        # Python virtual environment
├── ../private_dataset/          # Private dataset with building images
│   ├── Butler Hall/             # Subfolder for Butler Hall images
│   ├── Carpenter Hall/          # Subfolder for Carpenter Hall images
│   ├── Lee Hall/                # Subfolder for Lee Hall images
│   ├── McCain Hall/             # Subfolder for McCain Hall images
│   ├── McCool Hall/             # Subfolder for McCool Hall images
│   ├── Old Main/                # Subfolder for Old Main images
│   ├── Simrall Hall/            # Subfolder for Simrall Hall images
│   ├── Student Union/           # Subfolder for Student Union images
│   ├── Swalm Hall/              # Subfolder for Swalm Hall images
│   ├── Walker Hall/             # Subfolder for Walker Hall images
├── test.py # evaluation script

We will not accept your submission if you don't create an evaluation script in Python and mention requirements.txt in your Repo.
Which we already did for you. Review the bug in your code and try to resolve it ASAP.

Hey, I looked through our code and we had already did both for the evaluation metrics as we printed out the confusion matrix. Also I'm not sure if you had read the repo carefully but we stated to make sure to run the file within Collab if running it locally does not work which from the error result that you had gotten, it is very likely that you ran the evaluation script on python. Also we did also create our evaluation script which is within the repo called Test_Model.ipynb so there was no need to create your own evaluation script in python. So I don't know if there was just a misreading error but we did have our evaluation script called Test_Model.ipynb along with our requirements.txt stated in the repo. I will change the evaluation script to output the folder with the results instead of just a confusion matrix. That is all there is to be changed within the repo as we already have out evaluation script in python within the repo called Test_model.ipynb and the requirements.txt in the repo.
├── evaluation_results/          # Output folder for evaluation results
│   ├── analysis.txt             # Logs and detailed evaluation output
│
├── model_epoch_17.h5  # model weights
├── ../dataset/          # Private dataset with building images
│   ├── Butler Hall/             # Subfolder for Butler Hall images
│   ├── Carpenter Hall/          # Subfolder for Carpenter Hall images
│   ├── Lee Hall/                # Subfolder for Lee Hall images
│   ├── McCain Hall/             # Subfolder for McCain Hall images
│   ├── McCool Hall/             # Subfolder for McCool Hall images
│   ├── Old Main/                # Subfolder for Old Main images
│   ├── Simrall Hall/            # Subfolder for Simrall Hall images
│   ├── Student Union/           # Subfolder for Student Union images
│   ├── Swalm Hall/              # Subfolder for Swalm Hall images
│   ├── Walker Hall/             # Subfolder for Walker Hall images
├── Test_Model.ipynb # evaluation script```


Onboarding Widget

Often there are certain steps required to get up and running contributing to a project. Marquee can help by providing a task list of specific things to do when someone opens project.
Requirements:

per default a user sees an empty list with a "Call for Action" to set up a requirement
adding a requirements contains a label (e.g. "Node.js Installed"), a description (e.g. go to website x to install Node.js) and a validation command (e.g. which node)

Hey @christian-bromann, do we have any sort of (low-fidelity) mock of how this could look like?
Also, when creating this list in a widget, where to we save it to? I imagine you want to keep that list in the repo for the next person cloning and opening a given project.

do we have any sort of (low-fidelity) mock of how this could look like?

I think we can hold off on this one for a moment as it is part of an internal initiative.
Closing.


Detect & exclude unsupported Terraform versions

Q
A

🐛 Bug fix?
yes

🚀 New feature?
no

⚠ Deprecations?
yes

❌ BC Break
no

🔗 Related issues
#340

❓ Documentation
yes

Description
The goal of this patch is to warn the user about the state they provided in case it's from an unsupported version of Terraform.

It is expected that running driftctl against a terraform state generated by an unsupported version should not be possible and be reported clearly to the user.
In the case of multiple Terraform versions inside a set of tfstates, they should be ignored so at least some execution can happen. This is probably to combine with the future state exclusion feature.

Implementation
I used go-version by hashicorp to perform the constraint check on Terraform version state. After parsing the state, the version is checked against the constraint (>= 0.11). If the constraint is satisfied, the scan can continue as usual. If it doesn't, a warning is displayed to tell the user this particular state was generated using an unsupported version of Terraform. The scan continue and the ignored state appears as drifted with 0% coverage.
The version constraints are stored in a variable called UnsupportedVersionConstraints :
var (
	UnsupportedVersionConstraints = []string{"<0.11.0", ">=0.13, <0.14"}
)

Example :
$ driftctl scan --from tfstate://terraform1.tfstate
WARNING: terraform1.tfstate was generated using Terraform 0.10.8 which is currently not supported by driftctl
Please read documentation at https://docs.driftctl.com/0.7.0/limitations
Scanning resources: ⣟ (36)
Found unmanaged resources:
  aws_ebs_volume:
    - vol-01bd44304179ba354
    - vol-00fe1a5a8af4c6ef5
  aws_s3_bucket:
    -<PHONE_NUMBER>1983
    -<PHONE_NUMBER>1982
    - thisisatestbucket1298
    - thisisatestbucket1398
  aws_instance:
    - i-0ca7afc4ff96d6c4b
Found 7 resource(s)
 - 0% coverage
 - 0 covered by IaC
 - 7 not covered by IaC
 - 0 deleted on cloud provider
 - 0/0 drifted from IaC
exit status 1

About constraints
I still need to figure out which version of Terraform is supported or not. But as stated in #340, we won't support versions below 0.11. So for now, the unsupported constraints are <0.11. This patch assume we can have multiple constraints in the future, so it's possible to add a version constraint at any moment :

<0.11, =0.13.2 Exclude versions below 0.11 and 0.13.2
=0.9, =0.10 Exclude versions 0.9.0 and 0.10.0
<0.11, >=0.13, <0.14 Exclude versions below 0.11 and all 0.13

EDIT: I tested with TF v0.11, v0.14.8, & 0.14.9 and it does not appear to have incompatible behavior. May be we need more tests to ensure we fully support versions >=0.11.
Known limitations
Although it's simple to add a constraint at any time, it's important to note the limitation about this feature. If we excludes versions below 0.11, the constraint will looks like this : <0.11. But we'll not be able to include any version below 0.11. Also, if we decide to exclude a specific minor version, it's possible to do so using this syntax : >=0.13, <0.14

To rebase on v0.8 and change target branch


NoDynamicNameRule: added failing IIFE test-case

a immediately invoked function expression (IIFE) should not be considered a 'dynamic name'.

Thanks! Could you fix it too so I can merge it?

@TomasVotruba fix included, good to go.

This is great, thank you :+1:


Support ANSI intervals to/from Parquet

Closes #4145
SPARK-36825 added the read and write functions for interval data types(YearMonthIntervalType and DayTimeIntervalType).
Support ANSI intervals to/from Parquet.
Pyspark 330 only contains DayTimeIntervalType in 'pyspark.sql.types', not has YearMonthIntervalType, so python tests only tested DayTimeIntervalType.
Filed #4811 for the following features.
Signed-off-by: Chong Gao<EMAIL_ADDRESS>

build

Is there no special metadata for these types?  Are they really just stored as ints and longs and Spark can understand that?

Cudf supports Timestamp + Duration, no need to convert timestamp to long by bitCastTo again.
I've updated GpuTimeAdd by using Cudf operator +(Timestamp, Duration).
Now the DayTimeInterval is stored as long internally:
    Spark Parquet saves it as long, and Spark saves it as long internally, this can keep consistent.
    And we can't benifit from storing it as Cudf Duration.
    If stores as Duration, we should bitCastTo the long cv to Duration cv after reading the Parquet long column.
        For a sql "select timestamp_column + interval_column",
        the flow is:
            parquet read interval_column as long
            bitCastTo long to Duration // this can be added in GpuParquetScan by updating the evolveSchema code
            compute (Timestamp + Duration) // in GpuDateAdd
    If stores as long
        the flow is amolst the same, just the bitCastTo is in GpuDateAdd
            parquet read interval_column as long
            bitCastTo long to Duration // this is in GpuDateAdd
            compute (Timestamp + Duration) // in GpuDateAdd
YEAR-MONTH interval is calculated by the formula:  -/+ (12 * YEAR + MONTH)
YEAR-MONTH interval is the number of months, the "interval 01-01 year to month" is stored as 13.
The Cudf does not support Duration month, Add month is not simple in Java code, seems Cudf does not suport.
So removed the support YEAR-MONTH interval.

build

build

https://github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DayTimeIntervalType.scala#L45toL51
case class DayTimeIntervalType(startField: Byte, endField: Byte) extends AnsiIntervalType {
  /**
   * Internally, values of day-time intervals are stored in `Long` values as amount of time in terms
   * of microseconds that are calculated by the formula:
   *   -/+ (24*60*60 * DAY + 60*60 * HOUR + 60 * MINUTE + SECOND) * 1000000
   */
  private[sql] type InternalType = Long

https://github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/types/YearMonthIntervalType.scala#L43toL49
case class YearMonthIntervalType(startField: Byte, endField: Byte) extends AnsiIntervalType {
  /**
   * Internally, values of year-month intervals are stored in `Int` values as amount of months
   * that are calculated by the formula:
   *   -/+ (12 * YEAR + MONTH)
   */
  private[sql] type InternalType = Int

build

build

build failed, seems it's env issue.
Exiting with code 1 - FAILURE_BLACKDUCK_CONNECTIVITY
{'[pipeline][oss][NVIDIA/spark-rapids] ......

build

build

build

build

build

build

build

@revans2  Help review again.

build


feat: improve api key

:tada: This PR is included in version 1.16.0 :tada:
The release is available on:

GitHub release
v1.16.0

Your semantic-release bot :package::rocket:


Smaller logo

shouldn't an svg be scalable to any size? Why make it smaller?

Because an SVG still defines a viewport size, which is the default display size used when embedding the image (like in our README) or when viewing it in an image viewer. But I also made some slight adjustments to the logo, so let's just use the scaled down version.


Improved lungs segmentation algorithm

Description
The threshold method consists of 3 steps:
1) removal large airways from the lung;
2) lung segmentation;
3) morphological smoothing.
Reference to official issue
I have solved issue #138, there it was proposed to improve lung segmentation.
Motivation and Context
The algorithm includs errors in lung segmentation, which often occur at the borders of the lungs, when the contrast between the lung parenchyma and the surrounding tissue is low due to pathologic abnormalities that show up as dense regions. In normal lung anatomy, the shape of the costal lung surface is convex.
When an error occurs at the costal border, the surface is typically not convex anymore.
This problem was fixed with method, which was described in issue #138. Also bronches and trachea were indicated and segmented in this method.
How Has This Been Tested?
I've tested the algorithm over the cases with nodules and compare output with basic segmentation algorithm.
For check:
first_patient = load_scan(INPUT_FOLDER)
first_patient_pixels = get_pixels_hu(first_patient)
lungs, trachea = detection_lung_error(first_patient_pixels)

Screenshots :
You can see that the algorithm includes pathologies, whereas the ventricle isn't included in lungs area:

Segmented lungs and trachea (bronchi) in frontal projection:

CLA

[x] I have signed the CLA; if other committers are in the commit history, they have signed the CLA as well

Good stuff! Would it be possible to provide a test for processing a LIDC scan and one for processing a LUNA scan? This would also make it easier to understand how to use the provided methods while an explanation in a pull request is harder to find than a test in the code base IMO :)

@WGierke , thank you for your comment!
I will try to provide all the necessary tests this weekend after some changes in the code base

Nice work! Along with @WGierke suggestions, would you mind providing a test case that shows the segmentation error before this PR and how it's fixed after? Thanks!

@reubano , thank you for your comment and remarks!
I will provide everything as soon as possible :)

No prob. One last comment: for the numbers in your functions, could you make them upper case constants placed at the top of the file? That will make it easier to figure out what they mean and where the values came from. And then you could also allow users to override those values in specific functions. Like so:
MIN_LUNG_HU = -1010

def grow_lungs(patient, seeds, min_lung_hu=MIN_LUNG_HU):
    ...
    lungs_seeds = region_growing(patient.copy(), lungs_seeds, min_lung_hu, threshold)
    ...

I'd love to get this merged over the next few days — do we have a list of blockers/next steps? I see a whole bunch of reviewed comments, etc. that have been addressed but to get a synopsis here would be superb and I'm sure would lead to this landing sooner than before.

Initially the separation of the lungs was implemented the method, which chose the search area on a two-dimensional slice. Two-dimensional morphological erosion with a diamond-shaped nucleus was used for separation and successively was extended to other slices. It wasn't work perfect for some cases.

In order to avoid such situations, it was decided to apply the method was described in this preprint by @vessemer. The main idea of the algorithm is to select reference binary image of the lungs in a one slice which further will be propagated over all adjacent slices, that have not yet been visited, by comparison of its complements. This process will be repeated, taking adjacent slices from previous step, as new reference images until lungs are not separated.

@reubano, @WGierke

@reubano, @lamby, all rebased and squashed, can you take a look, please?

LGTM! @reubano ?


Code inside mod.rs

This issue is more on less related to [#1991].
frb does not like mod.rs files with some code and macro inside them.
I had to remove this code from those files and create a new module with that code.
The problem is that I had also to modify the rust code to use this new module instead of the original mod.rs.

Looks similar to https://github.com/fzyzcjy/flutter_rust_bridge/issues/1991 (and please see reply there)


KYLIN-4846 Set the related query id to sparder job description

Proposed changes
Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue.
Types of changes
What types of changes does your code introduce to Kylin?
Put an x in the boxes that apply

[ ] Bugfix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation Update (if none of the other choices apply)

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

[x] I have create an issue on Kylin's jira, and have described the bug/feature there in detail
[x] Commit messages in my PR start with the related jira ID, like "KYLIN-0000 Make Kylin project open-source"
[x] Compiling and unit tests pass locally with my changes
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] If this change need a document change, I will prepare another pr against the document branch
[ ] Any dependent changes have been merged

Further comments
If this is a relatively large or complex change, kick off the discussion at user@kylin or dev@kylin by explaining why you chose the solution you did and what alternatives you considered, etc...

After this patch, the query job description is shown as below:

Codecov Report

:exclamation: No coverage uploaded for pull request base (kylin-on-parquet-v2@49dcdd2). Click here to learn what that means.
The diff coverage is n/a.

@@                  Coverage Diff                   @@
##             kylin-on-parquet-v2    #1520   +/-   ##
======================================================
  Coverage                       ?   24.31%
  Complexity                     ?     4619
======================================================
  Files                          ?     1138
  Lines                          ?    64431
  Branches                       ?     9511
======================================================
  Hits                           ?    15664
  Misses                         ?    47131
  Partials                       ?     1636

Continue to review full report at Codecov.

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


stress-ng: 0.18.05 -> 0.18.06

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/ColinIanKing/stress-ng/releases.
meta.description for stress-ng is: Stress test a computer system
meta.homepage for stress-ng is: https://github.com/ColinIanKing/stress-ng
meta.changelog for stress-ng is: https://github.com/ColinIanKing/stress-ng/raw/V0.18.06/debian/changelog
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.18.06 with grep in /nix/store/67myxll9h54m946hzwm55bn7skinrlkm-stress-ng-0.18.06
found 0.18.06 in filename of file in /nix/store/67myxll9h54m946hzwm55bn7skinrlkm-stress-ng-0.18.06

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

stress-ng

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/67myxll9h54m946hzwm55bn7skinrlkm-stress-ng-0.18.06 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A stress-ng https://github.com/r-ryantm/nixpkgs/archive/60472fedcc421420c59adf8a67ca138ca438821e.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/60472fedcc421420c59adf8a67ca138ca438821e#stress-ng

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/67myxll9h54m946hzwm55bn7skinrlkm-stress-ng-0.18.06
ls -la /nix/store/67myxll9h54m946hzwm55bn7skinrlkm-stress-ng-0.18.06/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review

x86_64-linux

:white_check_mark: 1 package built:

stress-ng

Maintainer pings
cc @c0bw3b for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 353515

aarch64-darwin

:white_check_mark: 1 package built:

stress-ng

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 353515

x86_64-linux

:white_check_mark: 1 package built:

stress-ng

aarch64-darwin

:white_check_mark: 1 package built:

stress-ng