exp: make finch work on windows with wsl2

Issue #, if available:
Description of changes:

translation logic to wsl paths
persistent disk for windows
CI/CD (workflows to run CI on every PR on windows runners, MSI builder, Windows release automation)

Testing done:
Yes

[X] I've reviewed the guidance in CONTRIBUTING.md

License Acceptance
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Massive kudos to the people that worked on this, thanks for putting it all together! What's expected of the reviewers for this PR? I assume all commits in this have already been reviewed, right? Is there any areas of focus we should look at? Given the nature of this PR, a more comprehensive description could be useful during the review as well. Thanks!

I assume all commits in this have already been reviewed, right?

Yeah, every individual commit has already been reviewed on the windev branch. I guess this is more of a sanity check review. What I would focus on is anything that looks like it might break or change how the existing macOS version works.

Given the nature of this PR, a more comprehensive description could be useful during the review as well. Thanks!

This is good point. I linked the 4 major changes in the PR with PRs that were reviewed on the windev branch. They have more detailed descriptions in these individual PRs.

Decided to merge commit instead of rebase since the diff was so extensive.
There's a few missed merge changes (due to file name changes/splits) which are causing the windows unit tests to fail, and the windows e2e runner looks like its having issues. Should have things back up and running by tomorrow.

Seems like the recently added test that's failing for the build --ssh command requires a more involved fix, and the prioritization of how many users actually use Windows's optional OpenSSH tooling is not really known right now.
I've documented the reasons why the test is failing, and some future work to fix it on Windows, in . I'm going to make a PR to common-tests to disable it on Windows until a workaround is implemented.


firefox: 90.0.2 -> 91.0; firefox-esr: 78.12.0esr -> 91.0esr; firefox-bin: 90.0.2 -> 91.0

Motivation for this change
Bumped, but not tested. My builds are running just now locally.
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

@taku0 Tried to use the firefox-bin updateScript but failed:
❯ nix-shell maintainers/scripts/update.nix --argstr package firefox-bin-unwrapped
error: anonymous function at /home/hexa/git/nixos/master/pkgs/applications/networking/browsers/firefox-bin/update.nix:1:1 called without required argument 'name', at /home/hexa/git/nixos/master/pkgs/applications/networking/browsers/firefox-bin/default.nix:189:27
(use '--show-trace' to show detailed location information)

@mweinelt Thank you for reporting.  Fixed #133246.

Tested and works, thank you!

[x] nixosTests.firefox

gUM testpage can't access camera/microphone/screenshare on sway/pipewire. Guess I'll have to reboot in a bit to rule out side effects.
Uncaught (in promise) ReferenceError: can't access lexical declaration 'fps_number' before initialization
    startMedia http://mozilla.github.io/webrtc-landing/gum_test.html:207
    startScreen http://mozilla.github.io/webrtc-landing/gum_test.html:137
    onclick http://mozilla.github.io/webrtc-landing/gum_test.html:1
gum_test.html:207:25
    startMedia http://mozilla.github.io/webrtc-landing/gum_test.html:245
    startScreen http://mozilla.github.io/webrtc-landing/gum_test.html:137
    onclick http://mozilla.github.io/webrtc-landing/gum_test.html:1

Also for some YouTube videos that work on Firefox 90.0.2 I now get "Your browser can't play this video", e.g. https://www.youtube.com/watch?v=YsBe9BFIjBs

Detail: I wonder if we'd better wait with ESR, say for one release cycle (or even have both ESRs for some time).  Either way, ESR 78 probably ends life significantly sooner than NixOS 21.05.

I guess we have to cross that bridge in 21.05, since the last 78esr release will be on 2021-10-05 and we'll likely support 21.05 until the end of 2021.

Is it intended that we change 78.x to build with icu69 as well?

Good question. Happy accident, though it still seems to work. I ran the nixosTests.firefox-esr-78 test, but didn't do any further testing.

error: aggregate job 'tested' references non-existent job 'nixos.tests.firefox-esr.x86_64-linux'

https://github.com/NixOS/nixpkgs/pull/133388


Not able to use multiple GPUs with ray tune...

Solved. Forgot ray.init etc, see https://github.com/ray-project/ray/issues/19942#issuecomment-1010009370


Redesign the text search bar

Is your feature request related to a problem? Please describe.
To search for the required text, you need to do the same operation several times. This is slightly inconvenient.
Describe the solution you'd like
Make a text search bar at the bottom before the tab symbols, etc.
Something like this

Describe alternatives you've considered
Something similar is implemented in the text editor of MT Manager and Visual Code Space

I forgot to add that in order to close this panel you just need to go back


Enable standard library assertions in CI

Addresses #3098. I've chosen flags that enable unexpensive assertions (e.g. assert when dereferencing a smart pointer or std::optional).

Can't we determine which definition is needed with our CMake scripts depending on the platform and compiler? Then there could be a single option instead of three.

Can't we determine which definition is needed with our CMake scripts depending on the platform and compiler? Then there could be a single option instead of three.

We'd have to detect the standard library being used, not the platform or compiler. You could e.g. compile with GCC on a MacOS using either libstdc++ or libc++.
I'm not sure how to reliably detect the standard library with CMake
Alternatively, we could just define all of them at once with a generic SFML_ENABLE_STDLIB_ASSERTIONS option. It doesn't hurt to have unused defines.
What do you think? @eXpl0it3r

BTW, here's an example of an assertion that fires after intentionally adding a bad std::optional dereference in sf::Image as a test:
C:/msys64/ucrt64/include/c++/14.1.0/optional:475: _Tp &std::_Optional_base_impl<sf::Image, std::_Optional_base<sf::Image>>::_M_get() [_Tp = sf::Image, _Dp = std::_Optional_base<sf::Image>]: Assertion 'this->_M_is_engaged()' failed.

CMake magic is @ChrisThrasher's specialty 😄
Not sure what CMake offers for detection.
But I'm certain he'd also prefer one option (if any at all).

CMake magic is @ChrisThrasher's specialty 😄

😮
Combine iso646 with CMake's try_compile to see what headers get consumed.

Can't we determine which definition is needed with our CMake scripts depending on the platform and compiler? Then there could be a single option instead of three.

We'd have to detect the standard library being used, not the platform or compiler. You could e.g. compile with GCC on a MacOS using either libstdc++ or libc++.
I'm not sure how to reliably detect the standard library with CMake
Alternatively, we could just define all of them at once with a generic SFML_ENABLE_STDLIB_ASSERTIONS option. It doesn't hurt to have unused defines.
Basically, this:
option(SFML_ENABLE_STDLIB_ASSERTIONS "Enable standard library assertions" OFF)
if(SFML_ENABLE_STDLIB_ASSERTIONS)
    add_definitions(-D_GLIBCXX_ASSERTIONS=1) # see https://gcc.gnu.org/wiki/LibstdcxxDebugMode
    add_definitions(-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE) # see https://libcxx.llvm.org/Hardening.html
    add_definitions(-D_DEBUG=1) # see https://learn.microsoft.com/en-us/cpp/c-runtime-library/debug?view=msvc-170
endif()

What do you think? @eXpl0it3r

I'd much prefer one CMake option that enables all 3 at once and then amend our dev preset to enable this by default so that the CI scripts remain unchanged.

I'd much prefer one CMake option that enables all 3 at once and then amend our dev preset to enable this single option so that the CI scripts remain unchanged.

@ChrisThrasher
This is a much much better solution! I've made the change you requested. For now, I removed _DEBUG for MSVC as it was causing linker errors, and I need to explore the consequences of enabling the full-fledged MSVC debug mode prior to doing so.
I would still recommend accepting this change for libstdc++ and libc++ to benefit from the assertions ASAP, and add MSVC support (if reasonable) in a later PR.

SFMLBuildMaster: Build this please.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall first build on feature/enable_libstdc++_assertions_for_tests at 56.22%

Totals

Change from base Build<PHONE_NUMBER>:
56.2%

Covered Lines:
11670

Relevant Lines:
19694

💛  - Coveralls

SFMLBuildMaster: Build this please.


Fix some typos in upgrading_version_7.adoc

Contributor Checklist

[x] Review Contribution Guidelines
[x] Make sure that all commits are signed off to indicate that you agree to the terms of Developer Certificate of Origin.
n/a Make sure all contributed code can be distributed under the terms of the Apache License 2.0, e.g. the code was written by yourself or the original code is licensed under a license compatible to Apache License 2.0.
[x] Check "Allow edit from maintainers" option in pull request so that additional changes can be pushed by Gradle team
n/a Provide integration tests (under <subproject>/src/integTest) to verify changes from a user perspective
n/a Provide unit tests (under <subproject>/src/test) to verify logic
[x] Update User Guide, DSL Reference, and Javadoc for public-facing changes
n/a Ensure that tests pass sanity check: ./gradlew sanityCheck
n/a Ensure that tests pass locally: ./gradlew <changed-subproject>:quickTest

Gradle Core Team Checklist

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation
[ ] Recognize contributor in release notes

@bot-gradle test and merge

No milestone for this PR. Please set a milestone and retry.

@bot-gradle test and merge

OK, I've already triggered a build for you.

OK, I've already triggered a build for you.


SelectDropdown + AutoDropdown

SelectDropdown + AutoDropdown

This update adds 2 new dropdown components, AutoDropdown and SelectDropdown.
AutoDropdown renders a filterable dropdown (aka. ComboBox) based on a specific item limit (default is 15). This replicates the dropdown experience we have in the main app, and is essentially the successor to HSDropdown.
SelectDropdown (as seen in the GIF above) renders an AutoDropdown but with a Select trigger.
Under the hood, these components render...
AutoDropdown > ComboBox > DropdownV2

All the functionality such as keyboard support, disabled/dividers, groups, etc... still available to AutoDropdown and SelectDropdown.
Lastly, minor UI updates were made for the SelectArrows, allowing us to remove some .scss code 🙌
Netlify linky:
https://deploy-preview-425--hsds-react.netlify.com/?selectedKind=SelectDropdown&selectedStory=Default&full=0&addons=1&stories=1&panelRight=0&addonPanel=storybooks%2Fstorybook-addon-knobs

I'm gonna merge this up 😊

🎉


Unreliable DMA

I'm using the pre-configured SIFT Workstation install and after I do some APT-GET updates/upgrades I get the "unreliable DMA" errors.  System still boots.  Did some research on the error but nothing so far to get rid of it.   I will try to create a SIFT manually this week to see if I still have the issue.

This sounds like a problem outside the context of SIFT. Like an issue with hardware, or virtualization platform on your system.


WIP: Configurable load balancer attributes (access logging and read timeout)

Fixes #90 (access logging) and #79 (read timeout)

@joshrosso how should the controller deal with configuration items there were set outside of the controller?  Looking at the way the reconcile works if someone setup access logging outside the scope of the controller and did not add in the matching annotations access logging would be disabled.  Is this something we should try to handle in code or just add it as a warning in the changelog?

@antoniobeyah Our approach thus far has been that all ALBs the controller manages always uses the desired state (derived from ingress manifests) as what we'll eventually get to. Meaning, any configuration options made outside of the ALB (ie AWS) should be overwritten by the controller in the next reconcile.
Let me know if this answers your Q.

Hi,
Because we needed to setup the ALB access log, I finished the work started by @antoniobeyah in this PR. Since it is not possible to contribute directly to this PR, I've open a new one: #279 .
I've tested the feature on a live k8s cluster.
Please let me know if there's anything I need to do.
Thanks
Brice


zfs: 2.2.0 -> 2.2.1

Description of changes
https://github.com/openzfs/zfs/releases/tag/zfs-2.2.1
Notably:

We recommend that anyone running zfs-2.2.0 to please update to this release. Gentoo users have identified a block cloning bug (https://github.com/openzfs/zfs/issues/15526) that can result in data corruption in zfs-2.2.0. To workaround this, zfs-2.2.1 disables block cloning by default (see https://github.com/openzfs/zfs/pull/15529 and https://github.com/openzfs/zfs/commit/479dca51c66a731e637bd2d4f9bba01a05f9ac9f). Users running the 2.1.x branch or older are unaffected, as block cloning is a 2.2.x-only feature.

Things done
nix-build -A zfs.passthru.tests, and am also running with this patch on x86_64-linux.

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

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

Result of nixpkgs-review pr 269097 run on x86_64-linux 1

2 packages marked as broken and skipped:

libvmi
rubyPackages_2_7.ruby-libvirt

91 packages built:

appvm
booster
ceph (ceph-dev)
ceph-client
ceph-csi
ceph.dev (ceph-dev.dev)
ceph.doc (ceph-dev.doc)
libceph (ceph.lib ,libceph.dev ,libceph.doc ,libceph.lib ,libceph.man)
ceph.man (ceph-dev.man)
check_zfs
collectd
diffoscope
diffoscope.dist
diffoscope.man
docker-machine-kvm
docker-machine-kvm2
easysnap
gnome.gnome-boxes
guestfs-tools
haskellPackages.libvirt-hs
haskellPackages.libvirt-hs.doc
libguestfs
librenms
libvirt
libvirt-glib
libvirt-glib.dev
libvirt-glib.devdoc
linuxKernel.packages.linux_4_19.zfs (linuxKernel.packages.linux_4_19.zfsStable)
linuxPackages_4_19_hardened.zfs (linuxKernel.packages.linux_4_19_hardened.zfs ,linuxPackages_4_19_hardened.zfsStable)
linuxKernel.packages.linux_5_10.zfs (linuxKernel.packages.linux_5_10.zfsStable)
linuxPackages_5_10_hardened.zfs (linuxKernel.packages.linux_5_10_hardened.zfs ,linuxPackages_5_10_hardened.zfsStable)
linuxKernel.packages.linux_5_15.zfs (linuxKernel.packages.linux_5_15.zfsStable)
linuxPackages_5_15_hardened.zfs (linuxKernel.packages.linux_5_15_hardened.zfs ,linuxPackages_5_15_hardened.zfsStable)
linuxKernel.packages.linux_5_4.zfs (linuxKernel.packages.linux_5_4.zfsStable)
linuxPackages_5_4_hardened.zfs (linuxKernel.packages.linux_5_4_hardened.zfs ,linuxPackages_5_4_hardened.zfsStable)
linuxPackages.zfs (linuxKernel.packages.linux_6_1.zfs ,linuxPackages.zfsStable)
linuxPackages_hardened.zfs (linuxPackages_6_1_hardened.zfs ,linuxPackages_hardened.zfsStable)
linuxKernel.packages.linux_6_5.zfs (linuxKernel.packages.linux_6_5.zfsStable)
linuxPackages_6_5_hardened.zfs (linuxKernel.packages.linux_6_5_hardened.zfs ,linuxPackages_6_5_hardened.zfsStable)
linuxPackages_latest.zfs (linuxKernel.packages.linux_6_6.zfs ,linuxPackages_latest.zfsStable)
linuxPackages_latest-libre.zfs (linuxKernel.packages.linux_latest_libre.zfs ,linuxPackages_latest-libre.zfsStable)
linuxPackages-libre.zfs (linuxKernel.packages.linux_libre.zfs ,linuxPackages-libre.zfsStable)
linuxPackages_lqx.zfs (linuxKernel.packages.linux_lqx.zfs ,linuxPackages_lqx.zfsStable)
linuxPackages_testing_bcachefs.zfs (linuxKernel.packages.linux_testing_bcachefs.zfs ,linuxPackages_testing_bcachefs.zfsStable)
linuxPackages_xanmod.zfs (linuxKernel.packages.linux_xanmod.zfs ,linuxPackages_xanmod.zfsStable)
linuxPackages_xanmod_latest.zfs (linuxKernel.packages.linux_xanmod_latest.zfs ,linuxPackages_xanmod_latest.zfsStable ,linuxPackages_xanmod_stable.zfs ,linuxPackages_xanmod_stable.zfsStable)
linuxPackages_zen.zfs (linuxKernel.packages.linux_zen.zfs ,linuxPackages_zen.zfsStable)
mgmt
minikube
minishift
multipass
nixops_unstable
nixops_unstable.dist
partition-manager
perl536Packages.SysVirt
perl536Packages.SysVirt.devdoc
perl538Packages.SysVirt
perl538Packages.SysVirt.devdoc
python310Packages.guestfs
python310Packages.guestfs.dist
python310Packages.libvirt
python310Packages.libvirt.dist
python310Packages.py-libzfs
python310Packages.py-libzfs.dist
python311Packages.guestfs
python311Packages.guestfs.dist
python311Packages.libvirt
python311Packages.libvirt.dist
python311Packages.py-libzfs
python311Packages.py-libzfs.dist
qemu_full
qemu_full.debug
qemu_full.ga
rubyPackages.ruby-libvirt (rubyPackages_3_1.ruby-libvirt)
rubyPackages_3_2.ruby-libvirt
rubyPackages_3_3.ruby-libvirt
sambaFull (samba4Full)
sambaFull.dev (samba4Full.dev)
sambaFull.man (samba4Full.man)
sanoid
vagrant
virt-manager
virt-manager-qt
virt-manager.dist
virt-top
virt-viewer
zfs (zfsStable)
zfs.dev (zfsStable.dev)
zfstools
zpool-auto-expand-partitions
zxfer

We also should bump unstable to the same version: https://github.com/NixOS/nixpkgs/blob/3ac3a21f7918b09440debc526a4a3003d6f9edaa/pkgs/os-specific/linux/zfs/unstable.nix
Otherwise it's actually older than stable.

From 40e9f366584d143e1b748e95c0b668b4842e7499 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Thalheim?=<EMAIL_ADDRESS>
Date: Wed, 22 Nov 2023 09:23:11 +0100
Subject: [PATCH] zfsUnstable: 2.2.0 -> 2.2.1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Jörg Thalheim<EMAIL_ADDRESS>
---
 pkgs/os-specific/linux/zfs/unstable.nix | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/pkgs/os-specific/linux/zfs/unstable.nix b/pkgs/os-specific/linux/zfs/unstable.nix
index 9c7e14c31bf3..18d1ae7f9d17 100644
--- a/pkgs/os-specific/linux/zfs/unstable.nix
+++ b/pkgs/os-specific/linux/zfs/unstable.nix
@@ -12,21 +12,20 @@ in
 callPackage ./generic.nix args {
   # check the release notes for compatible kernels
   kernelCompatible = if stdenv'.isx86_64 || removeLinuxDRM
-    then kernel.kernelOlder "6.6"
+    then kernel.kernelOlder "6.7"
     else kernel.kernelOlder "6.2";

   latestCompatibleLinuxPackages = if stdenv'.isx86_64 || removeLinuxDRM
-    then linuxKernel.packages.linux_6_5
+    then linuxKernel.packages.linux_6_6
     else linuxKernel.packages.linux_6_1;

   # this package should point to a version / git revision compatible with the latest kernel release
   # IMPORTANT: Always use a tagged release candidate or commits from the
   # zfs-<version>-staging branch, because this is tested by the OpenZFS
   # maintainers.
-  version = "2.2.1-unstable-2023-10-21";
-  rev = "95785196f26e92d82cf4445654ba84e4a9671c57";
+  version = "2.2.1";

-  sha256 = "sha256-s1sdXSrLu6uSOmjprbUa4cFsE2Vj7JX5i75e4vRnlvg=";
+  sha256 = "sha256-2Q/Nhp3YKgMCLPNRNBq5r9U4GeuYlWMWAsjsQy3vFW4=";

   isUnstable = true;
 }
--
2.42.0

Our tests are not passing, can someone look into them?

Looks like it might be still broken and/or even more broken.
https://github.com/openzfs/zfs/issues/15533
The fix appears to maybe be unrelated to block cloning (module parameter).

zfs{,unstable}.passthru.tests pass for me on x86_64-linux, so I cannot replicate the ofborg failure.

Those tests also worked for me yesterday.

Ah sorry, the tuneable is meant to resolve the data corruption from block cloning (if it is from block cloning) https://github.com/openzfs/zfs/issues/15526#issuecomment-1823737998.
v2.2.1 surfaces another problem (on a specific setup) which does not seem to be related.

I opened https://github.com/NixOS/nixpkgs/pull/269452 related to this. If you want to continue maintaining the 2.2.x series, please step up in that PR so I can add you. I am not planning to address the 2.2.x series situation as a maintainer of ZFS as I am effectively removing myself from 2.2.x.

FYI https://nvd.nist.gov/vuln/detail/CVE-2023-49298

2.2.1 affects users with zfs on LUKS, see https://github.com/openzfs/zfs/issues/15533
Reverting the commit mentioned in https://github.com/openzfs/zfs/issues/15533#issuecomment-1824963319 seems to fix it but only the user who bisected it confirmed it so far.

I'm hesitant to adopt https://github.com/openzfs/zfs/issues/15526 even though this was patch was applied in zfs_2_1. While this may be the patch that is accepted, I am not the person to make that decision. As this bug has been around for a long time, and only become more common with recent changes, I propose we instead roll back those recent changes.
My recommendation would be to proceed with 2.2.1, which disables block cloning, and follow Gentoo in patching zfs_dmu_offset_next_sync=0 back to the default. Their patch is here: https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-fs/zfs-kmod/files/zfs-kmod-2.2.1-Disable-zfs_dmu_offset_next_sync-tunable-by-default.patch
These two should hopefully be enough to calm some fears while upstream has a chance to fix the underlying bug.


Modifier key to ignore Word Separator rules

Currently Double-Click on parts of a word selects the characters up to the defined Word Separators.
It would be great to have a modifier key to ignore the Word Separators, effectively selecting the entire word.
This is especially handy when copy-pasting or moving variables around, as the symbols and decorators around them are often part of the variable.

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!


add option to include/exclude plasmids from pan/core plot

Original issue by @pdawyndt on Fri Aug 30 2013 at 14:37.
Closed by @bmesuere on Sun Apr 20 2014 at 14:36.

won't fix
Original comment by @bmesuere on Sun Apr 20 2014 at 14:35.


Unbreak buildkite

Fix Rust implementation repo uri to unbreak buildkite. Otherwise, it fails with 'could not find Cargo.toml'.
According to google/starlark-rust, the old repo has been archived.
Needed to fix #200.

Hmm, Cargo.toml now exists, but we are hitting an error in the Go implementation:
/var/lib/buildkite-agent/.cache/bazel/_bazel_buildkite-agent/ec321eb2cc2d0f8f91b676b6d4c66c29/sandbox/linux-sandbox/616/execroot/starlark_test_suite/external/net_starlark_go/lib/time/time.go:190:45: time.Duration(d).Milliseconds undefined (type time.Duration has no field or method Milliseconds)
--
  | /var/lib/buildkite-agent/.cache/bazel/_bazel_buildkite-agent/ec321eb2cc2d0f8f91b676b6d4c66c29/sandbox/linux-sandbox/616/execroot/starlark_test_suite/external/net_starlark_go/lib/time/time.go:192:45: time.Duration(d).Microseconds undefined (type time.Duration has no field or method Microseconds)

They get actively looked at maybe once every couple months, but afaik, they are the only way we have to compare how the 3 implementations differ...
It's not a great situation, but I don't think @brandjon or I have the time to improve it in the near future.


EXC_BAD_INSTRUCTION when comparing

I keep getting this crash when comparing semantic versions with your latest CocoaPods release 0.2.0.
Even on the command line it crashes Xcode when doing e.g.:
p NSBundle.mainBundle().shortVersion! < "1.0.0"

Any idea what's going on? I'm using Xcode Version 6.1.1 (6A2008a).

Same here... can't understand why, because the tests are fine. And the implementation seems fine too...

It's not unlikely that this was an issue caused by the compiler. This doesn't seem to be relevant anymore.


Authy Desktop recipes

This was requested a while ago (and useful for me!).

This is not easily possible because curl is unable to use the download link that is on the website. The only current workaround is to manually download it and add to a local repo (or try something like nscurl).

This is now working with nscurl, though not particularly elegantly. The refinement would happen in eth-its/nzmacgeek-recipes.


readthedocs theme hides nav items when the window height is too small to contain them

If you have a nav with a bunch of items and then make the screen height too small so that a scrollbar appears, the scrollbar won't go all the way down, because the prev, next, Github footer thing is covering it.
You can fix this by adding a CSS rule like:
.wy-menu-vertical ul {
    margin-bottom: 2em;
}

though you may prefer another approach. This works though.

I have this same issue

Same issue here

Thank you for this. I was experiencing this.

This is fixed in master, the menu icon will open the nav. This is because going that small triggers the mobile view. I'm not a huge fan of this, but it is working.


5.12.x rebase

Commits rebased without integration tests.
Multi attribute login feature def added.
Dependency versions bumped.

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/1789465551

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/1789465551
Status: failure

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/1789779316

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/1789779316
Status: failure


Ubuntu 18.10 error

The Readme does not specify what python version should be used. I used what comes with Ubuntu 18
O.S.: Ubuntu 18.10
Python Version: Python 2.7.15+
Pip version: pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)
I got this:
pablo@pablo-lenovo:~/temp/nxBender(master)$ sudo ./nxBender --server vpn.server.net -u myUsername -p myPassword -d myDomain
Traceback (most recent call last):
  File "./nxBender", line 9, in <module>
    import nxbender
  File "/home/pablo/temp/nxBender/nxbender/__init__.py", line 1, in <module>
    import nx
  File "/home/pablo/temp/nxBender/nxbender/nx.py", line 2, in <module>
    import requests
ImportError: No module named requests

Also, a big thanks for the effort you put on this; this seems to resolve DNS issues I am experiecing right now.

Hi @fixwa, you need to install the dependencies, eg.
pip install -r requirements.txt

I would suggest doing this in a virtualenv or using --user, it's a shame there's not an easier way to do that.

Thank you @abrasive , that's what I did initially. So, to fix my error I had to do the following:
sudo pip install requests
sudo pip install pyroute2
sudo pip install configargparse


Add tools for copying and opening imas data

This PR is a work in progress that tries to implement a workflow for copying IDS data to a new location and updating it.

This snippet is currently working:
from duqtools.ids.ids_location import ImasLocation

imas_loc = ImasLocation(db='jet', shot=92432, user='g2aho', run=1)
target = ImasLocation(db=imas_loc.db, shot=imas_loc.shot, run=1001)
imas_dst = imas_loc.copy_ids_entry_to(target)

This PR enables the following script:
from duqtools.ids.ids_location import ImasLocation

source = ImasLocation(db='jet', shot=92432, user='g2aho', run=1)

target = ImasLocation(db=source.db, shot=source.shot, run=1001)

source.copy_ids_entry_to(target)

core_profiles = target.get('core_profiles')

core_profiles.profiles_1d[0].t_i_average *= 1.1

with target.open() as data_entry_target:
    core_profiles.put(db_entry=data_entry_target)


Consider adding Address::as_unchecked(&self) -> &Address<NetworkUnchecked> and Address<NetworkUnchecked>::assume_checked_ref(&self) -> &Address

These do come up sometimes and require unsafe to implement. assume_checked & co is annoying in slices and other collections.

concept ACK


Asterisk at start of line removed

I have a paragraph in markdown that looks like this:
Text blah blah blah (80 chars)
*some text meant to be italicized* etc.

Wrapping (both line and paragraph) removes the first asterisk.

Should be fixed in 1.7.0, now published to the Plugins Marketplace.


test/CMakeLists.txt: add support for WASI SDK

WASI SDK should be supported in test/CMakeLists.txt like the rest of the SDKs for us to be able to build tests for this platform.

@swift-ci test

preset=buildbot_incremental_linux_crosscompile_wasm
@swift-ci Please test with preset Linux Platform

@swift-ci test windows


Split out nodes and links

This PR is mainly an attempt at simplifying the architecture of the app by splitting out nodes and links from the main view into their own models and views.  I'm trying to move toward a more data-bound approach, so I also got rid of at least one RPC call here.
I might do a bigger refactor or rewrite here at some point, but I'll save that until I know we have a good reason to.

@avirshup Heads up that I'm opening this PR with the nbmolviz2d changes I showed you.
@maxbates Can you give me a quick code review?  I think I'm forced to use backbone here for now, but I got this using the airbnb eslint and cleaned things up a bit at least.

looks good to me!

Thanks, merging!


No negative numbers for all fields in all forms

[x] no fields can choose negative numbers in all forms.  ie Zero is smallest number able to be chosen.

Fixed by live validation.


updated to support read/write biallelic genotypic in same method

Herman please can you comment, what do you think? If it is ok, I will merge in.

I will review tomorrow


gulp 4 release hold up?

Gulp 4 is amazing! It is way easier to reason about then the previous version of gulp! Our team has been using it consistently at least since March or April. Everything about it has been stable.
So with that all said what is the main hold up for getting a release out? What bugs are the major outliers in the milestone? Can anything be pushed off for a patch? This would make many many user happy that have begged for a pre-release.

Thanks for your interest and feedback.  We are very close to finishing up, especially now that the chokidar switch has been made.  We've actually made a lot of changes in the past few weeks and are waiting to get feedback on a few outstanding items and there are few important issues to get completed.
Outstanding issues:

Empty arrays - https://github.com/gulpjs/gulp/issues/1298
Deprecating gulp-util - https://github.com/gulpjs/gulp/issues/1297
Fix alias support - https://github.com/gulpjs/gulp/issues/1159
Migration guide - https://github.com/gulpjs/gulp/issues/861
Remaining documentation (not required in entirety) - https://github.com/gulpjs/gulp/labels/documentation

Hopefully you have some bandwidth to help us knock out the remaining few things.

when will gulp v4 finally be released? weeks? months?
are people on it 24/7 or is it maintained as a side-project?
I'm really curious, thanks!


snapshot-controller chart: Add possiblity to override default Chart name and fullname

Hi,
firstly, thanks for the great helm chart which is handy as there is no official one provided by kubernetes-csi/external-snapshotter project.
What about adding the possibility of overriding the "name" and "fullName" which are taken from the Chart name?
So one could specify Values.fullnameOverride and Values.nameOverride variables which could override resource names which are usually derived from Chart name and release during templating.
Motivation: I cannot set Chart release name in our templating pipeline. Other charts we use have the possibility of name override. Kyverno helm chart as example:
https://github.com/kyverno/kyverno/blob/main/charts/kyverno/templates/_helpers/_names.tpl
It would probably need something like this in the helper file:
{{- define "snapshot-controller.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- if contains .Chart.Name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}

Just pushed f8a6ac078f97382c8dd46a603ddc0668135877b7, so you can set controller.fullnameOverride and webhook.fullnameOverride.

@WanzenBug good job, thanks. Could you please backport this also to chart version 2.0.4? We use snapshot controller 6.3.x as it is the latest stable version according to the Kubernetes-CSI web.

I don't really see the need to backport anything. If anything it's probably the Kubernetes-CSI page that needs updating. We generally follow the release of the snapshot-controller directly: https://github.com/kubernetes-csi/external-snapshotter/releases/


How to make insert with relations

recently i am using typeorm the code its just like below and using sequelize the query doesnt work, how to do it in sequelize-typescript?
@Table
export default class Post extends Model<Post>{

    @Column
    text: string

    @Column
    userId: number

    @HasMany(()=>Poll)
    polls: Poll[];
....

@Table
export default class Poll extends Model<Poll>{

    @ForeignKey(() => Post)
    @Column
    postId: number;

    @BelongsTo(() => Post)
    post: Post;
...

let poll1 = new Poll()
poll1.option = "btc"

let poll2 = new Poll()
poll2.option = "eth"

let post = new Post({
     text: "btc or eth?",
     userId: 1,
     polls: [poll1, poll2]
}, {
     include: [{model: Poll}]
})
await post.save()

and there are is have update in future to make sequelize-typescript fully support data mapper ?
Thankss

Hey @deceive3w, thanks for bringing this up. To achieve this, you could do it like so:
let post = new Post({
     text: "btc or eth?",
     userId: 1,
     polls: [{option: 'btc'}, {option: 'eth'}]
}, {
     include: [{model: Poll}]
})

(Unfortunately sequelize only supports pure objects here, so Model instances won't work)
Hope this helps!

Hey @deceive3w thanks for bringing this up. Am I right that your polls are already stored in the database and the post is newly created/stored?

@RobinBuschmann i tried polls: [poll1.toJSON(), poll2.toJSON()] it doesn't work because id is null, and try polls:[{option:'btc'}, {option:'eth']} work perfectly.  Nice Work @RobinBuschmann!

In case of your polls already exists in database, you have to save Post first and add the polls afterwards like so:
const post = await Post.create({
     text: "btc or eth?",
     userId: 1,
});
await post.$add('polls', [new Poll({id: 1, option: '1'}), new Poll({id: 2, option: '2'})]);

or if you want to commit it at once, use transactions like so:
await sequelize.transaction(async transaction => {
  const post = await Post.create({
     text: "btc or eth?",
     userId: 1,
  }, {transaction});
  await post.$add('polls', [
    new Poll({id: 1, option: '1'}),
    new Poll({id: 2, option: '2'})
  ], {transaction});
});

@RobinBuschmann Greattt, btw did you have a plan to support data mapper just like type-orm separating infrastructure logic in model, and make model is clean?


Collecting application level metrics

Currently Heapster collects metrics from cAdvisor to gather container level metrics. Collecting application level metrics would provide an even richer set of data. Applications would be required to implement an http endpoint to expose the metrics that it wants to publish.
As a PoC, we have a heapster fork, jadvisor (https://github.com/fabric8io/jadvisor), that collects JVM stats via JMX exposed via Jolokia (http://jolokia.org/) for http access to JMX. Currently the stats that are collected are hard-coded, or rather discovered by what is available in the JMX tree. I would like to make this more generic so it can handle any http endpoint & hence be stack agnostic.
The difference that this would introduce to heapster is the need to connect to individual pods rather than just to the kubelet/cadvisor so would increase the number of connections made significantly. This would likely require work on clustering & sharding to implement properly.

Application metrics is something we have been wanting to collect in
heapster for a while. But most of the existing monitoring solutions use
either collectd or statsd and so we were looking at leveraging them for
application metrics. Native support in heapster sounds even better. My
concern is that of diverging from the open source community around
monitoring.
On Fri, Mar 20, 2015 at 3:21 AM, Jimmi Dyson<EMAIL_ADDRESS>wrote:

Currently Heapster collects metrics from cAdvisor to gather container
level metrics. Collecting application level metrics would provide an even
richer set of data. Applications would be required to implement an http
endpoint to expose the metrics that it wants to publish.
As a PoC, we have a heapster fork, jadvisor (
https://github.com/fabric8io/jadvisor), that collects JVM stats via JMX
exposed via Jolokia (http://jolokia.org/) for http access to JMX.
Currently the stats that are collected are hard-coded, or rather discovered
by what is available in the JMX tree. I would like to make this more
generic so it can handle any http endpoint & hence be stack agnostic.
The difference that this would introduce to heapster is the need to
connect to individual pods rather than just to the kubelet/cadvisor so
would increase the number of connections made significantly. This would
likely require work on clustering & sharding to implement properly.
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/heapster/issues/173.

Agreed that heapster should support statsd & collectd, but running those would require extra setup rather than natively supporting collection in heapster.
Also heapster providing discovery of what to monitor would probably be easier than configuration of collectd & statsd to do the same. My initial thoughts on this were to use selectors to collect configured metrics over http. I'm not sure how you would achieve that simply with statsd/collectd. Adding a REST service to heapster to allow for dynamic configuration of metrics collectors would make this even better IMO.

Application type discovery is an open issue in kubernetes. Filed an issue to discuss
that.
Filed #177 for dynamic backend configuration.

Thanks for raising those. Wonder if it's worth pushing on with using labels while the discussion around discovering application types via the Kubernetes API kicks off?

I agree. Labels should get us going for now.

CC @jszczepkowski

subscribe.  @jjw27

Possible with custom metrics. Support in Heapster is done.


FIX: Amend note about b-vecs on DWI specs

Although this note is true (and the b-vecs should be rotated through the head-motion parameters), it is describing some post-processing step.
The actual implication w.r.t. BIDS of the choice of this format is that, if the scanner generates (or better said, receives and forwards) b-vecs in "world coordinates", then they need to be converted into voxel coordinates before writing into BIDS.
BIDS should describe only how the data & metadata should/could be stored. AFAICT, it should not prescribe how to use them whenever possible.
Comes from https://github.com/mattcieslak/bids-specification/pull/1#discussion_r617477112

I've been thinking about this note and you're right the head motion rotations shouldn't be mentioned here. Having curated tons of data in BIDS, the main issue we run into with bvecs is the image axis orientation. For example, oblique acquisitions effectively mandate that a bvec file exists for every scan while plumb acquisitions can inherit bvecs from higher up. Not sure if this is worth noting in the main BIDS spec though

For example, oblique acquisitions effectively mandate that a bvec file exists for every scan while plumb acquisitions can inherit bvecs from higher up.

What do you mean that "oblique acquisitions effectively mandate that a bvec file exists for every scan"? You mean that the conversion tool has ensured that the bvecs have been converted into voxel coordinates? (and hence make sure the bvec file is generated for every dwi). And then plumb datasets are assumed to be already in voxel coordinates and hence just one is placed at the top level, when a flip of an axis could exist?

Not sure if this is worth noting in the main BIDS spec though

My question above may be put in simpler terms: the problem here is representing the gradients with BIDS or something that conversion tools perhaps should pay more attention to? (or alternative, get #352 merged and do not rely on the conversion tool to do this correctly, as you have been indeed proposing for a long while).

In studies where the scanner operator gets to angle the FoV to capture the participant's brain, each subject gets a unique transform from the requested gradients into image coordinates. So instead of being able to use the inheritance principle the bvecs will be very different for each subject. PIs are often surprised that they can't use one bvec file even though they used the same sampling scheme for every subject because the bvecs need to be transformed for each subject's custom oblique FoV.
dcm2niix and other tools do a great job getting correct bvecs in image coordinates, I was thinking maybe a note would be useful to point this out?

dcm2niix and other tools do a great job getting correct bvecs in image coordinates, I was thinking maybe a note would be useful to point this out?

I'm totally +1 on this. But I would rather state it within #352, and add ammo to the arguments being discussed. WDYT?
I'd like to keep this one focused on not saying something that is not helpful in the current spec.


QueryOptions Returning prop crashes json parser

Bug Report
Describe the bug
QueryOptions Returning prop makes the response crash
Reproduction
Setting the Returning prop in QueryOptions to "QueryOptions.ReturnType.Minimal" causes an exception while parsing the db response.
Screenshots:

System Info

OS: Windows 10 Pro
.NET 6
Visual Studio 17.0.4
Versions: supabase: 0.2.11; postgrest: 2.0.4

@warflash this fix is available in<EMAIL_ADDRESS>- thanks for the bug report!


Mobile Design

I am currently making the website adaptive on mobile screens

I have finished the home page, moving to the next page


Automate periodic pulls from upstream

Up until now we have been reconciling updates from upstream using a script on account of the requirement to address merge conflicts, but would like to set up a GitHub-based automation to handle this going forward. General requirements for the automation:

Make automation configurable with regard to the enumeration of stabilities, merge frequencies, dates, etc. It's OK to expose code as a configuration mechanism.
Perform following steps (in this order) daily at 12pm (noon) GMT:

Every day, fetch updates from upstream.
Before updating a branch, create tag of the form <branchname>.<YYYYMMDD>, e.g. unstable.20220420 pointing to the current (soon to be replaced) HEAD.
On Monday thru Wednesday, rebase updates from nixos-unstable upstream into the unstable branch.
On the first Saturday of the month (or configurable), reset the stable branch to point to the current staging.
On Saturday, reset the staging branch to point to the current unstable.

@samrose - I'll provide you a copy of the current script offline.
A graphical representation of the workflow is shown below:

Please do send me the script @limeytexan thank you!

Please do send me the script @limeytexan thank you!

FTR as mentioned in spatial I dropped this off in ~sam/doit.sh on storehouse.core.

FTR, the simple "doit" script, renamed to be a txt file: doit.txt


removed capitalized name for broken link checker

FYI @wph95 I think removing the name should fix the capitalization

It seems it is expecting Broken Links but I removed the reference so it is breaking. @reyang, @wph95 any suggestions? Is this a repo or code issue?

It seems it is expecting Broken Links but I removed the reference so it is breaking. @reyang, @wph95 any suggestions? Is this a repo or code issue?

I've made the config change.
It's configured at repo/branch level https://github.com/open-telemetry/opentelemetry-demo-webstore/settings/branch_protection_rules/25424445:

Thanks I figured it was something like that. I'll start there next time


Interactive Tutorial - Deploying an App

the interactive demo is bombing azat this step in module 2 - i am running Proxy  put Curl into proxy it runs on primary page but hangs doing nothing
curl http://localhost:8001/version
Note: Check the top of the terminal. The proxy was run in a new tab (Terminal 2), and the recent commands were executed the original tab (Terminal 1). The proxy still runs in the second tab, and this allowed our curl command to work using localhost:8001.
If Port 8001 is not accessible, ensure that the kubectl proxy started above is running.

Hi @rjt65, Can you reload your interactive session if you can't get your result and check again because I am currently running the same command, and it is working for me.
curl http://localhost:8001/version
Output

{
"major": "1",
"minor": "20",
"gitVersion": "v1.20.2",
"gitCommit": "faecb196815e248d3ecfb03c680a4507229c2a56",
"gitTreeState": "clean",
"buildDate": "2021-01-13T13:20:00Z",
"goVersion": "go1.15.5",
"compiler": "gc",
"platform": "linux/amd64"
}

Hi @rjt65, Can you reload your interactive session if you can't get your result and check again because I am currently running the same command, and it is working for me.
curl http://localhost:8001/version
Output

{
"major": "1",
"minor": "20",
"gitVersion": "v1.20.2",
"gitCommit": "faecb196815e248d3ecfb03c680a4507229c2a56",
"gitTreeState": "clean",
"buildDate": "2021-01-13T13:20:00Z",
"goVersion": "go1.15.5",
"compiler": "gc",
"platform": "linux/amd64"
}

going to retry today
thks will update

weird got it working failed 2 more times so i reran the kubectl proxy command in 2nd terminal window and it properly restrted the proxy than the curl and bingo got the output it seems the proxy was opening but not running properly --thanks!

I think it was with the connectivity glitch, glad it got resolved.
/close

Hi @rjt65, if your issue has been resolved, can you close this issue?

/close
Won't fix because we're removing Katacoda.


#33

fixes #33

I'm glad this was a separate PR anyways. We should keep distinct ideas in separate PRs to make it easier to read.

If you do "fixes https://github.com/SciML/MethodOfLines.jl/issues/1, https://github.com/SciML/MethodOfLines.jl/issues/3, https://github.com/SciML/MethodOfLines.jl/issues/9 and https://github.com/SciML/MethodOfLines.jl/issues/4" then it would do it automatically.

Worth knowing.


Introduce types.raw

Motivation for this change

Introduce types.raw as a type that doesn't do any nested processing for mkIf, mkForce, etc. on its values. This is useful when this processing would throw errors or where it would be too expensive (such as with package sets like nixpkgs).
Use types.raw for _module.args's type. This finally fixes https://github.com/NixOS/nixpkgs/issues/53458

This is split off from https://github.com/NixOS/nixpkgs/pull/132448. This is also motivated by wanting to deprecate types.attrs and types.unspecified, for which types.attrsOf types.raw and types.raw (or types.anything) is an adequate general replacement.
Things done

[x] Wrote and ran tests
[x] Wrote docs

@roberth This type still works with mkForce, mkIf and co., just not deeply. E.g. this works and gives a result of 30:
let lib = import ./lib; in

lib.evalModules {
  modules = [
    {
      options.foo = lib.mkOption {
        type = lib.types.raw;
      };

      config.foo = lib.mkMerge [
        (lib.mkIf false 10)
        20
        (lib.mkIf true (lib.mkForce 30))
      ];
    }
  ];
}

types.anything is similar to types.raw in that it accepts any value, however types.anything recurses deeply into the structure to apply any mkForce and co. And that is what makes types.anything very unsuitable for above use cases.
The main use case for types.raw is values that aren't meant for the module system to be evaluated and merged, because they come from outside the module system. So e.g. things like package sets, which have their own merging strategies incompatible with the module system: overlays, overrides, extends, etc. The module system also shouldn't try to inspect these values for any mkForces and co, which would make it excessively strict in evaluation without any benefit, since you won't be using mkForce and co. for e.g. pkgs.hello
Other than _module.args I can also think of nixpkgs.pkgs and options like services.xserver.windowManager.xmonad.haskellPackages that could benefit from this.
We also need to deprecate types.unspecified due to its implicit and arbitrary merging behavior, and replace it with either types.anything or types.raw.

As expected, this broke my config because I was adding my own stuff to _module.args.utils. What was less expected is that instead of a module system error I got an infinite recursion (logs).
Probably just a "me" problem not worth looking into as I couldn't reproduce that error on a minimal config.

I'd like utils to be removed, as it is nonsensical.

Yeah, I guess it's supposed to be a middle ground between lib and pkgs? Maybe the things it defines should go into config.lib instead?

As a general rule, utils is the name for the place people create to put the stuff they don't know where to put. config.lib is only slightly better.
The systemd logic can move into importable modules instead, after https://github.com/NixOS/nixpkgs/pull/156533

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/tweag-nix-dev-update-25/18003/1


chore: upgrade twilio-cli-core

Contributing to Twilio

All third-party contributors acknowledge that any contributions they provide will be made under the same open-source license that the open-source project is provided under.

[x] I acknowledge that all my contributions will be made under the project's license.

Approving this to avoid being a blocker to the wider CLI release initiative.
I would strongly recommend that some more test details are updated in this PR. Specifically what percentage of the tooling have we tested to ensure this plugin works as suggested.

This PR didn't trigger the circleCI tests because its from a forked repo.
However, from testing locally with the existing suite:
Please ignore the failed testcase, that case was tested manually.


Update to Chrome Extension Manifest v3

https://developer.chrome.com/blog/mv2-transition/

Manifest V3 is more secure, performant, and privacy-preserving than its predecessor. It is an evolution of the extension platform that takes into consideration both the changing web landscape and the future of browser extensions.

January 17, 2022: New Manifest V2 extensions will no longer be accepted by the Chrome Web Store. Developers may still push updates to existing Manifest V2 extensions, but no new Manifest V2 items may be submitted.

January 2023: The Chrome browser will no longer run Manifest V2 extensions. Developers may no longer push updates to existing Manifest V2 extensions.

https://developer.chrome.com/blog/more-mv2-transition/

Starting in January in Chrome 112, Chrome may run experiments to turn off support for Manifest V2 extensions in Canary, Dev, and Beta channels.

Starting in June in Chrome 115, Chrome may run experiments to turn off support for Manifest V2 extensions in all channels, including stable channel.

For developers who still own extensions running Manifest V2, we recommend completing migration to Manifest V3 well ahead of the release of these Chrome versions because those extensions may stop working at any time following the aforementioned dates.

https://developer.chrome.com/docs/extensions/mv3/mv2-sunset/

December 9, 2022: The Manifest V2 deprecation timelines are under review and the experiments scheduled for early 2023 are being postponed. For more information, read the update in the chromium-extensions Google Group.

https://groups.google.com/u/1/a/chromium.org/g/chromium-extensions/c/zQ77HkGmK9E

Pausing Manifest V2 phase-out changes

we’re postponing any January experiments to turn off Manifest V2 in pre-release channels of Chrome and changes to the featured badge in the Chrome Webstore, and we'll be evaluating all downstream milestones as well. Expect to hear more about the updated phase-out plan and schedule by March of 2023. Our guiding principle will be to give developers sufficient time to update and test their extensions after the launch of these new capabilities before turning off Manifest V2.

https://developer.chrome.com/blog/resuming-the-transition-to-mv3

Resuming the transition to Manifest V3

The phase-out timeline
We will begin disabling Manifest V2 extensions in pre-stable versions of Chrome (Dev, Canary, and Beta) as early as June 2024, in Chrome 127 and later. Users impacted by the rollout will see Manifest V2 extensions automatically disabled in their browser and will no longer be able to install Manifest V2 extensions from the Chrome Web Store. Also in June 2024, Manifest V2 extensions will lose their Featured badge in the Chrome Web Store if they currently have one.

https://chromestatus.com/roadmap

Chrome 127
Beta between Jun 12 - Jun 27
Stable Jul 17, 2024

https://blog.chromium.org/2024/05/manifest-v2-phase-out-begins.html

Manifest V2 phase-out begins

Starting on June 3 on the Chrome Beta, Dev and Canary channels, if users still have Manifest V2 extensions installed, some will start to see a warning banner when visiting their extension management page - chrome://extensions - informing them that some (Manifest V2) extensions they have installed will soon no longer be supported. At the same time, extensions with the Featured badge that are still using Manifest V2 will lose their badge.

https://developer.chrome.com/docs/extensions/develop/migrate/mv2-deprecation-timeline

Manifest V2 support timeline
Understand when Manifest V2 will stop working for extensions

June 3 2024: the Manifest V2 phase-out begins.
Starting on June 3 on the Chrome Beta, Dev and Canary channels, if users still have Manifest V2 extensions installed, some will start to see a warning banner when visiting their extension management page - chrome://extensions - informing them that some (Manifest V2) extensions they have installed will soon no longer be supported. At the same time, extensions with the Featured badge that are still using Manifest V2 will lose their badge.
This will be followed gradually in the coming months by the disabling of those extensions. Users will be directed to the Chrome Web Store, where they will be recommended Manifest V3 alternatives for their disabled extension. For a short time after the extensions are disabled, users will still be able to turn their Manifest V2 extensions back on, but over time, this toggle will go away as well.

https://developer.chrome.com/docs/extensions/mv3/known-issues/
https://developer.chrome.com/docs/extensions/whatsnew/#m104-favicon-api

Manifest V3 extensions can now access favicons using a new URL pattern: chrome-extension://<id>/_favicon/, where is the ID of your extension. This replaces the Manifest V2 platform's chrome://favicons API. See the Favicon API docs for more information.

It seems like Chrome 127 is when MV2 extensions will start getting disabled, and according to the release timeline, that will hit stable release tomorrow (Jul 17 2024):

https://developer.chrome.com/blog/resuming-the-transition-to-mv3

Resuming the transition to Manifest V3

The phase-out timeline
We will begin disabling Manifest V2 extensions in pre-stable versions of Chrome (Dev, Canary, and Beta) as early as June 2024, in Chrome 127 and later. Users impacted by the rollout will see Manifest V2 extensions automatically disabled in their browser and will no longer be able to install Manifest V2 extensions from the Chrome Web Store. Also in June 2024, Manifest V2 extensions will lose their Featured badge in the Chrome Web Store if they currently have one.

https://chromestatus.com/roadmap

Chrome 127
Beta between Jun 12 - Jun 27
Stable tomorrow (Jul 17, 2024)

I tried running the extension-manifest-converter:

https://github.com/GoogleChromeLabs/extension-manifest-converter

It seems to have merged all of the existing .js files (src/bg/background.js, js/chromeExtensionApiAbstractions.js, js/googleAnalytics.js ) into a single service_worker.js file. Not sure if this is a requirement, or it's just a limitation of this tool and we can still maintain separate files. Need to look deeper into that.
It also made the following minimal changes to manifest.json (ignoring whitespace changes):
diff --git a/manifest.json b/manifest.json
index 404abe8..a4494be 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,10 +1,12 @@
 {
   "name": "New Window With Tabs To Right",
   "version": "1.0.1",
-  "manifest_version": 2,
+  "manifest_version": 3,
   "description": "This extension creates a new window with the tabs to the right of the currently selected tab.",
   "homepage_url": "http://devalias.net/dev/chrome-extensions/",
-  "content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'",
+  "content_security_policy": {
+    "extension_pages": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'"
+  },
   "permissions": [
     "tabs",
     "contextMenus"
@@ -16,12 +18,8 @@
   },
   "default_locale": "en",
   "background": {
-    "scripts": [
-      "js/googleAnalytics.js",
-      "js/chromeExtensionApiAbstractions.js",
-      "src/bg/background.js"
-    ],
-    "persistent": true
+    "persistent": true,
+    "service_worker": "service_worker.js"
   },
   "commands": {
     "newWindowWithCurrentAndTabsToRight": {

Given the simplicity of this extension, I assume there probably won't be a lot of changes to be made to convert it; and so it's not all that surprising that the changes this conversion tool made were so minimal; but now we really need to go through the migration checklist to figure out more specifically what needs to be done; and if these changes are required/optimal:

https://developer.chrome.com/docs/extensions/develop/migrate/checklist

Last time I was working on this, I was exploring a way to implement 'options toggles' in the contextMenu, so that, as an example, the user could toggle on/off the 'page' context menu (eg. right-click on page) as per this issue:

#16

Here is the (private) ChatGPT reference that I was exploring that in for context:

https://chatgpt.com/c/8c6ee698-6b16-4192-acd6-10ceb8d750a9

My notes from then was that "it is seeming like it might be more effort than it's worth, and maybe implementing a proper options page would be a better choice"; though I this was before the ChatGPT o1-preview and o1-mini models were released; so they may be able to come up with a better 'wholistic solution' than I was struggling with with the 4o model on its own.

I'm exploring some ideas for refactoring everything into more modular code files/patterns in this (private) ChatGPT o1-preview conversation:

https://chatgpt.com/c/66f8e70f-ce4c-8008-92f8-673f9c8c56ae

I'm exploring some ideas for implementing settings / context menu options toggles for changing the default onClick action of the extensions 'action icon' in this (private) ChatGPT o1-preview conversation:

https://chatgpt.com/c/66f911d6-7e94-8008-88a2-f869748086e2

This relates to the following issues:

https://github.com/0xdevalias/chrome-NewWindowWithTabsToRight/issues/16
https://github.com/0xdevalias/chrome-NewWindowWithTabsToRight/issues/5


Create release candidate v0.24.0

This PR is for v0.24.0 updating CHANGELOG.md and _version.py

Hi @maliasadi. Thanks for putting this together.

Has the Kokkos build been turned on by default here yet for the wheels?


HASHFILE not registering

I am attempting to set up PufferPanel and get to the step where you create your AES HASHFILE. I have created the file multiple times however every time I attempt to confirm via the browser "Continue" button it claims that the file does not exist and it gives me a new hash.
The error it gives me is "We were unable to access that file location."
I am installing this on Centos 6.5 with PHP 5.5

I have been having the same issue with the system, possibly still and issue.

I edited the /instal/do/hash.php and that worked for me.

Disable selinux
On Wed, Mar 25, 2015, 11:45 AM Dylan Seidt<EMAIL_ADDRESS>wrote:

I edited the /instal/do/hash.php and that worked for me.
—
Reply to this email directly or view it on GitHub
https://github.com/PufferPanel/PufferPanel/issues/313#issuecomment-86114523
.

However, note this issue is irrelevant in the current installer and the new one

I just put in outside of the /panel/ directory of PufferPanel. SeLinux is bae don't disable it :D.


gtk-doc: 1.29 -> 1.30

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/gtk-doc/versions.
meta.description for gtk-doc is: '"Tools to extract documentation embedded in GTK+ and GNOME source code"'.
meta.homepage for gtk-doc is: '"https://www.gtk.org/gtk-doc"

Checks done (click to expand)

built on NixOS
/bin/sh passed the binary check.
1 of 1 passed binary check by having a zero exit code.
0 of 1 passed binary check by having the new version present in output.
found 1.30 with grep in /nix/store/yikyc1nmj0lp6n4yhyfl7djxqkcswz5b-gtk-doc-1.30
directory tree listing: https://gist.github.com/b1dc89cf0bbfc07739d61d42cebf6755
du listing: https://gist.github.com/3e3c76b58cf8468f68d75266fc7b4ead

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

24326 total rebuild path(s)
8506 package rebuild(s)
8492 x86_64-linux rebuild(s)
7426 i686-linux rebuild(s)
1674 x86_64-darwin rebuild(s)
6734 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
AgdaSheaves
AgdaStdlib
DisnixWebService
EmptyEpsilon
MMA
R
SDL
SDL2
SDL2_gfx
SDL2_image
SDL2_mixer
SDL2_net
SDL2_ttf
SDL_gfx
SDL_image
SDL_mixer
SDL_net
SDL_sound
SDL_stretch
SDL_ttf
TotalParserCombinators
_20kly
_90secondportraits
a2jmidid
aacskeys
abcde
abcl
abcm2ps
abiword
abootimg
accountsservice
acgtk
acoustidFingerprinter
acpilight
acsccid
adapta-gtk-theme
adlplug
adobe-reader
adom
adoptopenjdk-bin
adoptopenjdk-hotspot-bin-11
adoptopenjdk-jre-bin
adoptopenjdk-jre-hotspot-bin-11
adoptopenjdk-jre-openj9-bin-11
adoptopenjdk-openj9-bin-11
adwaita-qt
aegisub
aeolus
aesop
afew

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/yikyc1nmj0lp6n4yhyfl7djxqkcswz5b-gtk-doc-1.30 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A gtk-doc https://github.com/r-ryantm/nixpkgs/archive/765079fbf98904de0559756083ebdcbba2545e6f.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/yikyc1nmj0lp6n4yhyfl7djxqkcswz5b-gtk-doc-1.30
ls -la /nix/store/yikyc1nmj0lp6n4yhyfl7djxqkcswz5b-gtk-doc-1.30/bin

cc @pSub for testing.

This breaks glib like
ERROR: Error in gtkdoc helper script:
ERROR: ['gtkdoc-fixxref', '--module=glib', '--module-dir=html', '--html-dir=/nix/store/kdrclrqf90dvbkl3r3dkdgs6aspvc8fc-glib-2.60.2/share/gtk-doc/html'] failed with status 1
Traceback (most recent call last):
  File "/nix/store/lcy7vl4whbkxk3yfnhn6jmgh93g7mjbx-gtk-doc-1.30/bin/gtkdoc-fixxref", line 28, in <module>
    from gtkdoc import common, config, fixxref
  File "/nix/store/lcy7vl4whbkxk3yfnhn6jmgh93g7mjbx-gtk-doc-1.30/share/gtk-doc/python/gtkdoc/fixxref.py", line 28, in <module>
    from . import common, highlight
  File "/nix/store/lcy7vl4whbkxk3yfnhn6jmgh93g7mjbx-gtk-doc-1.30/share/gtk-doc/python/gtkdoc/highlight.py", line 28, in <module>
    from pygments import highlight
ModuleNotFoundError: No module named 'pygments'

See first news item https://gitlab.gnome.org/GNOME/gtk-doc/blob/GTK_DOC_1_30/NEWS#L4

GTK-Doc is now using python-pygments to do the syntax highlighing. It is not depending on highligh or source-highligh anymore.


Update request body types for Transaction Extension spec and client

Description:
A POST against an items endpoint should accept an Item or ItemCollection
https://github.com/radiantearth/stac-api-spec/blob/master/ogcapi-features/extensions/transaction/README.md#methods
Added literal values to the stac_types type attribute in order to allow fastapi a discriminator value for parsing the request body to the correct TypedDict. Without this change, ItemCollections were parsed as Items and lost the features attribute.
PR Checklist:

[x] pre-commit hooks pass locally
[x] Tests pass (run make test)
[x] Documentation has been updated to reflect changes, if applicable, and docs build successfully (run make docs)
[x] Changes are added to the CHANGELOG.

Thanks @gadomski I think it definitely adds value. I ran the test against main and got the expected failures. Thanks for the assist!


后期会考虑出app客户端吗

Simple answer: No, and it's the space left for the community, but we will support XMPP in the future, so you can use any UI-based XMPP clients to use with Turms servers.
Detailed answer:

Chinese: https://turms-im.github.io/docs/zh-CN/#关于带具体业务实现的demo
English: https://turms-im.github.io/docs/#demo-with-specific-business-implementation


i'd like to know if there is a way to know freshplayerpluin's version informations ?

i do not mean the related package's informations if freshplayerpluin being installed through a package manager.
i mean is it possible to get freshplayerpluin's version informations from about:plugins page or video-playing context just like adobe flash player's version info ?

No, placing version information into about:plugins page is not possible.
The reason is, different websites use various techniques to determine Flash player presence and its version. They usually take string representation, Shockwave Flash 18.0 r0 and parse the string. Some of them require string to begin with Shockwave Flash and take third and forth elements after splitting string at spaces to determine version. Others take two last elements for version.
I used to add a description (here is screenshot from one of the first version, look at description string). But then removed, since it caused compatibility issues. See #11 for example.

I think it's still possible to add some information to context menu, just after "About Flash..." line.
But it's still unknown what write there. Something like version of previous stable release? But there could be changes after that and version would be the same despite different behavior, if, say a bug was fixed in master branch. Version detection via some scripts won't work when building outside of repository. From release tarball, for example.

I have some suggestions. with a release tarball, freshplayerplugin 0.3.1 would be good. and this version info can be retrieved from a version field in a version file( such as REL_VER_INFO in version.h), the version field 's value is manuallly or automatically specified when you mark this revision as a release version.
with the master branch, freshplayerplugin pre-0.3.2-20150816 would be good and 0.3.2 equals REL_VER_INFO+0.0.1. 20150816 comes from another version field in the  version file(such as COMMIT_TIME in version.h) . COMMIT_TIME is automatically generated when  committing and filled into version.h. this maybe can be accomplished with a git-pre-commit-script.

Although manually added "big" version is fine, I feel unease about changes to version.h coming with every commit.

Implemented in 5b135bc49d3ddb5120daecd1337663b1f7e4771e and 4b4ebf464355b7da87b8f411ce2b8e29e809703f.
It's disabled by default, and to enable, one must add show_version_info = 1 to ~/.config/freshwrapper.conf. Version will appear in a Flash context menu as a separate grayed item.


Strongly-typed route values for SendCreatedAtAsync

What do you think about having strongly-typed route values for SendCreatedAtAsync? It may be a bit of effort to infer the name of the parameter, but perhaps we could tie it into if we have defined Strongly Typed Route Parameters for a specific verb and can infer the name of potential route parameter names from that. Might need source generation.
So if you had something like:
Put("/articles/{@param1}/{@param2}", x => new { x.Year, x.Name });`

Then you could do something like:
await SendCreatedAtAsync<GetPageEndpoint, GetPageEndpointRouteParams>(new GetPageEndpointRouteParams { Year = article.Year, Name = article.Name }, article);

just had a quick look at this and i'm not quite sure exactly what you're asking for here, since we can already just do this:
SendCreatedAtAsync<GetPageEndpoint>(new GetPageEndpointRouteParams { Year = article.Year, Name = article.Name }, article);

what's the point of having to type the second generic parameter?
SendCreatedAtAsync<GetPageEndpoint, GetPageEndpointRouteParams>

That's better. Got side-tracked by the anonymous objects. 😅


BUG - ui5-application-inquirer default values are not applied

Description
Unless prompt option defaults are provided by the caller of prompt(), and the prompts are not executed, for example when they are set as advanced options, then the resulting answers does not contain entries for the not-executed prompts. This is not expected behaviour and the answers should return the defaults.
In addition, EnableTypeScript prompt options does not allow for conditional defaults which is a requirement for generation into CAP projects as certain criteria must be met. This has resulted in a bug where the default is applied by the EnableTypeScript prompt option to be true regardless of the criteria.
Steps to Reproduce
Technical bugs that require specific inputs for the defects to be apparent.
Bug 1 :

Set some prompts as advanced
During end-user prompting do not select true for Show Advanced Configuration
The resulting answers are missing the advanced answers

Bug 2:

Set the EnableTypeScript default prompt option to true
Call prompt() passing the capCdsInfo which does not have the Cap Cds UI5 plugin enabled
The result is that the answer EnableTypeScript is true when it should be false (the default property of the option should allow a function that is passed the answers including the Cap Cds Info to determine applicability of the default value)

Expected results
Actual results
Screenshots
If applicable, add screenshots to help explain the problem.
Version/Components/Environment
Add any other context about the problem here
OS:

[ ] Mac OS
[ ] Windows
[ ] Other

Root Cause Analysis
Problem
{describe the problem}
Fix
{describe the fix}
Why was it missed
{Some explanation why this issue might have been missed during normal development/testing cycle}
How can we avoid this
{if we don’t want to see this type of issues anymore what we should do to prevent}

Done


Codeql workflow tries to download a library from all specified repos at Autobuild stage

For a maven java build that has multiple repositories specified, the libraries specified in the pom.xml will be downloaded from those repositories, as well as the maven central repo. See the autobuild log. As an example:
2020-09-30T15:55:14.5487002Z [2020-09-30 15:55:14] [autobuild] [INFO] Downloading from bintray-gov-uk-notify-maven: http://dl.bintray.com/gov-uk-notify/maven/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.pom

2020-09-30T15:55:14.6595514Z [2020-09-30 15:55:14] [autobuild] [INFO] Downloading from bintray-govuk-pay-pay-java-commons: https://dl.bintray.com/govuk-pay/pay-java-commons/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.pom

2020-09-30T15:55:14.8841450Z [2020-09-30 15:55:14] [autobuild] [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.pom
2020-09-30T15:55:15.0096490Z [2020-09-30 15:55:15] [autobuild] [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.11/commons-lang3-3.11.pom (30 kB at 242 kB/s)

The effect is that the build times out because most of the libraries don't exist in the non-maven-central repos.

I'm not quite sure what happened there. GitHub Actions and the codeql-action in particular are capable of handling builds that take much longer (e.g. over an hour). Looking at your log it looks like the workflow run was cancelled by a user, and not by the maven failing.
If it is that the autobuilder is building too much, or just not what you want to build, then you could try replacing that step in your workflow with custom build commands.

Yes that build was cancelled by me but there was a previous one that timed out. Using a custom build command worked for me though. Will close this issue.


sff notes add -F clears details

Similar to previous issue with sff add -E. Has to do with an argument having a default value of an empty string which fails to match to None in sfftk.notes.modify.

Fixed in ebc8079a70161714e7a67f48260874bcbdd615da


atom-linter 5.x breaking linter

After updating the atom-linter dependency from 4.7.0 to 5.0.2, I had a linter package break with the following stack trace:
Error: Process exited with non-zero code: 2
    at ChildProcess.<anonymous> (node_modules/atom-linter/node_modules/sb-exec/lib/index.js:46:22)
    at emitTwo (events.js:87:13)
    at ChildProcess.emit (events.js:172:7)
    at maybeClose (internal/child_process.js:818:16)
    at Socket.<anonymous> (internal/child_process.js:319:11)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at Pipe._onclose (net.js:469:12)

I checked the release notes for the sb-exec breaking change and modified my exec accordingly to:
return helpers.exec(executable, args, {cwd: path.dirname(file), allowEmptyStderr: true}).then(output => {

but the same stack trace resulted.

You can set ignoreExitCode to true to ignore the error code monitoring

Thanks, that fixed the issue. Maybe add that to the doc/release notes?

https://github.com/steelbrain/atom-linter/wiki/Migration-Guide#api-v4---api-v5

Updated.

Thanks but I thought we already had
Handling of return codes implemented, potentially breaking providers of linters that don't follow common best practices.

But I guess the new addition doesn't hurt 😅

I don't know where that line is from to be honest.
I am a polyglot, so I use something like twenty plus linters, and the exit code '2' for raised issues during the linting is actually somewhat common from what I have observed. I don't know if I would consider it best practices or not, but it certainly is common use.

Oh I was referring to the Upgrade Guide doc


1.19.3

Could you please add an update for 1.19.3?
I have a terrifying custom modpack based around being scary and hard, I'd REALLY love to be able to use this with it!

Hi @Garridan,
just pushed a new release. Tested and works on MC 1.19.3 with Forge 44.1.0 but any Forge version >=44 should be fine.
As a side note, I find it baffling that nowadays Forge seems to get a new major release for every Minecraft patch. Like Minecraft 1.19.3 has Forge 44.x but 1.19.4 has 45.x. Makes it unnecessarily hard to have mods support multiple MC versions.


Fix gethostbyaddr deprecation warnings

Use supported Addrinfo APIs to get the fully qualified local host name.

After a fair bit of local debugging, I suspect this test failure is flaky? I could only reproduce it when I had another instance of resque-scheduler attached to my Redis server.

Hey I think this is probably okay to sneak into a patch release. Would you mind removing the gemspec changes? The gemspec changes aren't required for this fix.

Would you mind removing the gemspec changes? The gemspec changes aren't required for this fix.

@PatrickTulskie done, thanks for reviewing!

Hey it looks like those commits are still in this branch. Can you remove the out of scope commits instead of just reverting them? I can also do a merge but the rebase with a single clean commit is better. Gonna aim to get in a point release next week.

Ah OK. We usually do squash merges here, so we don't fuss about the branch being noisy :-)

Sorry about the delay - I got tricked by Github not syncing the upstream and origin master branches quite the way I expected, and couldn't figure out why the test was failing (and couldn't figure out how to re-run that one test case without pushing a change - is that possible with this CI setup?)

@PatrickTulskie looks like this should be good to go now -- one commit as requested, and checks are passing. Can you please add this to a coming release for Ruby 3 compatibility?

Sorry about the delay merging this. Was dealing with an end of quarter crunch. Anyhow, it's in gem v4.8.0 shipped just now.


Multiple route multicle trips-Taking too much time to run

Hello,
I am trying to get solution for multiple route and multiple trip..that is I am using 3 vehicle and each vehicle are doing multiple trips. Also I have added dumping point so whenever vehicle is full is going to the dumping point to unload and starting again from the dumping point.
Currently the code I am using is running for ages and not giving any output. I have used 142 locations and total load is 400. Kindly help how i can solve this.
Here is the code:
_from __future__ import print_function
import math
from ortools.constraint_solver import pywrapcp
from ortools.constraint_solver import routing_enums_pb2
from numpy import genfromtxt
import pandas as pd

def create_distance_callback(dist_matrix):
  # Create a callback to calculate distances between cities.

  def distance_callback(from_node, to_node):
    return int(dist_matrix[from_node][to_node])

    for to_node in range(num_locations):
      if from_node == depot or to_node == depot:
            # Define the distance from the depot to any node to be 0.
            self.matrix[from_node][to_node] = 0
    else:
          dist_matrix[from_node][to_node] = (
            manhattan_distance(locations[from_node], locations[to_node]))
  return distance_callback

dist_matrix = genfromtxt(r'C:\Users\AbhishekAgrawal\Desktop\folder\full_validation_points_dist_matrix_x.csv', delimiter=',')

# Demand callback
class CreateDemandCallback(object):
  """Create callback to get demands at each node."""

  def __init__(self, demands):
    self.matrix = demands

  def Demand(self, from_node, to_node):
   # del to_node
    return self.matrix[from_node]

# Service time (proportional to demand) + transition time callback.
class CreateServiceTimeCallback(object):
  """Create callback to get time windows at each node."""

  def __init__(self, demands, time_per_demand_unit):
    self.matrix = demands
    self.time_per_demand_unit = time_per_demand_unit

  def ServiceTime(self, from_node, to_node):
    return self.matrix[from_node] * self.time_per_demand_unit

# Create total_time callback (equals service time plus travel time).
class CreateTotalTimeCallback(object):
  def __init__(self, service_time_callback, dist_callback, speed):
    self.service_time_callback = service_time_callback
    self.dist_callback = dist_callback
    self.speed = speed

  def TotalTime(self, from_node, to_node):
    return self.service_time_callback(from_node, to_node) + self.dist_callback(from_node, to_node) / self.speed

def DisplayPlan(routing, assignment):

  # Display dropped orders.
  dropped = ''

  for order in range(1, routing.nodes()):
    if assignment.Value(routing.NextVar(order)) == order:
      if (dropped.empty()):
        dropped += " %d", order
      else: dropped += ", %d", order

  if not dropped.empty():
    plan_output += "Dropped orders:" + dropped + "\n"

  return plan_output

def main():
  # Create the data.
  data = create_data_array()
  dist_matrix = data[0]
  demands = data[1]
  start_times = data[2]
  end_times=data[3]
  #print(data[2])
  num_locations = len(dist_matrix)
  #print(num_locations)
  #depot = 68
  num_vehicles = 3

#   search_time_limit = 180

  # Create routing model.
  if num_locations > 0:

    start_location = [0,0,0]
    end_location=[141,141,141]
    # The number of nodes of the VRP is num_locations.
    # Nodes are indexed from 0 to tsp_size - 1. By default the start of
    # a route is node 0.
    routing = pywrapcp.RoutingModel(num_locations, num_vehicles, start_location,end_location)
    search_parameters = pywrapcp.RoutingModel.DefaultSearchParameters()
    search_parameters.first_solution_strategy = (
                                    routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC)

    # Callback to the distance function.
    #print(dist_matrix)
    dist_callback = create_distance_callback(dist_matrix)
    routing.SetArcCostEvaluatorOfAllVehicles(dist_callback)

    routing.SetArcCostEvaluatorOfAllVehicles(dist_callback)
    demands_at_locations = CreateDemandCallback(demands)
    demands_callback = demands_at_locations.Demand

    # Add capacity dimension constraints.
    vehicle_capacity = 200;
    null_capacity_slack = 0;
    fix_start_cumul_to_zero = True
    capacity = "Capacity"
    routing.AddDimension(demands_callback, null_capacity_slack, vehicle_capacity,
                         fix_start_cumul_to_zero, capacity)

    # Adding time dimension constraints.
    time_per_demand_unit = 0.01
    horizon = 720
    time = "Time"
#     tw_duration = 680
    speed = 40

    service_times = CreateServiceTimeCallback(demands, time_per_demand_unit)
    service_time_callback = service_times.ServiceTime
    total_times = CreateTotalTimeCallback(service_time_callback, dist_callback, speed)
    total_time_callback = total_times.TotalTime

    # Note: In this case fix_start_cumul_to_zero is set to False,
    # because some vehicles start their routes after time 0, due to resource constraints.

    fix_start_cumul_to_zero = False
    # Add a dimension for time and a limit on the total time_horizon
    routing.AddDimension(total_time_callback,  # total time function callback
                         15,
                         720,
                         fix_start_cumul_to_zero,
                         time)

    time_dimension = routing.GetDimensionOrDie("Time")

    for order in range(1, num_locations-1):
      start = start_times[order]
      end=end_times[order]
      #print("---")

      #print(end_times[num_locations-1])
      #print(start_times[num_locations-1])
      ##print("---")
 #     print(start_times[num_locations])
  #    print(end_times[num_locations])
      #print("---")
      x=start.item()
      y=end.item()

      time_dimension.CumulVar(routing.NodeToIndex(order)).SetRange(int(x), int(y))

    vehicle_start_time = [0,500,240]
    for vehicle_id in range(num_vehicles):
            index = routing.Start(vehicle_id)
            time_dimension.CumulVar(index).SetRange(vehicle_start_time[vehicle_id], vehicle_start_time[vehicle_id])

#     # Add resource constraints at the depot (start and end location of routes).

#     vehicle_start_time = [180,240,360]
# #     vehicle_unload_time = 0
#     solver = routing.solver()
#     intervals = []
#     for i in range(num_vehicles):
#       # Add time windows at start of routes
#       intervals.append(solver.FixedDurationIntervalVar(routing.CumulVar(routing.Start(i), time),
#                                                      vehicle_start_time[i],
#                                                      "depot_interval"))
#       # Add time windows at end of routes.
# #       intervals.append(solver.FixedDurationIntervalVar(routing.CumulVar(routing.End(i), time),
# #                                                      vehicle_unload_time,
# #                                                      "depot_interval"))
# #     print(intervals)
# #     print("*"*50)
#     # Constrain the number of maximum simultaneous intervals at depot.
#     depot_capacity = 1;
#     depot_usage = [1 for i in range(num_vehicles * 1)]
#     solver.AddConstraint(
#       solver.Cumulative(intervals, depot_usage, depot_capacity, "depot"))
#     # Instantiate route start and end times to produce feasible times.
#     for i in range(num_vehicles):
#       routing.AddVariableMinimizedByFinalizer(routing.CumulVar(routing.End(i), time))
#       routing.AddVariableMinimizedByFinalizer(routing.CumulVar(routing.Start(i), time))

    # Solve, displays a solution if any.
    assignment = routing.SolveWithParameters(search_parameters)
    if assignment:

      # Solution distance.
#      print("Total distance of all routes: " + str(assignment.ObjectiveValue()) + "\n")
      # Display solution.

      capacity_dimension = routing.GetDimensionOrDie(capacity)
      for node_index in [1, 2, 3]:
            index = routing.NodeToIndex(node_index)
            capacity_dimension.SlackVar(index).SetRange(0, vehicle_capacity)
      time_dimension = routing.GetDimensionOrDie(time)

      total_distance = 0
      total_load = 0
      total_time = 0
      visited_locations = []
      dropped_locations = list(range(num_locations))

      for vehicle_nbr in range(num_vehicles):
        index = routing.Start(int(vehicle_nbr))
        plan_output = 'Route {0}:'.format(vehicle_nbr)
        route_dist = 0
        route_load = 0
        while not routing.IsEnd(index):
          node_index = routing.IndexToNode(index)
          next_node_index = routing.IndexToNode(assignment.Value(routing.NextVar(index)))
          visited_locations.append(next_node_index)
          if next_node_index in dropped_locations:
                dropped_locations.remove(next_node_index)
          load_var = capacity_dimension.CumulVar(index)
          time_var = time_dimension.CumulVar(index)
#           print(time_var)
          route_dist += routing.GetArcCostForVehicle(node_index, next_node_index, vehicle_nbr)
#           route_load += [demands][node_index]
          plan_output += \
                    " {node_index} Load({load}) Time({tmin}, {tmax}) -> ".format(
                        node_index=node_index,
                        load=assignment.Value(load_var),
                        tmin=str(assignment.Min(time_var)),
                        tmax=str(assignment.Max(time_var)))
#           plan_output += ' {0} Load({1}) -> '.format(node_index, route_load)
          index = assignment.Value(routing.NextVar(index))

        node_index = routing.IndexToNode(index)  # Convert index to node
        total_distance += route_dist
        load_var = capacity_dimension.CumulVar(index)
        time_var = time_dimension.CumulVar(index)

        plan_output += \
                  " {node_index} Load({load}) Time({tmin}, {tmax})".format(
                      node_index=node_index,
                      load=assignment.Value(load_var),
                      tmin=str(assignment.Min(time_var)),
                      tmax=str(assignment.Max(time_var)))

        print("\n")

        plan_output += 'Load of the route: {}\n'.format(assignment.Value(load_var))
        plan_output += 'Time of the route: {}\n'.format(assignment.Value(time_var))
# #         plan_output += ' {0} Load({1})\n'.format(node_index, route_load)
        plan_output += 'Distance of the route: {0}m\n'.format(route_dist)
#         plan_output += 'Load of the route: {0}\n'.format(route_load)

        total_load += assignment.Value(load_var)
        total_time += assignment.Value(time_var)
        print(plan_output)
#         print(total_time)
        print("\n")

        print('Total Load of all routes: {}'.format(total_load))
        print('Total Time of all routes: {}min'.format(total_time))
        print('Total Distance of all routes: {0}m'.format(total_distance))
        print('Dropped visits: ', list(set(range(num_locations)) - set(visited_locations)))
    else:
      print('No solution found.')
  else:
    print('Specify an instance greater than 0.')
def create_data_array():
  tv=pd.read_csv(r'C:\Users\AbhishekAgrawal\Desktop\folder\full_collection_location_demand_df_decimal.csv')
  demands = tv.Demand

  start_times=tv.lower_limit_time_Summary
  end_times=tv.upper_limit_time_Summary

  data = [dist_matrix, demands, start_times,end_times]
  return data

if __name__ == '__main__':
  main()__

please, next time edit an issue than creating new ones (closing #1255 #1254)
Use ```python and ``` for code block

Are you sure there is a solution ?
Can you reduce the problem and check it is feasible ?


How to configure network of bare metal cluster, using dnsmasq?

I am trying to create a Tectonic bare metal cluster in a client's network, with three machines at my disposal. It's my first time creating a Tectonic bare metal cluster though (even though I've created many Tectonic clusters in the cloud), and my control of the network is very limited, so I really could use some hand holding throughout!
I have already created the matchbox server and it has a DNS record, so that problem is taken care of. Now, I need to understand how to configure iPXE booting of the cluster's nodes via the Matchbox server as described in the Tectonic documentation. I don't know for sure yet, but I don't think I will be able to configure iPXE booting in the network or add DNS records, so I guess I will have to rely on dnsmasq(?).
Could someone kindly explain how to proceed from here? Do I need to create the Kubernetes nodes as virtual machines and run dnsmasq on their hosts in order to have the required iPXE booting and DNS records so that I can let Tectonic Installer do its thing?

Hi I've been working on this past two days and got it cracked, take a look at this: https://github.com/1oglop1/k8s-virtualbox


Mesh nonexperimental extra

Follow-on for #6061
Given which..
Closes #6057

@bjlittle think this is finally worth looking at.
TIA !


Approach to unit tests

I would like to know what are the recommended approaches to unit testing the generated client codes. There is a generated example test but for integration. I am pretty new to go and ent, but I thought of the following strategies:

Move interactions on ent.Client to a separate layer e.g. using patterns like repository/DAO, then mock out that layer. However, I think that this is redundant.

Move individual interactions on ent.Client to separate functions that can be overridden during tests. This is simple and doable for simple usages.

Mock the generated client code by entc.

Use a mock sql driver like (https://github.com/DATA-DOG/go-sqlmock), or sqlite. I think this is also redundant. I would like to use objects outside of ent, and perform integration tests on an actual database at ent layer.

We use the same approach as the httptest package. Which means your code continue to work with ent.Client, but the underlying storage (sql.DB) is mocked.
You can use either go-sqlmock or sqlite. I'll recommend you to use sqlite, because with go-sqlmock you define exceptions on the executed queries and these are "low level" details that I don't expect our end users will have to deal with (in most cases).
Also, in some cases you have complicated queries that are hard to mock (with go-sqlmock), and it's much easier to generate a set of entities in the database and expect that the public API (you are testing) returns the right result.

I'll try to give an example how does a test in our services look like and I hope it will help.
Suppose you have a REST or GraphQL handler that uses ent.Client as a storage dependency, and you want to write some exceptions for the different scenarios. The code looks as follows:
func TestCreateUser(t *testing.T) {
    tests := []struct {
        name string                             // name of the test
        before func(*testing.T, *ent.Client)    // work before test
        expect func(*testing.T, *Server)        // actual exceptions
    }{
        {
            name: "create/already_exist",
            before: func(t *testing.T, client *ent.Client) {
                _, err := client.User.Create()...Save(ctx)
                require.NoError(t, err)
            },
            expect: func(t *testing.T, server *Server) {
                // Try to create a new User and expect it
                // fails due to "UserAlreadyExistsError"
            },
        },
       // more tests ...
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            // Create an SQLite memory database and generate the schema.
            client, err := ent.Open("sqlite3", "file:ent?mode=memory&cache=shared&_fk=1")
            require.NoError(t, err)
	    defer client.Close()
            require.NoError(t, client.Schema.Create(context.Background()))
            // Run work before the test.
            tt.before(t, client)
            // Run the actual exceptions.
            tt.expect(t, &Server{
                Client: client, // inject ent.Client as a dependency.
            })
        })
    }
}

The table driven test is not really necessary here.

All clear! Thanks for the great answer. I hope this will help other people as well 🎉


Replace poly variants that use @as with strings

The problem
When using poly variants for string enums, we transformed a lot of "string-with-dash" to camel case stringWithoutDash, relying on ReScript @as annotation.
Now that ReScript allows poly variants to have string syntax, we could  change this choice to make it more straight forward to new ReScript user that are familiar with React Native.
Considered solution
We could make this a breaking change. Maybe a codemod will help.
Alternatives solutions
We can also:

add strings values (so people can use both syntax (with-dash or withoutDash) and keep both (maintenance++)
integrate both & deprecate later withoutDash if that possible (syntax seems to be accepted but it doesn't seems to show the warning - I tested  | @deprecated("use #\"plain-text\" instead of #plainText") @as("plain-text") #plainText in Alert.res)

A big advantage of a breaking change would be that we could define the types for such poly variants in one place instead of having to copy them everywhere.
E.g., instead of having
  ~importantForAccessibility: @string
  [
    | #auto
    | #yes
    | #no
    | @as("no-hide-descendants") #noHideDescendants
  ]=?,

in every component binding, we can define
type importantForAccessibility = [ | #auto | #yes | #no | #"no-hide-descendants" ]

in a single place.

Yesss!


create end of day of every 2 month

how to create every 2 month, end of day, 12am to run cron?
0 24 28,29,30 * like this?

hi @jinyi0313
From the examples given : https://github.com/javan/whenever#example-schedulerb-file
You can specify a raw cron syntax too
every '0 24 28,29,30 *' do
  command "echo 'you can use raw cron syntax too'"
end


[IMPAC-408] Add pusher_key to MnoE impac config constant

@ouranos @x4d3 please review

I have moved from accessing the env variables directly to using Settings, so alterations to mno-enterprise should no longer be needed given this PR can work that way.


Ensure that DIRECTORY_MAPPINGS is available

Previous, we just check that RSpec::Rails was defined, which it can be yet not have RSpec::Rails::DIRECTORY_MAPPINGS defined. Lets ensure it is defined.

Huh, surprising it took this long to come up. Thanks!


Please stop using this Crappy old repo

You should not use this repo, the software isn't fully implemented (e.g. PROPPATCH is missing), and no you can use it with Windows or OS X to mount it as a drive. Especially due to the missing WebDAV methods and the even more ugly implementation on Windows and OS X (as most of their software is awful). Their webdav clients are awful... Only Filezilla Pro works fine for the moment

This is probably the best advice I've found on this repository. The code hasn't been touched in 6 years. Nginx does not play well with WebDAV at all. I've spent a good week on and off experimenting with Nginx and WebDAV and it has been extremely frustrating to say the least.
Don't use Nginx for WebDAV,  just don't, the default module in Nginx itself is too strict with the trailing slash issue. You will find websites with hacks to try and work around this but they'll fall over and break in certain conditions. I'm also pretty sure I'm hitting race conditions with WebDAV as well, but it's not like I can report this in any meaningful way when this repository is abandoned.
TL;DR: Don't expect WebDAV with Nginx to work properly.


Meteor requires Node v0.10.33 or later

Can't use the horse buildpack.  Theres no other option because I need to deploy some private packages and need to use meteorite.