Use DComp surface handle for Swap Chain management

Summary of the Pull Request
This PR changes the DxEngine to create a swapchain HANDLE, then have the TermControl attach that handle to the SwapChainPanel, rather than returning the swapchain via a IDXGISwapChain1.
I didn't write this code originally, @miniksa helped me out. The original commit was so succinct that I didn't think there was anything else to add or take away.
I'm going to need this for tear-out (#1256), so that I can have the content process create swap chain handles, then duplicate those handles out to the window process that will end up embedding the content.
References

DCompositionCreateSurfaceHandle
CreateSwapChainForCompositionSurfaceHandle
CreateSwapChainForComposition
Tear-out: #1256
Megathread: #5000
Project: https://github.com/microsoft/terminal/projects/5

PR Checklist

[x] Closes https://github.com/microsoft/terminal/projects/5#card-50760249
[x] I work here
[ ] Tests added/passed
[n/a] Requires documentation to be updated

Detailed Description of the Pull Request / Additional comments
This reverts commit c113b65d9b15028281f6383909a73dba6af55bfc.
That commit reverted 30b833547928d6dcbf88d49df0dbd5b3f6a7c879
Validation Steps Performed

[x] Built and ran the Terminal, it still seems to work
[x] Does a TDR still work? or do we need to recreate the handle, or something.
[x] Does this work on Win7? I honestly have no idea how DX compatibility works. Presumably, the WPF version uses the ForHwnd path, so this will still work, but I don't know if this will suddenly fail to launch on Win7 or something. Tagging in @miniksa.

Idle thought: should we use the APISet name for dcomp.dll? It might be more "future proof" or whatever.


Test on Ruby 2.5 and 2.6

Context
Currently, there are 38 test cases fail on Ruby 2.5 and 2 failures on Ruby 2.6.
However, it is not obvious from CI.
Change
Test the gem on Ruby 2.5 and 2.6 so that people have better visibility on the failed test cases.

Interestingly, after updating the Ruby 2.5 patch version to the latest, that works fine. Two failures in 2.6 due to changes in the CSV loading code, I think.

I wonder if perhaps it would be best to merge in the 2.5 build, then open up a branch for 2.6 support, as that's obviously going to need a bit of work.


14.8 jailbreak

Do you have a jailbreak for version 14.8?

Please close this and READ MANUAL BEFORE POSTING HERE

the README clearly states that it's for 14.3-14.5.1, and with modification it can be 14.0-14.5.1

@keko01 please close this issue, 14.8 is not happening that is not the purpose of fugu14.

The issue is closed for me.


Advanced Filter: need “Does not equal” condition

There are use cases when a user might need to use a “Does not equal” condition alongside another condition. See attached example.

That is actually configurable.
You can use number-comparators to set your condition's dropdown options.

I'm interpreting this as a feature request. Currently, there is no not_equal comparator available for strings (not_equal is only available for numeric fields).


[Install] Fetch all symbolic refs (not just branch heads)

The intention here is to allow installing a gem from git using a
ref of the form "refs/zuul/" (which are used by the zuul
continuous-integration system). There are likely other use cases for
arbitrary refs.
An example Gemfile that would take advantage of this functionality can
be seen at [1]; however, it currently fails to fetch the existing ref
with the error seen at [2].
[1] https://review.openstack.org/#/c/351437/1/Gemfile
[2] http://logs.openstack.org/37/351437/1/check/gate-puppet-log_processor-puppet-lint/7be9b6a/console.html#_2016-08-05_02_06_48_423939

This change is

Could this have performance implications?

Also, could you please add a test confirming that non-symbolic refs work? Thanks!

This would (for example) have a dramatic impact on any Github-hosted open-source project, since Github creates a named ref for every single PR that has ever been opened. Pulling all named refs will mean fetching a lot of commits that aren't in any branch in the repo. :/

I would really like to be able to install gems from arbitrary remote refs in my CI system, but I can't find a way to make this configurable to prevent the performance impact on Github projects.

I think this could happen if you only fetch the named refs asked for in a gemfile?

See https://github.com/bundler/bundler/pull/5624


[release-1.22] bump etcd to v3.5.3

Pull in fix for https://github.com/etcd-io/etcd/issues/13766

Verified in k3s with release 1.22 on commit 33d61bdb26d0b686cff238d3fb2e86f3404ca7fa
$ k3s -v
k3s version v1.22.8+k3s-33d61bdb (33d61bdb)
go version go1.16.10

$ journalctl -xe | grep etcd
...
Apr 18 17:10:21 ip-172-31-47-105 k3s[2561]: time="2022-04-18T17:10:21Z" level=info msg="Starting etcd for new cluster"
Apr 18 17:10:21 ip-172-31-47-105 k3s[2561]: {"level":"info","ts":"2022-04-...
Apr 18 17:10:21 ip-172-31-47-105 k3s[2561]: {"level":"info","ts":"2022-04-18T17:10:21.103Z","caller":"embed/etcd.go:479","msg":"starting with peer TLS","tls-info":"cert = /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt, key = /var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key, client-cert=, client-key=, trusted-ca = /var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt, client-cert-auth = true, crl-file = ","cipher-suites":[]}
Apr 18 17:10:21 ip-172-31-47-105 k3s[2561]: {"level":"info","ts":"2022-04-...
Apr 18 17:10:21 ip-172-31-47-105 k3s[2561]: {"level":"info","ts":"2022-04-18T17:10:21.105Z","caller":"embed/etcd.go:308","msg":"starting an etcd server","etcd-version":"3.5.3",...


Add Az 5.0.0 migrate guide on index page

Add Az 5.0.0 migrate guide
Set cmdlet reference to 5.0.0

Docs Build status updates of commit f74e102:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-conceptual/azps-5.0.0/index.yml
:white_check_mark:Succeeded
View (azps-5.0.0)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Java short name

see #15
The source code encoding param was added separately using #16
fyi @whatever098 - would you be able to provide a detailed description of what problem you have (with examples) and how this code solves it?

This modification is due to the issue that when the XSD file contains Chinese labels, the generated paths include Chinese characters, causing the JAR file to fail execution. Therefore, Java short names are used to avoid this problem.

@whatever098  I took your uof.xsd from https://github.com/apache/xmlbeans/pull/18#issuecomment-2202637965 and I was able to get scomp to build classes and a jar for the xsd.
Used this command:
bin/scomp -sourcecodeencoding utf-8 -src mysrc uof.xsd

I built XMLBeans using the latest trunk code.
I don't see a need for this PR.

@pjfanning More precisely, the reason is that we expect to generate the alias class of the tag rather than the tag name

@pjfanning More precisely, the reason is that we expect to generate the alias of the tag as the name  of the xsbs in the jar, rather than the tag name. there is not any problem in the usage of you command, but the generated jar uses Chinese names as xsb's names. So this will cause the xsb to not be found at runtime.
Take uof.xsd as an example. When shortjavaname is not used, the generated jar will look like this:

I tested the jar I generated and was able to use it ok with no issues.
package org.example;

import cn.org.nits.uof3.zhCn.x2021.uof.用户类型;

public class Main {
    public static void main(String[] args) {
        用户类型 o1 = 用户类型.Factory.newInstance();
        用户类型.文档标识0004 o2 = o1.addNew文档标识0004();
        o2.set标识符B6EC("标识符B6EC");
        System.out.println(o1);
    }
}

I tested the jar I generated and was able to use it ok with no issues.
package org.example;

import cn.org.nits.uof3.zhCn.x2021.uof.用户类型;

public class Main {
    public static void main(String[] args) {
        用户类型 o1 = 用户类型.Factory.newInstance();
        用户类型.文档标识0004 o2 = o1.addNew文档标识0004();
        o2.set标识符B6EC("标识符B6EC");
        System.out.println(o1);
    }
}

Are you running in Windows or Linux?

I tested the jar I generated and was able to use it ok with no issues.
package org.example;

import cn.org.nits.uof3.zhCn.x2021.uof.用户类型;

public class Main {
    public static void main(String[] args) {
        用户类型 o1 = 用户类型.Factory.newInstance();
        用户类型.文档标识0004 o2 = o1.addNew文档标识0004();
        o2.set标识符B6EC("标识符B6EC");
        System.out.println(o1);
    }
}

Are you running in Windows or Linux?

Macbook.


Tutorials 4-7

@byarger-ebay This is ready for your eyes when you have time. Here's a link to the readable format if it helps: https://github.com/eBay/NSTSuite/blob/6367266c150a460f96211c6ef6e81aed6ec23f4b/NSTTutorials/README.md


code vcs

Describe the feature
I've found that all areas where you can't access GitHub can be accessed with CLI very well, so can you support GH in VCS?
https://github.com/cli/cli
Relevant code
No response

We could add a section for GitHub CLI commands to the command menu.

We could add a section for GitHub CLI commands to the command menu.

I tested the "go repo clone" command without extended parameters to clone submodule, a bit of a pity, but cli access to github in China is quite stable, other countries with access restrictions should be the same, I am ready to make a githubApp to complete the desktop platform and mobile platform github client to solve the access problem, at present, github official github mobile works very well, but some of the features of the web version are missing, For example, the code search function is very chicken.,The function of updating the fork repository is not.,There is no fork repository menu.,No deletion of the repository.,Modify the commit name.,Merge multiple commits.,Clean up and compress the repository.,Star management is not very powerful.,I vaguely feel that the Android platform is not limited by the implementation of file system monitoring:It's better to monitor the .git directory in the sd directory.,But the above mentioned functions seem to be implemented in gh.,I'll read the gh code further to see the repo. The clone command is not heavily dependent on the git system.

You can push and pull with git, you only need gh for issues and PRs, right?

No, I need a fairly stable network environment to operate git's pull push, pr issue, etc. At present, it is such a bad situation in China: within 30 minutes, I may be able to access github for 5 minutes, at this time I can successfully operate git related commands, the bad thing is that it will not give me this time continuously in just a few minutes, it is random, for this reason I used image repositories before, and before for the convenience of pr and update fork, I had no choice but to delete some image repositories and use vpn. Interestingly: you may find that I can often reply to the issued and browse the github repository normally, this is a long time ago one day, I installed github mobile, found that it access is very stable, in the further investigation found that: it should be called the github cli repository in the api.github xxx and other public APIs, before this I tried the official API to provide the public IP to write hosts, but unfortunately not very stable
---Original---
From: @.>
Date: Tue, Feb 20, 2024 06:22 AM
To: @.>;
Cc: @.>;"State @.>;
Subject: Re: [cogentcore/cogent] code: vcs (Issue #312)
You can push and pull with git, you only need gh for issues and PRs, right?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you modified the open/close state.Message ID: @.***>

https://api.github.com/meta
---Original---
From: @.>
Date: Tue, Feb 20, 2024 06:22 AM
To: @.>;
Cc: @.>;"State @.>;
Subject: Re: [cogentcore/cogent] code: vcs (Issue #312)
You can push and pull with git, you only need gh for issues and PRs, right?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you modified the open/close state.Message ID: @.***>

So is it possible for Cogent Code to communicate directly with those GitHub APIs that you can access?

This is the case with all github-related URLs, which are not well accessible, and sometimes it is a luxury to look at the demo png, gist, etc. of a repository
---Original---
From: @.>
Date: Tue, Feb 20, 2024 06:22 AM
To: @.>;
Cc: @.>;"State @.>;
Subject: Re: [cogentcore/cogent] code: vcs (Issue #312)
You can push and pull with git, you only need gh for issues and PRs, right?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you modified the open/close state.Message ID: @.***>

Yes, the API https://api.github.com/ is public, anyone can use it, we just need to make a GitHub login process like Goland's VCS page and save the token in a certain location, and then read the token in the directory tree of code and right-click in the directory tree, etc., and read the things needed in the token https://api.github.com/ can be accessed as the web version
---Original---
From: @.>
Date: Tue, Feb 20, 2024 07:19 AM
To: @.>;
Cc: @.>;"State @.>;
Subject: Re: [cogentcore/cogent] code: vcs (Issue #312)
So is it possible for Cogent Code to communicate directly with those GitHub APIs that you can access?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you modified the open/close state.Message ID: @.***>

Details

package main

import (
	_ "embed"
	"encoding/json"
	"net"

	"cogentcore.org/core/gi"

	"github.com/ddkwork/golibrary/mylog"
	"github.com/ddkwork/golibrary/stream"
	"github.com/ddkwork/golibrary/stream/net/httpClient"
	"github.com/ddkwork/golibrary/widget"
)

//go:generate core generate
//go:generate core build -v -t android/arm64
//go:generate core build -v -t windows/amd64
//go:generate go build .
//go:generate go install .
//go:generate svg embed-image 1.png

//go:embed ghips.go
var icon []byte

// https://faststone-photo-resizer.en.lo4d.com/windows
func main() {
	ips()
	return
	// icons.AddFS()
	gi.TheApp.SetIconBytes(icon)
	b := gi.NewBody("ghips")
	widget.NewWindowRunAndWait(b, func(names []string) {
	})
}

var webhookIpNets []*net.IPNet

func ips() {
	for _, cidr := range []string{
		"<IP_ADDRESS>/22",
		"<IP_ADDRESS>/22",
		"<IP_ADDRESS>/20",
		"<IP_ADDRESS>/20",
		"2a0a:a440::/29",
		"2606:50c0::/32",
	} {
		_, ipNet, err := net.ParseCIDR(cidr)
		if !mylog.Error(err) {
			return
		}
		webhookIpNets = append(webhookIpNets, ipNet)
	}

	url := "https://api.github.com/meta"
	c := httpClient.New().Url(url).Get()
	if !c.Request() {
		return
	}
	m := new(Meta)
	if !mylog.Error(json.Unmarshal(c.ResponseBufStream().Bytes(), m)) {
		return
	}
	mylog.Struct(m)

	stream.WriteTruncate("meta.json", c.ResponseBufStream().JsonIndent())
}

var (
	path = "C:\\Windows\\System32\\drivers\\etc\\hosts"
	orig = `
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      <IP_ADDRESS>     rhino.acme.com          # source server
#       <IP_ADDRESS>     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#	<IP_ADDRESS>       localhost
#	::1             localhost

`
)

var dots = []string{
	"avatars1.githubusercontent.com",
	"www.github.com",
	"camo.githubusercontent.com",
	"avatars7.githubusercontent.com",
	"raw.github.com",
	"avatars8.githubusercontent.com",
	"avatars0.githubusercontent.com",
	"avatars3.githubusercontent.com",
	"avatars4.githubusercontent.com",
	"avatars5.githubusercontent.com",
	"marketplace-screenshots.githubusercontent.com",
	"gist.githubusercontent.com",
	"gist.github.com",
	"cloud.githubusercontent.com",
	"repository-images.githubusercontent.com",
	"user-images.githubusercontent.com",
	"assets-cdn.github.com",
	"avatars2.githubusercontent.com",
	"raw.githubusercontent.com",
	"avatars6.githubusercontent.com",
	"desktop.githubusercontent.com",
	"github.com",
}

// <IP_ADDRESS> avatars1.githubusercontent.com
// <IP_ADDRESS> www.github.com
// <IP_ADDRESS> camo.githubusercontent.com
// <IP_ADDRESS> avatars7.githubusercontent.com
// <IP_ADDRESS> raw.github.com
// <IP_ADDRESS> avatars8.githubusercontent.com
// <IP_ADDRESS> avatars0.githubusercontent.com
// <IP_ADDRESS> avatars3.githubusercontent.com
// <IP_ADDRESS> avatars4.githubusercontent.com
// <IP_ADDRESS> avatars5.githubusercontent.com
// <IP_ADDRESS> marketplace-screenshots.githubusercontent.com
// <IP_ADDRESS> gist.githubusercontent.com
// <IP_ADDRESS> cloud.githubusercontent.com
// <IP_ADDRESS> repository-images.githubusercontent.com
// <IP_ADDRESS> user-images.githubusercontent.com
// <IP_ADDRESS> assets-cdn.github.com
// <IP_ADDRESS> avatars2.githubusercontent.com
// <IP_ADDRESS> raw.githubusercontent.com
// <IP_ADDRESS> avatars6.githubusercontent.com
// <IP_ADDRESS> desktop.githubusercontent.com
// <IP_ADDRESS> github.com
type Meta struct {
	VerifiablePasswordAuthentication bool `json:"verifiable_password_authentication"`
	SshKeyFingerprints               struct {
		SHA256ECDSA   string `json:"SHA256_ECDSA"`
		SHA256ED25519 string `json:"SHA256_ED25519"`
		SHA256RSA     string `json:"SHA256_RSA"`
	} `json:"ssh_key_fingerprints"`
	SshKeys                  []string `json:"ssh_keys"`
	Hooks                    []string `json:"hooks"`
	Web                      []string `json:"web"`
	Api                      []string `json:"api"`
	Git                      []string `json:"git"`
	GithubEnterpriseImporter []string `json:"github_enterprise_importer"`
	Packages                 []string `json:"packages"`
	Pages                    []string `json:"pages"`
	Importer                 []string `json:"importer"`
	Actions                  []string `json:"actions"`
	Dependabot               []string `json:"dependabot"`
	Domains                  struct {
		Website    []string `json:"website"`
		Codespaces []string `json:"codespaces"`
		Copilot    []string `json:"copilot"`
		Packages   []string `json:"packages"`
		Actions    []string `json:"actions"`
	} `json:"domains"`
}

//////////////////////test

package main

import (
	"net"
	"testing"

	"github.com/ddkwork/golibrary/mylog"
	"github.com/ddkwork/golibrary/stream"
	"github.com/ddkwork/golibrary/stream/cmd"
)

func Test_Cidr(t *testing.T) {
	cidrs := []string{ // 没有github apk稳定，得研究下它的获取ip方式
		"<IP_ADDRESS>/22",
		"<IP_ADDRESS>/32",
	}
	ip, ipNet, err := net.ParseCIDR(cidrs[0])
	if !mylog.Error(err) {
		return
	}
	ipss := make([]string, 0, ipNet.Mask[0])
	to4 := ip.To4()
	for i := int(to4[3]); i <= int(ipNet.Mask[0]); i++ {
		to4[3] = byte(i)
		ipss = append(ipss, to4.String())
	}
	// mylog.Struct(ipss)
	s := stream.New(orig)
	for _, dot := range dots {
		s.WriteStringLn(ipss[len(ipss)-1] + " " + dot)
	}
	stream.WriteTruncate(path, s.String())
	cmd.Run("ipconfig /flushdns")
}

//手动
//添加hosts
//访问 https://hosts.gitcdn.top/hosts.txt ， 将其全部内容粘贴到你的hosts文件中，即可。
//
//Linux / MacOS hosts路径：/etc/hosts
//Windows hosts路径：C:\Windows\System32\drivers\etc\hosts
//刷新生效
//Linux: /etc/init.d/network restart
//Windows: ipconfig /flushdns
//Macos: sudo killall -HUP mDNSResponder
//Unix/Linux 一键使用
//sed -i "/# fetch-github-hosts begin/Q" /etc/hosts && curl https://hosts.gitcdn.top/hosts.txt >> /etc/hosts
//提示：可以设置crontab定时任务定时获取更新即可，解放双手！

https://github.com/cli/cli/discussions/6889

I don't think modifying the hosts file is going to get around a country-wide firewall.

Is there a better solution? My machine doesn't have any anti-software.,Administrator account login.,The anti-virus software that comes with Windows has also been deleted.,All local machines are completely open.。 Do you mean that modifying hosts in addition to the local machine can't bypass the network provider's firewall check on the remote server?
---Original---
From: @.>
Date: Tue, Feb 20, 2024 08:08 AM
To: @.>;
Cc: @.>;"State @.>;
Subject: Re: [cogentcore/cogent] code: vcs (Issue #312)
I don't think modifying the hosts file is going to get around a country-wide firewall.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you modified the open/close state.Message ID: @.***>


Update eth firehose filters

It works ! I'm seeing combined filters being used properly, I could trigger handlers from filters that would otherwise exclude each other, while processing ETH blocks with protobuf version 2
LGTM (I did not test POI regarding fixes in protobuf version 2, but this is not what is being addressed here)


Timestamp timezone

When ngshare creates a datetime object, the timezone information is missing. This causes the timestamp string to have no timezone (for example, "2020-01-30 10:30:47.524219 " instead of "2020-01-30 10:30:47.524219 UTC").
https://github.com/lxylxy123456/ngshare/blob/d3438c7bb486cf3a2794020379ad24db547a281c/ngshare/database/database.py#L171
Maybe we can use this instead.
        self.timestamp = datetime.datetime.now(datetime.timezone.utc)

So to be honest, the backend does not care about whether there are timezoon info. The change you propose does not break test cases in backend, so feel free to merge the change in #54 at any time.


Changed to NotoSans

Changed fonts to NotoSans and make it support for more languages based on issue #2472

Can one of the admins please verify this patch?

It looks to me like this changes the default UIStyle font from "default" to "NotoSans-Regular-Medium" and changes the death screen font from "title" to "NotoSans-Regular".
The changes to the death screen ("title" is size -20?  Is that a typo? and "NotoSans-Regular" size 20) are probably fine, and easily tested.
Note that "default" is size 16 while NotoSans-Regular-Medium is size 36!   This seems like a bad idea since anyone using the default UIStyle is going to be hit with this change.
I recommend cancelling this PR unless @jasyohuang comments within the next month.


Document AKS integration with Kontain

Document how Kontain runtime integration with Azure Kubernetes Service (AKS) works.

Ran into a bug on Azure documented here - when deploying the testApp described here: #1405

Nicely done.


[ISSUE-364] Initial proposal

Purpose
Issue #364
Add proposal about refactoring logic with discovering if disk is clean or dirty and logic with AvailableCapacity manipulation in controller side
PR checklist

[x] Add link to the issue
[x] Choose PR label
[x] New unit tests added
[x] Modified code has meaningful comments
[ ] All TODOs are linked with the issues
[ ] All comments are resolved

Testing
Link to custom CI build

@AnastasiaShemyakinskaya  I added first portion of comments. Still looking at remaining changes...


Adding Height parameter

I've created an overload in my cloned copy of the repo that allows control over the image Height with a default of 1024. For backwards compatibility the height arguments for FromHtmlString() and FromUrl() is at the end of the method so existing code is not affected if anyone upgrades their package.
May I contribute my changes for review please?

@Augmensis go ahead. Thank you!


Thank you

Hello amsokol,
Just wanted to thank you for this amazing client.
May I ask: will it be maintained in the future? Will it be officially integrated into Apache Ignite documentation? I think Go + Ignite is a very exciting combination!

HI, thank you very much for feedback.

will it be maintained in the future?
Yes, I am going to continue developing this one.
Apache Ignite v2.7 has been released few days ago.
I am going to update Go client to v2.7.

Will it be officially integrated into Apache Ignite documentation?
I don't know. As for me I am ready to donate code and take part in official Go client development.


Unquoting argument values if not done by shell.

Command line parser now removes quotes from argument values, if the shell passes them on.

@akallabeth would you add a test case or example for this?

@bmiklautz ok.

Any news on this one?


[Core] Add support for Nested Conditions Filters via AndCondition and OrCondition

It would be great if we could also possibility to have complex filters which are combined via OrCondition and also have there again nested AndCondition inside.
The condition signature could looke like this:
class OrCondition {
    public readonly array $conditions;

    public function __construct(...$conditions)
    {
        $this->conditions = $conditions;
    }
}

class AndCondition {
    public readonly array $conditions;

    public function __construct(...$conditions)
    {
        $this->conditions = $conditions;
    }
}

The queries in the specific ...Searcher classes will get more complex. We would require to add some Recursive functionality and before implement such feature we require a research if this can even be achieved by all currently supported search engines.

...research if this can even be achieved by all currently supported search engines

Done a quick search:

algolia - yes
elasticsearch - ?
opensearch - ?
loupe - yes
meilisearch - yes
redisearch - yes
solr - yes
typesense - ?

I'm not sure about elasticsearch, opensearch and typesense.

@ToshY thx for the research:
The others seems also support it:

elasticsearch/opensearch can use the Boolquery: https://www.elastic.co/guide/en/elasticsearch/reference/8.11/query-dsl-bool-query.html#score-bool-filter

AND -> bool:must
OR -> bool:should
Nesting -> nested bool queries

typesense: https://github.com/typesense/typesense/issues/281

AND -> &&
OR -> ||
Nesting -> ()

implemented in #317

@alexander-schranz Guess you meant implemented in #433 🙂
Cool to see this implemented 👍 Will the docs also be updated with some examples on how to use these new conditions?

@ToshY Thanks.
Add examples for the two new conditions here: https://github.com/schranz-search/schranz-search/pull/441
Please let me know if that docs is clear enough.

@alexander-schranz
The examples are clear.
While I'm not a native English speaker, I think the phrasing at "AndCondition" section (see PR comment) could be a bit improved grammatically, but that's just me being nitpicky 🤐


Update for latest timer version

Fix up CI by updating to the latest version of tokio-timer.

Looks like json_str is also broken. I suppose I should fix it.


Update Vite peer dependency to including ^3.0.0

Current package indicates "vite": "^2.0.0" as its peer dependency, but since it is working well and comprehensively tested in Vite 3.x as well, I suggest modifying it to "vite": "^2.0.0 || ^3.0.0".
As of now this package constantly showing unmet peer dependency warnings with Vite 3.x.

@cometkim Could we get this added?

@devunt @gajus Yep, I just published it at v0.3.0

Thank you!


Async: supported or not? Change docs?

I am confused whether async is supported in Tape.
In the example in the README I see this:
test('test using promises', async function (t) {
    const result = await someAsyncThing();
    t.ok(result);
});

This to me strongly suggests Tape supports async.
Though I see no t.plan() or t.end(), which confuses me...
And indeed my test does not end... Even not after adding a call to t.end()...
So I perused the issue list where I found this issue:
Test using async/await does not end  #358
In there, I see this comment by the author:

You can't really pass an async function to tape because tape does not do anything with the promise it returns.

I guess the author knows what he is talking about. But this leaves me wondering. Why explicitly give an example of an async test when it is not really supported? Should we maybe remove that example from the docs?

Ah! That clarifies a lot!
In the mean time I have been doing some testing and it seems that you are right that it is supported as another async function that only calls setTimeout does finish as expected. So the issue seems to be in my code... as usual.
UPDATE
Did some more testing and figured it out. It has nothing to do with tape. The issue was that knex keeps the process alive unless I explictly call destroy on it or use process.exit. Thanks for your reply!


Add a custom item in main menu

How to reproduce the bug

Try to add any new item in menu.
If I add any new item in backend side for the menu its not visible.
Expected results
SQL lab menu should show a new item with the given name for newly added item
Actual results
Newly added item not appear
Checklist
I have reproduce the issue number of times.
I have checked the issue tracker for the same issue and I haven't found one similar.
Additional context
Approach  I have followed:  I have added the link into SQL Lab category as I want this new item in SQL Lab Category
appbuilder.add_link(
__("Drift"),
href="/superset/sqllab/drift/",
icon="fa-search",
category="SQL Lab",
)

Closing since this is stale, but I also think that this is more of a customization request than a bug report. I'd suggest taking this up in the #customizing-superset channel on Slack, or a Q&A discussion on the Discussions tab above. Thanks!

Working as Expected.


Feature request: Support indent-blankline

Please support Indent Blankline color.

With below config, it's better now:
	{
		"lukas-reineke/indent-blankline.nvim",
		config = function()
			require("indent_blankline").setup({
				-- For oxocarbon
				char_highlight_list = {
					"Whitespace",
				},
			})
		end,
	},


Unable to pass page.goto parameters into puppeteer prerenderer

referencing this issue
As I mentioned in the issue I referenced above I would like to create a PR that would allow the ability to pass parameters to the page.goto call here: link  would you be open to me creating this PR?

Added in the latest release.
Thanks a ton for the PR!


PixelDefend uses function that is not implemented

In pixel_defend.py, the __call__ method uses a function from estimator.py that is called get_activations. The issue is that get_activations raises a "not implemented error" and hence causes PixelDefend to be unusable. Is there another method that gets the activations of a specified layer or would that need to be implemented by the user? Thanks.

Hi @Ahmed-Hamoda Thank you very much for exploring ART! Could you please tell us more about how you are using these tools? Maybe in a Google Colab notebook?

Hi @beat-buesser, Im using PixelDefend to generate purified samples from adversarial samples. Here is the script I'm using (I took the example file in the ART library and changed it slightly):
from __future__ import absolute_import, division, print_function, unicode_literals

from datetime import datetime
import os
from matplotlib import pyplot as plt

import tensorflow as tf
from tensorflow.keras import Model
from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPool2D
import numpy as np

from art.attacks.evasion import *
from art.defences.preprocessor import *
from art.estimators.classification import TensorFlowV2Classifier
from art.utils import load_mnist

loss_object = tf.keras.losses.CategoricalCrossentropy(from_logits=True)
optimizer = tf.keras.optimizers.Adam(learning_rate=0.01)

def main():
    # Read MNIST dataset (x_raw contains the original images): (step 1)
    (x_raw, y_raw), (x_raw_test, y_raw_test), min_pixel_value, max_pixel_value = load_mnist()

    # Select 5000 images for training
    n_train = np.shape(x_raw)[0]
    num_selection = 5000
    random_selection_indices = np.random.choice(n_train, num_selection)
    x_raw = x_raw[random_selection_indices]
    y_raw = y_raw[random_selection_indices]

    # Select 500 images for testing
    n_train = np.shape(x_raw_test)[0]
    num_selection = 500
    random_selection_indices = np.random.choice(n_train, num_selection)
    x_raw_test = x_raw_test[random_selection_indices]
    y_raw_test = y_raw_test[random_selection_indices]

    (x_train, y_train) = (x_raw, y_raw)
    (x_test, y_test) = (x_raw_test, y_raw_test)

    # Create Model (step 2)
    class TensorFlowModel(Model):
        """
        Standard TensorFlow model for unit testing.
        """

        def __init__(self):
            super(TensorFlowModel, self).__init__()
            self.conv1 = Conv2D(filters=4, kernel_size=5, activation="relu")
            self.conv2 = Conv2D(filters=10, kernel_size=5, activation="relu")
            self.maxpool = MaxPool2D(pool_size=(2, 2), strides=(2, 2), padding="valid", data_format=None)
            self.flatten = Flatten()
            self.dense1 = Dense(100, activation="relu")
            self.logits = Dense(10, activation="linear")

        def call(self, x):
            """
            Call function to evaluate the model.
            :param x: Input to the model
            :return: Prediction of the model
            """
            x = self.conv1(x)
            x = self.maxpool(x)
            x = self.conv2(x)
            x = self.maxpool(x)
            x = self.flatten(x)
            x = self.dense1(x)
            x = self.logits(x)
            return x

    model = TensorFlowModel()

    # Create ART Classifier (step 3)

    classifier = TensorFlowV2Classifier(
        model=model,
        loss_object=loss_object,
        train_step=train_step,
        nb_classes=10,
        input_shape=np.shape(x_train[0]),
        clip_values=(0, 1),
    )

    # Train ART classifier (step 4)
    classifier.fit(x_train, y_train, nb_epochs=10, batch_size=128)

    # 1. Generating the attacks
    # 2. Evaluating the classifier on the attacks and test set using the defence
    # 3. Predicting the accuracy and storing data

    gen_defense = PixelDefend(eps=16,
                              clip_values=(0.0, 1.0),
                              verbose=True,
                              pixel_cnn=classifier)

    FGSM = FastGradientMethod(classifier)
    FGSM_x = FGSM.generate(x=x_raw_test)
    (FGSM_x, _) = gen_defense(x=FGSM_x)

    preds = np.argmax(classifier.predict(FGSM_x), axis=1)
    acc = np.sum(preds == np.argmax(y_test, axis=1)) / len(y_test)
    print("\nFGSM accuracy: %.2f%%" % (acc * 100))

def train_step(model, images, labels):
    with tf.GradientTape() as tape:
        predictions = model(images, training=True)
        loss = loss_object(labels, predictions)
    gradients = tape.gradient(loss, model.trainable_variables)
    optimizer.apply_gradients(zip(gradients, model.trainable_variables))

if __name__ == "__main__":
    main()

The issue is that when I run this script, everything is fine up until the (FGSM_x, _) = gen_defense(x=FGSM_x) line, where I get this error:
File "...\art\defences\preprocessor\pixel_defend.py", line 102, in __call__
    raise ValueError("Activations are None.")
ValueError: Activations are None.

I also tried to leave the pixel_cnn argument blank when I initialized the PixelDefend instance, but then I get this error:
File "...\art\defences\preprocessor\pixel_defend.py", line 154, in _check_params
    raise TypeError("PixelCNN model must be of type Classifier.")
TypeError: PixelCNN model must be of type Classifier.

If you look at the pixel_defend.py file that is mentioned in the error messages, you'll find this block of code:
        if self.pixel_cnn is not None:
            activations = self.pixel_cnn.get_activations(x, layer=-1, batch_size=self.batch_size)
            if activations is not None:
                probs = activations.reshape((x.shape[0], -1, 256))
            else:
                raise ValueError("Activations are None.")
        else:
            raise ValueError("No model received for `pixel_cnn`.")

If you then go to the self.pixel_cnn.get_activations() line, the get_activations method (which is found in estimator.py) is not implemented:
@abstractmethod
    def get_activations(
        self, x: np.ndarray, layer: Union[int, str], batch_size: int, framework: bool = False
    ) -> np.ndarray:
        """
        Return the output of a specific layer for samples `x` where `layer` is the index of the layer between 0 and
        `nb_layers - 1 or the name of the layer. The number of layers can be determined by counting the results
        returned by calling `layer_names`.

        :param x: Samples
        :param layer: Index or name of the layer.
        :param batch_size: Batch size.
        :param framework: If true, return the intermediate tensor representation of the activation.
        :return: The output of `layer`, where the first dimension is the batch size corresponding to `x`.
        """
        raise NotImplementedError

I think that is what is causing the error, because the activations will always be None. If you need any more information or if you have a fix please let me know. Thanks

Hi @Ahmed-Hamoda I think you are almost there. The last code segment in your previous message shows the abstract definition of get_activations which itself does not get interpreted. The issue is caused because TensorFlowV2Classifier.get_activations currently only supports models of type tf.keras.Sequential and otherwise for ART 1.6 and earlier it returns None, from ART 1.7 it raises an exception with explanation if the model is not of type tf.keras.Sequential.
Could you please try to convert your model class TensorFlowModel from tensorflow.keras.Model to tf.keras.Sequential?

That fixed the error, thanks a lot!


Allow unindent without selection

Revival of #50289
Fixes #50279
Fixes #68154

This seems to fail 2 test cases.
test[tab]

is expected to become
test

after unindent (i.e. whitespace to the right is removed). This behavior is probably what caused the original issue. Any reason why it would work like that? Is it common in code editors?

Rebased. I also changed the failing test. tbh the two behaviors aren't really conflicting (i.e. Shift+Tab can remove trailing tab and unindent if there isn't one), but I'm just reviving a PR here, it's not like I know what it does >_>
@Paulb23 Review would be appreciated, the issue gets in my way too often.

Makes sense to me. I don't see why the current implementation would be desired - if I need to remove whitespace, I can just press Backspace. Removing previous whitespace, instead of just tabs at the beginning of a line, idk about that but seems pointless.

I reworked the PR. It no longer removes do_unindent(), it simply changes the method used for dedent action.

I would continue to remove do_unindent then I think we can merge this for 4.0, as this would fix #68154. Otherwise it requires a bit of a rework for multi-carets. Can add it back later if needed.

What's the difference between the remaining do_indent and indent_lines?

Some of those test are probably still worth keeping.

What's the difference between the remaining do_indent and indent_lines?

do_indent is called when the user presses tab, so will insert a tab/space at the caret(s). However, if there is a selection it will call indent_lines, which will move / indent lines that have a caret or selection. Similar to how the JetBrains IDE's work.

Some of those test are probably still worth keeping.

So should I change them to unindent_lines()? Which ones exactly?

So should I change them to unindent_lines()? Which ones exactly?

Yeah I think most of them should be okay apart from the ones under the /* Should indent inplace. */ heading.

Thanks!


feat(41825): JSDoc equivalent of import *

Fixes #22160
Fixes #41825
Fixes https://github.com/microsoft/TypeScript/issues/41825#issuecomment-1474529135

@typescript-bot pack this

Something we should test
/**
 * @importType
 * as Foo from "foo"
 */

and
/**

@importType {
A,
B,
C,
} from "foo"
*/

In our design meeting, I brought up some of the discussion on Twitter around the tag name.
I think the team is up for just calling it @import.
Something that came up was the use of type modifiers on import specifiers.
/**
 * @import { type Foo } from "foo"
 */

The preference was to disallow them for now, even though it might make copy/pasting from TS to JS easier. The idea was can always relax that restriction.
Another two things that I do want us to test:

Auto-imports - whether it works, where they get inserted in an import list, etc. This is kind of a big task
Declaration file generation - precisely how a /** @import */ comment translates into a TS import within a .d.ts file.

As raised above, multi-line should just work:

/**
 * @import {
 *   A,
 *   B,
 *   C,
 * } from "foo"
 */

@DanielRosenwasser I think the scanner can handle this case. However, I think we need to change the naming for this option :).
https://github.com/microsoft/TypeScript/blob/821b1d8fdfe5212563f18dd90c9b4d846f716432/src/compiler/scanner.ts#L1922-L1926

Auto-imports - whether it works, where they get inserted in an import list, etc.

@DanielRosenwasser The existing auto-import logic will add @param { import("./a").A } for the following case., Should we consider changing this logic to use @import?
// @Filename: /a.ts
export default interface A { }

// @Filename: /test.js
/**
 * @param { A/**/ } a
 */
export function f(a) { }

/**
 * @import
 * as Foo from "foo"
 ^
 what is this?
 */

@DanielRosenwasser  It's a tricky case because the first * in the JSDoc is a decoration. So, if we handle JSDoc like other tags, the correct way to use multiline import * should be...
/**
 * @import
 * * as Foo from "foo"
 */

Should we consider changing this logic to use @import?

I would say so - however, in the interest of keeping this PR smaller, you might want to do a follow-up PR instead. @andrewbranch might have thoughts here.

Regarding the ambiguity with *, I am okay with either decision. My personal suggestion is to say that the next token following a JSDoc import has to occur on the same line. @sandersn might have thoughts here.

Declaration file generation - precisely how a /** @import */ comment translates into a TS import within a .d.ts file.

@DanielRosenwasser These imports are currently transformed into ImportTypeNode ({import("./types").A}). Is it better to translate import tags as top-level declarations within the checker? https://github.com/microsoft/TypeScript/blob/c790dc1dc7ff67e619a5a60fc109b7548f171322/src/compiler/transformers/declarations.ts#L440

Since these have type-only import semantics in JSDoc, I would have assumed they would translate to type-only import declarations in the .d.ts file. I’m not sure it actually matters though.

Regarding the ambiguity with *, I am okay with either decision. My suggestion is to say that the next token following a JSDoc import has to occur on the same line. @sandersn might have thoughts here.

I'm also OK with any decision, and I think strict no-newline one is a good place to start except that it would require special-casing parseTag, which currently uses
const tagName = parseJSDocIdentifierName(/*message*/ undefined);
const indentText = skipWhitespaceOrAsterisk();

So I'd personally leave it as interpreting a leading asterisk as decoration:
/**
 * @import
 * { foo, bar }
 * from "multiline.js"
 */

equivalent to import { foo, bar } from 'multiline.js'. I don't think it's worth any additional code. Just test that
/**
 * @import
 * * as multiline from 'multiline.js'
 */

works.

Would it be correct/reasonably easy to emit an import statement + references to an alias instead of retaining the current approach of emitting an import type in-place?

If the statement's exposed named are bound as an Alias, like import declarations are, they should get used over an import type in declaration emit automatically. Actually, that this works without binding anything new right now surprises me - we must do some very special lookups for jsdoc types.
To get us to emit statements, you'd probably want to make sure we bind as SymbolFlags.Alias, there's a codepath in getTargetOfAliasDeclaration for those types, and that we actually transform (rather than uniformly elide) the jsdoc imports in declaration emit.

@typescript-bot pack this

@weswigham this looks ready to me now. Do you agree?

I was skimming for a test like this and I didn’t see one, so let me know if I missed it:
// @declaration: true
// @emitDeclarationOnly: true
// @checkJs: true
// @allowJs: true

// @filename: 0.ts
export default interface Foo {}
export interface I {}

// @filename: 1.js
/** @import Foo, { I } from './0' */

/**
 * @param {Foo} a
 * @param {I} b
 */
export function foo(a, b) {}

Is this input syntax valid, and does it emit valid declaration file syntax? The input syntax should be valid in my opinion, but if it wasn’t handled specifically, it may emit invalid syntax on the output:
import type Foo, { I } from './0';
//     ^^^^^^^^^^^^^^^
// A type-only import can specify a default import or named bindings, but not both.(1363)

I love this feature! I've noticed though, that if you import a type with the new syntax, and then only use that type inside of another typedef (used or unused in the js file), you get a ts6133 "is declared but its value is never read." warning, despite the imported type resolving and the new typedef being declared properly.  It only counts read state when something is assigned the type directly.

Hrmmm you are right. I'm having a hard time coming up with a minimal reproducible example. I think it may be related to cycles in the type import, but also related to usage of the cycling type.

My apologies if this has already been discussed, but it seems the new @import syntax doesn't support import attributes, especially the resolution-mode one that enables @typedef to resolve imports correctly regardless of the type of module being used.
For additional details, my codebase is mostly ESM, but some parts still have to be CJS for compatibility reasons with "old" tools. In those CJS parts, I previously imported types from the ESM part like this:
/** @typedef {import('../path/to/some/ESModule.js', { with: { 'resolution-mode': 'import' } }).MyType} MyType */

I have tried migrating to the new @import tag with an equivalent syntax, but it seems the import attribute is being ignored:
/** @import {MyType} from '../path/to/some/ESModule.js' with { 'resolution-mode': 'import' } */

Using the above syntax yields this error message:

The current file is a CommonJS module whose imports will produce 'require' calls; however, the referenced file is an ECMAScript module and cannot be imported with 'require'. Consider writing a dynamic 'import("../path/to/some/ESModule.js")' call instead.
To convert this file to an ECMAScript module, change its file extension to '.mjs', or add the field "type": "module" to '/CJSpart/package.json'. ts(1479)

Am I wrong, or is this simply not available yet for @import? Thanks 🙏

@acidoxee Can you create a new issue? I'll take a look at it.

Sure @a-tarasyuk, here you go! https://github.com/microsoft/TypeScript/issues/58955
I hope the format of the issue is OK, I couldn't create a TS playground with several files because of https://github.com/microsoft/TypeScript/issues/52666.

@bcomnes I can't reproduce that behavior; here's my attempt in the playground: https://www.typescriptlang.org/play/?noUnusedLocals=true&ts=5.6.0-dev.20240605&filetype=js#code/PTAEAEDsHsFVIK4GcCmATAMtAxgQwDZIBcoALgE4IoCwAUHQJYC2ADtOaaAEQBmSXAbjp1gAKlERmbDqADeoAOrkGpFADEG+FAHkWpBtEhJQAX1A9y0Jtz5dQo4MNohQ8bFaYpI+yAHNzDAAeKMakABYooCjkluQiYGIS4KQAnizoKDxySirqmjp6BkZmCmra9sBAA
If you can show an example, could you open a new issue? Thanks!

maybe i can reproduce this in my case:
types.d.ts
export type TestType = {
	route: string;
	method?: string | undefined;
	handle: Function;
	upload?: boolean | undefined;
	option?: Object | undefined;
};

test1.js
/** @import { TestType } from './types.d.ts' */

export default async function doSomething() {
	/** @type {TestType[]} */
	const types = [];

	return types;
}

test2.js
/** @import { TestType } from './types.d.ts' */

export default {
	/** @type {TestType[]} */
	types: []
};

For the same project as above, I found another problem: tsc doesn't seem to recognize types imported via @import correctly.

Hi guys, not sure if i should simply open an issue instead of writing here but is it me or it's not possible to just import all ?
/** @import * from "./types.ts" */

In general it's not best practice to comment on a closed PR or issue since people stop following as often, and creates noise in the conversation.
To answer your question, you have to create a name for the import:
/** @import * as myTypes from "./types.ts" */
//            ^^^^^^^^^^

JavaScript/TypeScript doesn't support an "import all the things from this module into the current scope" sort of import statement.

Alright, i'm really confused, i swear i used to do this all the time before ESM was a thing but maybe i'm wrong...
Maybe i assumed we could do it since we can do it with export 🤷♂
Thanks !


Error trying to register printer

Hello again Karl,
I tried to register a printer by running your code in the GoogleCloudPrintApi.Samples project. I  substituted the client ID and client secret for my 'other' type account.
After trying to execute the line var googlePrinter = client.RegisterPrinterAsync(request).Result; from the Register Printer method, I get the following message from the base exception: FileNotFoundException: Could not load file or assembly 'System.Collections.NonGeneric, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.
Upon further investigation, I think the error ultimately comes from the GenerateAccessTokenAsync method in the GoogleOAuth2ProviderBase.cs file.
I tried to look for a version <IP_ADDRESS> of this DLL. The closest I could find is version 4.3.
Again, any help would be greatly appreciated.

May I know what platform you are targeting? It's weird the lib uses ms beta package for operating. But at the time being, you may use the beta package from ms here: https://dotnet.myget.org/feed/dotnet-core-dev-api/package/nuget/System.Collections.NonGeneric/4.1.0-beta-devapi-24424-01

I got past the error by downloading .NET Core 2.0 and setting the target framework of the sample program to .NET Code 2.0.
I then deleted one of my local printers using the delete button at https://www.google.com/cloudprint#printers. Then I renamed one of your XML files under the xps directories using the name of one of my local printers. When I ran the code, the name of the printer showed up on my list of Cloud printers. But when I tried to print, a job was queued, but never printed. I should point out that the printer is a 'classic' printer.
I was able to register and use this printer when I got code from https://github.com/google/cloud-print-connector. But there are several manual steps when registering the printer using the connector.
I also have Google Cloud Print service running. Maybe that's connecting the printer in question to my computer and preventing proper registration.
So, I have lots of stuff to try, but if you have an insight into how to get my printer working after using this register interface, I would greatly appreciate it.

The lib doesn‘t automatically redirect your printed job to your target printer. The proper way is to call the download interface, pull the job from Google cloud to the local server, and redirect the downloaded content to the printer through calling the print program (maybe a PDF viewer that takes doc as an arg for printing)

I see. I'm going to close this issue. Unfortunately, I don't quite understand how to get the registered printer to actually print from your reply. So, I'm going to open another issue.


Cannot link NR-GAB account to Google Home

Trying to set this up for a friend who just got some LEDs controlled by WLED.
We've created an account and setup the flow in Node Red. When we try to link his account with NR-GAB to Google Home, we get a message saying that no compatible devices were found. I've tried setting up another device and still no luck.  The node in Node Red shows as connected.
Username is Cojo2077.
Thanks

I'm sorry, but all that is going to be on Google's side and not something I can influence.

It is just time-delay or caching issue on Google's side? Maybe I'll need to try again in a hour or two..

Try simpler devices, lights with just on/off, no brightness or colour settings.


Fee slider modifications and messaging as discussed in Slack on 7/4/18

What's new:
If "Custom Fee Rate" is specified in preferences then:

Fee slider disappears
It's replaced by a label (well, a HelpLabel actually) that shows the fee rate as calculated from the custom fee rate and/or manual fee override (manual fee override wins, but the custom fee rate is the initial default)

If "Custom Fee Rate" is not specified in preferences (this is the default on new installs), then:

Fee slider is visible and works as normal
The aforementioned help label is always hidden.

Note that I also cleaned up Jonald's code from the last commit and refactored it, and also made it play nice with the esoteric "CPFP" dialog which you can get from an unconfirmed tx, if you right-click on it in "history" and do "Child pays for parent"

Do you have any screenshots for a lazy person that doesn't want to run your PR :wink:?

Yes.. hang tight .. will post some.

Default screen (custom fees enabled, set to 1000):

Custom fees enabled, tx is partially filled in, real effective fee rate is updated in the label (also shows the help text copy I decided to use):

I updated the fee manually.. note the Fee label updated itself correctly:

Disabling the "custom fee rate" in prefs immediately swaps back the "FeeSlider" and hides the QLabel:

Fee slider works perfectly as before we added this facility.

On the first screenshot, maybe the "total fee" box should be auto-filled in? Not huge, but thats my 2 cents.

Marcel -- yeah the existing "update fee" code in main_window.py decided not to fill anything in until the "amount" is specified.
They do this because it's not clear what the TX size will be until at least "amount" is specified (since it's not clear how many inputs will be gobbled up for the TX).
We could pre-fill it in by having the "fake-tx" code actually implicitly create a dummy tx of '0' amount... to pre-fill that manual fee rate box..
If you guys want that, I will do that as a separate PR...

Let's not over-complicate things I guess, but maybe keep that in mind for the future? We can create an issue if it's something we want

I agree with that. :)

Fees are so 2017, no users need control over that in 2018

I actually agree.. i think we should make the default such that
"Custom fee rate" = 1.0 sats/B
(which hides the slider, and just does the intelligent thing)
That's what I would do if it were up to.

@cculianu FWIW I agree re 1 sat/byte as default custom fee rate

looks good overall, its an improvement over previous. we can keep improving if necessary.


Support custom CRS

Hello guys, me and @fegyi001 made avaible to use custom CRS in this project with help of proj4dart project (we are the authors of it).
Proj4Crs and Proj4Projection classes based on Proj4Leaflet project and it has BSD 2-Clause "Simplified" License so we need to make sure we can use their codebase.
We also added some support for multiple origins based on this commit (which is still not reviewed but I tested this feature on this map and the map isn't bouncing unlike in Leaflet's map 👌).
We made an example page which uses EPSG:3413 crs.

Closes #514

The only problem occurs if you try to over zoom / over unzoom, but the app doesn't crash or there isn't any flutter red error screen, just your console is being flooded 😄
You cannot over zoom via double taps only with double finger scale. I think this problem shouldn't be fixed on this level because I assume num scale(double zoom) { will have max value based on maxZoom and at least 0 value.
Over unzoom:
════════ Exception caught by gesture ═══════════════════════════════════════════════════════════════
The following RangeError was thrown while handling a gesture:
RangeError (index): Invalid value: Not in range 0..8, inclusive: -1

When the exception was thrown, this was the stack:
#0      List.[] (dart:core-patch/array.dart:15:52)
#1      Proj4Crs.scale (package:flutter_map/src/geo/crs/crs.dart:293:30)
#2      Proj4Crs.pointToLatLng (package:flutter_map/src/geo/crs/crs.dart:258:22)
#3      MapState.unproject (package:flutter_map/src/map/map.dart:238:24)
#4      MapGestureMixin.handleScaleUpdate.<anonymous closure> (package:flutter_map/src/gestures/gestures.dart:73:29)
...
Handler: "onUpdate"
Recognizer: ScaleGestureRecognizer#3b3f6
  debugOwner: GestureDetector
════════════════════════════════════════════════════════════════════════════════════════════════════

Over zoom:
════════ Exception caught by gesture ═══════════════════════════════════════════════════════════════
The following RangeError was thrown while handling a gesture:
RangeError (index): Invalid value: Not in range 0..8, inclusive: 9

When the exception was thrown, this was the stack:
#0      List.[] (dart:core-patch/array.dart:15:52)
#1      Proj4Crs.scale (package:flutter_map/src/geo/crs/crs.dart:294:30)
#2      Proj4Crs.pointToLatLng (package:flutter_map/src/geo/crs/crs.dart:258:22)
#3      MapState.unproject (package:flutter_map/src/map/map.dart:238:24)
#4      MapGestureMixin.handleScaleUpdate.<anonymous closure> (package:flutter_map/src/gestures/gestures.dart:73:29)
...
Handler: "onUpdate"
Recognizer: ScaleGestureRecognizer#40141
  debugOwner: GestureDetector
════════════════════════════════════════════════════════════════════════════════════════════════════

This looks good to me, ready to merge?

Yes :smiley:

Forget about zoom problems this PR resolves another problem. So yes I am ready to merge.

Hello @maRci002, I am living a problem about the create a new projection with yandex map tiles.
Could you help?
https://github.com/johnpryan/flutter_map/issues/642


CPU usage and scene idle

I noticed that CPU usage increases significantly (+ 20%) when the scene is shown on the screen (active tab), even when I'm not interacting with it at all (nor playing any animation). When multiple scenes (or scene views) are created in a notebook, fans are running high.
Tested on both Firefox and Chrome, on a MacBook Pro 13-inch, 2019 (MacOS Mojave). I'm using a 4k screen.
Out of curiosity, I've checked some examples from https://threejs.org/examples. Some of them seem to use a lot of CPU (especially animations), while others (static) don't use much CPU when not interacting with it.

I wonder what happens if you take a ThreeJS example containing a more refined mesh. If the CPU usage is high, I suspect it's because you don't have a dedicated GPU but are using an integrated one.

If the CPU usage is high, I suspect it's because you don't have a dedicated GPU but are using an integrated one.

Yes that's an integrated one. I'm not very surprised that CPU usage would quickly increase in that case, but I was wondering what could use CPU (or GPU) resources when the ipygany scene is in an apparent "idle" stage.

I wonder what happens if you take a ThreeJS example containing a more refined mesh.

For my use case (3D terrain visualization) I could also try the other way around, e.g., using something like pydelatin on the server side. It would also optimize data transfer. It might be tricky to compute an optimal, fixed mesh on time-dependent evolving terrain data, though.


AzureJobStore.clean() is very slow

I'm attempting to restart a run with somewhere between several tens of thousands and hundreds of jobs in an AzureJobStore.
The first step of the restart process appears to be to "clean" the job store, which involves walking the entire job graph, in serial, before scheduling any jobs. With 100,000 jobs, and one (or more, with chunking) round-trip HTTP request to the strongly-consistent-but-slow Azure Tables system per job, all happening in serial, this could take a long time. It's already taken 25 minutes so far for me, which is time my cluster is just sitting there not doing useful work.
Ideally the cleaning process (and, if possible, all the scheduling) should be able to be done on-line, without deserializing all the jobs. It could just be implicit: if the modification timestamp on a job is earlier than the start time of the Toil run, we just fix up its retry count when we load it. At the very least the traversal should be able to be done in parallel, so we don't need to wait for the round-trip latency to the table service for every single job.

It looks like the jobs() method on the AzureJobStore is actually only returning the first 1000 jobs; someone didn't implement a paging loop.

It also looks like jobs may all be stored in a single partition. Since a partition may only return 500 entities per second maximum according to the Azure docs, there may be a top speed at which we can read our job store.

I suggest we write a unit test that demonstrates the slowness and the incompleteness. We can skip the test on regular builds if necessary.

Alright. I'll figure out how to set up an environment that can actually run the unit tests (since they fail when they find my global user install of Toil that I use in all my scripts).


feature: selinux for cri manager

Signed-off-by: YaoZengzeng<EMAIL_ADDRESS>
Ⅰ. Describe what this PR did
Ⅱ. Does this pull request fix one issue?

Ⅲ. Describe how you did it
With this PR, we could enable one of the security context --- SELinux, if it's configured in CRI.
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Codecov Report

Merging #1092 into master will increase coverage by 0.52%.
The diff coverage is 28.3%.

@@            Coverage Diff             @@
##           master    #1092      +/-   ##
==========================================
+ Coverage   15.96%   16.48%   +0.52%
==========================================
  Files         161      161
  Lines        8856     8951      +95
==========================================
+ Hits         1414     1476      +62
- Misses       7339     7369      +30
- Partials      103      106       +3

Impacted Files
Coverage Δ

daemon/mgr/spec.go
0% <ø> (ø)
:arrow_up:

daemon/mgr/spec_linux.go
0% <0%> (ø)
:arrow_up:

daemon/mgr/cri_utils.go
28.85% <0%> (-1.57%)
:arrow_down:

daemon/mgr/container_utils.go
57.65% <60%> (+1.46%)
:arrow_up:

pkg/kernel/kernel.go
50% <0%> (-30%)
:arrow_down:

cli/network.go
0% <0%> (ø)
:arrow_up:

cli/volume.go
8.33% <0%> (+0.13%)
:arrow_up:

pkg/utils/utils.go
82.06% <0%> (+3.31%)
:arrow_up:

client/client.go
35.48% <0%> (+6.91%)
:arrow_up:

@allencloud PTAL

@allencloud Updated.

LGTM


how to split a pcap file by tags?

es: 6.8.1:
moloch:2.2.2:
ubuntu16.04:
Does moloch support generating  a pcap files based on tag, and the filename contains the tag?
Example:
vipA_tag -> {vipA-gre.pcap, other-gre.pcap}

We use github for feature requests and bugs, please come to slack for questions.


Small type fixes.

Fix type for ProductPurchase, add missing type for notifyFulfillmentAmazon.

Going to squash commits and clean up.


Update README.md

[ ] My submission is formatted according to the guidelines in the contributing guide
[ ] My addition is ordered alphabetically
[ ] My submission has a useful description
[ ] The description does not have more than 100 characters
[ ] The description does not end with punctuation
[ ] Each table column is padded with one space on either side
[ ] I have searched the repository for any relevant issues or pull requests
[ ] Any category I am creating has the minimum requirement of 3 items
[ ] All changes have been squashed into a single commit

Hey @manjula-guneratne
It's seems to have only the publisher jobs functioning of the API has been deprecated other functionalities of it is still working so there's no need to remove the API.
One example of that is one can use Indeed's authorization for getting users authenticated in their applications.


position(..) doesn't update if repeat is removed

https://github.com/kobotoolbox/enketo-express/issues/849
This is actually a long-standing deliberately designed bug. If the updated object includes a repeatPath, Enketo will only look at calculations (and relevants, and itemsets) that are inside that repeat or not in a repeat, i.e. it deliberately excludes all sibling repeats.
This was responsible for a major performance boost. Now we need to figure out how to fix the bug partially and try to keep performance degradation limited, e.g. :

perhaps only when a repeat is removed and
perhaps only including next sibling repeats (not previous)
without having to update all calculations in all sibling repeats

test form: repeat-position.xml

add following sibling repeats to collection and then one of the following options:

a. detect use of position(..) and perhaps indexed-repeat and evaluate expressions containing these
b. do something more intelligent with the use of .. or ../

Getting stuck because the calculated items are not inside their correct DOM location (inside the repeat).

closed by dde11324953ef2f19fa852f4a95e0c9fa4b8410c


The connection_from_* methods now accept pool_kwargs

This adds the ability to override the connection pool keyword arguments
used when constructing new pools in the connection_from_* methods. A
new keyword argument, pool_kwargs, is accepted by methods in
PoolManager. This is nice because without it, users that want to
change these arguments (when, say, adjusting SSL configurations) need to
make sure they update the keyword arguments and get a new pool in a
thread-safe manner.
This is a somewhat more invasive version of the patch on https://github.com/kennethreitz/requests/issues/3633 since people (reasonably) were surprised to see the instance's connection_pool_kw modified. I'm still not completely pleased with this change for a few reasons:

If I provide some override pool_kwargs and a new pool doesn't need to be created (the pool_kwargs aren't fields in the pool key), they will be ignored. That seems like it will surprise users.
A huge number of methods grew a new kwarg that gets passed down the chain of function calls, which is a little sad.

Current coverage is 100% (diff: 100%)

Merging #1016 into master will not change coverage

@@           master   #1016   diff @@
=====================================
  Files          19      19
  Lines        1573    1576     +3
  Methods         0       0
  Messages        0       0
  Branches        0       0
=====================================
+ Hits         1573    1576     +3
  Misses          0       0
  Partials        0       0

Powered by Codecov. Last update 24b1647...f15e8aa

Sorry for letting this languish. The tests are now passing and I think I've addressed all the initial comments!

Fab, thanks for re-evaluating! I'll re-review on Monday. =D

Okay, I've got it keying the pools on the entire context. I left all the old stuff there for the moment so you can still define custom key functions and the namedtuples still exist. It looks like cryptography is failing to link for Python 2.6 on OSX, though, which is why Travis is unhappy.

Okay, I prepended 'key_' to all the pool key fields. It doesn't look that bad, but it's a little odd. I think the Python 2.6 OSX build just needs a kick to pass since it passed on my fork.
Sorry for the long delay, I was traveling every weekend for the past month :(

But I'd like to get some other eyes on it because tbh I think I have tunnel vision on this patch at this point: I've spent so long looking at it I'm not sure whether I've just convinced myself that this is the right way to go!

Me too 😄 - more eyes are always good.

I'll put eyes on it sometime this week.

@nateprewitt, just a quick note: mind doing a re-review when you have some time to make sure your concerns were appropriately addressed?

Ok, this looks reasonable to me then. :sparkles: Let's do it.

@Lukasa Sure. Do you want me to squash the commits down as well, or do you prefer keeping them all as-is?

Let's squash them down, why not.

Okay, they're all squashed down and the changelog is updated.

Nicely done @jeremycline!

Thanks! I couldn't have done it without all the reviews and feedback, so many thanks to everyone for those.

is assert_hostname (key_assert_hostname) a valid key to pass to poolmanager? It is not part of that list and our client is failing because of that.


diffstat: 1.61 -> 1.62

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/diffstat/versions.
meta.description for diffstat is: '"Read output of diff and display a histogram of the changes"'.

Checks done (click to expand)

built on NixOS
/nix/store/g1f36qq7fz7jkj2kb1540glbvv4f28gf-diffstat-1.62/bin/diffstat passed the binary check.
1 of 1 passed binary check by having a zero exit code.
1 of 1 passed binary check by having the new version present in output.
found 1.62 with grep in /nix/store/g1f36qq7fz7jkj2kb1540glbvv4f28gf-diffstat-1.62
directory tree listing: https://gist.github.com/213ad74daea4da3e29296b8d93342ff9
du listing: https://gist.github.com/f5802652ba9edbc989019522b4e78dc2

Test this build with Cachix (click to expand)

One time setup in nixpkgs Git checkout:
cachix use r-ryantm
git remote add r-ryantm https://github.com/r-ryantm/nixpkgs.git

Test this build:
git fetch r-ryantm && git checkout 4f90841ba058d502417f877935d6082831d0fa44 && nix-shell --pure -I nixpkgs=. -p diffstat

cc @bjornfor for testing.

Success on x86_64-darwin (full log)
Attempted: diffstat
Partial log (click to expand)
install flags: SHELL=/nix/store/hp9yq2m1i066irvasv20zr2lmj54fk9h-bash-4.4-p23/bin/bash install
mkdir -p /nix/store/515k82nfx8ykd0byyx03hfw3zxqsdkhf-diffstat-1.62/bin /nix/store/515k82nfx8ykd0byyx03hfw3zxqsdkhf-diffstat-1.62/share/man/man1
/nix/store/ky1iq8hmr1b958d8fcaggpyaxhnfa8a6-coreutils-8.29/bin/install -c diffstat /nix/store/515k82nfx8ykd0byyx03hfw3zxqsdkhf-diffstat-1.62/bin/diffstat
/nix/store/ky1iq8hmr1b958d8fcaggpyaxhnfa8a6-coreutils-8.29/bin/install -c -m 644 ./diffstat.1 /nix/store/515k82nfx8ykd0byyx03hfw3zxqsdkhf-diffstat-1.62/share/man/man1/diffstat.1
post-installation fixup
gzipping man pages under /nix/store/515k82nfx8ykd0byyx03hfw3zxqsdkhf-diffstat-1.62/share/man/
strip is /nix/store/251fvx4mx9q4zarbca5cciasmn66p668-cctools-binutils-darwin/bin/strip
stripping (with command strip and flags -S) in /nix/store/515k82nfx8ykd0byyx03hfw3zxqsdkhf-diffstat-1.62/bin
patching script interpreter paths in /nix/store/515k82nfx8ykd0byyx03hfw3zxqsdkhf-diffstat-1.62
/nix/store/515k82nfx8ykd0byyx03hfw3zxqsdkhf-diffstat-1.62

Success on x86_64-linux (full log)
Attempted: diffstat
Partial log (click to expand)
/nix/store/bgii6n1si6za1ry0vbwnmiapzagcyrjm-coreutils-8.29/bin/install -c -m 644 ./diffstat.1 /nix/store/g1f36qq7fz7jkj2kb1540glbvv4f28gf-diffstat-1.62/share/man/man1/diffstat.1
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/g1f36qq7fz7jkj2kb1540glbvv4f28gf-diffstat-1.62
shrinking /nix/store/g1f36qq7fz7jkj2kb1540glbvv4f28gf-diffstat-1.62/bin/diffstat
gzipping man pages under /nix/store/g1f36qq7fz7jkj2kb1540glbvv4f28gf-diffstat-1.62/share/man/
strip is /nix/store/gpc2wld1s0c6qzx9326cwn1wcx29xzsj-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/g1f36qq7fz7jkj2kb1540glbvv4f28gf-diffstat-1.62/bin
patching script interpreter paths in /nix/store/g1f36qq7fz7jkj2kb1540glbvv4f28gf-diffstat-1.62
checking for references to /build in /nix/store/g1f36qq7fz7jkj2kb1540glbvv4f28gf-diffstat-1.62...
/nix/store/g1f36qq7fz7jkj2kb1540glbvv4f28gf-diffstat-1.62

Success on aarch64-linux (full log)
Attempted: diffstat
Partial log (click to expand)
/nix/store/4pzf0bqxypqiwyi0qcvbcwl1j2ck5613-coreutils-8.29/bin/install -c -m 644 ./diffstat.1 /nix/store/waaz2hnbc52pw7c51ysfqqgr0rxi1mwi-diffstat-1.62/share/man/man1/diffstat.1
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/waaz2hnbc52pw7c51ysfqqgr0rxi1mwi-diffstat-1.62
shrinking /nix/store/waaz2hnbc52pw7c51ysfqqgr0rxi1mwi-diffstat-1.62/bin/diffstat
gzipping man pages under /nix/store/waaz2hnbc52pw7c51ysfqqgr0rxi1mwi-diffstat-1.62/share/man/
strip is /nix/store/ah0va6j4cnwj9nx4j6rwcfc8nh785jwm-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/waaz2hnbc52pw7c51ysfqqgr0rxi1mwi-diffstat-1.62/bin
patching script interpreter paths in /nix/store/waaz2hnbc52pw7c51ysfqqgr0rxi1mwi-diffstat-1.62
checking for references to /build in /nix/store/waaz2hnbc52pw7c51ysfqqgr0rxi1mwi-diffstat-1.62...
/nix/store/waaz2hnbc52pw7c51ysfqqgr0rxi1mwi-diffstat-1.62


vscode.workspace.onDidChangeWorkspaceFolders fires before workspace configuration is loaded

VSCode Version: 1.17.0-insider (6039e061a8b8f82114500c34c679f991f9607e71)
OS Version: Ubuntu 16.04.3

Steps to Reproduce:

Register a onDidChangeWorkspaceFolders handler like the following in a VS Code extension:

vscode.workspace.onDidChangeWorkspaceFolders(e => {
  for (const added of e.added) {
    const config = vscode.workspace.getConfiguration('tasks', e.added);
    console.log(config);
  }
});

Add a .vscode/tasks.json file to a project folder. For example:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",
			"command": "virtualenv -p python ./env",
			"taskName": "Install virtualenv"
		}
	]
}

Add the project as a workspace folder to VS Code (assuming it is running the extension from step 1).
Expected: The task configuration for the just-added workspace folder is printed to the dev console. Actual: An empty object is printed.

It appears that at the time onDidChangeWorkspaceFolders is fired, the configuration for the corresponding workspace folder has not yet been loaded. The example given above refers specifically to the tasks configuration, but in general, this applies to any workspace-folder-level configuration. A workaround that seems to work is to use setTimeout(() => { ... }, 0) inside the handler. Empirically, the configuration for the newly added workspace folder(s) has been added by the time the inner function runs. It would be useful to run commands that depend on the workspace folder configuration in response to workspace folder addition / removal (e.g., automatically build a newly added workspace folder).
Proposal: make the onDidChangeWorkspaceFolders fire after the configuration for newly added workspaces has already been loaded. Or alternatively, add a new event that fires at this time.

Hmm I thought it got fixed already here - https://github.com/Microsoft/vscode/issues/31597
Will see if it is broken.

Looks like it got fixed only on main side. I was updating the configuration model and then triggering folder change and configuration change in sequence. But I think I have to change the order of the sequence to fire configuration change first and then folder change.

I still see this problem. Here's my test program:
'use strict';
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
  context.subscriptions.push(vscode.commands.registerCommand('extension.sayHello', () => {
    console.log("hello world");
    print();
  }));

  context.subscriptions.push(vscode.workspace.onDidChangeWorkspaceFolders(e => {
    console.log("onDidChangeWorkspaceFolders");
    print();
  }));
}

function print() {
  vscode.workspace.workspaceFolders.forEach(w => {
    const config = vscode.workspace.getConfiguration('tasks', w.uri).inspect('version');
    console.log(w.uri.toString() + ' ' + config.workspaceFolderValue);
  });
}

add a workspace folder that has a tasks.json
run the hello.world command to see that the version is read (2.0.0 in my case)
remove the workspace folder and add it again
on the add event, the version printed as undefined
run the hello.world command again. It is still undefined.

@aeschli Good catch.
Events are coming in the expected order. But the ext host configuration is still holding to old workspace.
Since MR is only insiders, this is not important to fix now.


AlphaSlider and BrightnessSlider

AlphaSlider and BrightnessSlider don't restore selected color. Wheels are always at the end of bar

Ok, I found the initialColor = color param


Audit entries show the api calls made by rancher-compose-executor as being made by "machineServiceAccount".

Server version - v0.51.0-rc3
Create a stack from catalog entry.
Following are he audit log entries that appear:

All the api calls made by rancher-compose-executor are shown as being made by "machineServiceAccount".

@sangeethah The screenshot you posted does not seem to show anything other than a failed host connection. As for the logs showing that the requests are made by machineServiceAccout I believe that is the account that makes the requests. So why would it be an error that this is reflected in the logs?


How to support  eslint TIMING

Description
i want use TIMING=1 eslint --fix  to track performance

I believe env variables propagate to tasks spawned by lint-staged. Maybe you can try setting export TIMING=1 in your husky hook?

export TIMING=1

Thanks bro. I can export it externally.

Feel free to reopen this issue if it doesn't end up working 👍


feat: align semantic version with manifest version

Pull Request
Related issue
https://github.com/GabeDuarteM/semantic-release-chrome/issues/111 - Allow publishing of pre-release version
Description
Parse pre release version and make it compatible with extension's version field inside manifest. Use version_name field from chrome extension manifest to exactly reflect version.
This is slightly different approach compared to https://github.com/GabeDuarteM/semantic-release-chrome/pull/112
Why
Chrome web api call throws a version format error when trying to publish a package from pre-release branch.
How
Parse prerelease version number and align it with chrome extension requirements. For example if next version is 1.0.0-develop.1 it will format it as <IP_ADDRESS>
Screenshots
How has this been tested
Unit tests
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[x] Documentation
[x] Ready to be merged
[x] My code follows the code style of this project (run npm run ci to be sure).
[x] I have read the CONTRIBUTING document.

Hi @owlcode , I developed this same feature in my fork.
To make this work for any channel (develop, alpha, beta), generating "<IP_ADDRESS>" from "1.0.0-develop.1" is not sufficient because it would conflict with "1.0.0-alpha.1" and "1.0.0-beta.1", for example.
Since the "version" manifest property is not displayed once the "version_name" property is used, I ended up by generating "1.0.0." in the "version" property, timestamp being Date.now in milliseconds which is unique and incremental. This solves all other questions.
You may update your PR with this idea, so that contributing my PR does not collide with your work.

@RupertBarrow I saw your fork and would have probably used it but haven't found NPM released package.
I am also not entirely sure if we need allowPrerelease flag or can this change can be considered a fix.
I get your point of having conflicting version when using different prerelease channels but with your approach you can fall into collision too when two different pipelines are running concurrently (although I understand it's much less likely). It's not a problem for me since I've different extension ids on separate channels. I chose to have some reference to initial version number but I think I'd agree it doesn't really matter since we have version_name

It's not a problem for me since I've different extension ids on separate channels.
Yes, tI must do that too.

I chose to have some reference to initial version number but I think I'd agree it doesn't really matter since we have version_name
I was worried about how Google managed the version field internally, especially if there are duplicate version numbers on different channels

I use a private NPM registry on Github. Would it be useful to make it public ?

As of now not for me since I've already published it under @owlcode/semantic-release-chrome

I was worried about how Google managed the version field internally, especially if there are duplicate version numbers on different channels

Considering what Google recommends for test releases (I mean different extension id) then I guess having duplicate version numbers on different channels is not a problem? I don't think releasing same extension id from different branches would make sense to anyone?

Since the "version" manifest property is not displayed once the "version_name" property is used, I ended up by generating "1.0.0." in the "version" property, timestamp being Date.now in milliseconds which is unique and incremental. This solves all other questions.

Oh I didn't know that having number this large is acceptable because the documentation says that it's much smaller than that: https://developer.chrome.com/docs/extensions/reference/manifest/version

Oh I didn't know that having number this large is acceptable because the documentation says that it's much smaller than that: developer.chrome.com/docs/extensions/reference/manifest/version

You're right, I had to truncate it.

Oh I didn't know that having number this large is acceptable because the documentation says that it's much smaller than that: developer.chrome.com/docs/extensions/reference/manifest/version

You're right, I had to truncate it.

So it means that every release cannot be less than 100k seconds from each other?


Improve performance of MultiprocessIterator for non tuple/dict datasets

When type(dataset[i]) == np.ndarray, shared memory is not used.
This PR fixes the problem.
Benchmark
import chainer
import numpy as np
import time

batch_size = 128
n_batch = 5
x = np.random.randint(
    0, 2 ** 10, size=(batch_size * n_batch, 300 * 300 * 3)).astype(np.int32)

it = chainer.iterators.MultiprocessIterator(
    x, batch_size, shared_mem=300 * 300 * 3 * 4, shuffle=False)
start = time.time()
results = []
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
for i in range(n_batch):
    results.append(next(it))
print('elapsed time {}s'.format(time.time() - start))

np.testing.assert_almost_equal(x, np.concatenate(results))

Before: elapsed time 1.141466856s
After: elapsed time 0.356211900711s

jenkins, test this please.

LGTM!


handle Python 2 in environment.yml

conda can specify the Python package version in environment.yml. Right now, if the user specifies a requirement for Python 2, this will just break.
We should detect if Python 2 is in environment.yml and install to a new env for the kernel, rather than updating the root env. In fact, it might be preferable to do this if the Python version is specified as anything other than the already-installed version.

yeah I'm +1 on that - IME conda can do some weird things if you try to update python 2 -> 3 within the same environment.


feat(FX-4008): show warning message in SMS 2FA section for Artsy employees

The type of this PR is: Feature
This PR solves FX-4008
Description
Artsy employees who enroll in the SMS 2FA method are often unable to login to staging since we do not deliver text messages from the staging environment. We’d like to add a conditional nudge for these users to prefer the app authenticator method.
Given an Artsy employee
When I visit the 2FA settings section
I see a warning message in the SMS section stating that the app authenticator message is encouraged for admins
Demo

<EMAIL_ADDRESS>

personal email

For me it makes sense to show this message before user enables 2FA. Maybe we could hide this notification when app-based 2FA is enabled?

although yes, you are right. it is better to display a warning message before the SMS 2FA method is configured and will be used


Add job queue to process requests

This is a major change in the way Meteorite processes requests from clients.
After this change, Meteorite will use a job queue to keep a track of tasks sent to it as a request. Any client making a request to a Meteorite server immediately receives a response with the job ID. The intention behind adding this ID is to be able to poll the status of the job using it.
At the moment the Job ID is not persistent. Ideally, something like Redis or any other kind of database could potentially help make job IDs persistent.
This change was required due to the nature of ML models requiring some time to complete their computation.

There is some merit in being able to enable and disable queueing. However, that is not available in this PR at the moment.

@98sean98 Pending on your review only.
I have limited this PR to adding the webhook as you suggested previously! Seems like this works out really well.
In the future, it will be great to add an option to switch between different approaches to do job queues.
We can merge this, and implement a client for sending requests to this server since its not a simple HTTP request.


arch package rename

Describe the bug
Since rtx got renamed to mise there are two packages in the AUR which should probably be deprecated properly.

https://aur.archlinux.org/packages/rtx
https://aur.archlinux.org/packages/rtx-bin

Looking at the structure for PKGBUILD it looks like the new scripts should include a replaces section.
See: https://wiki.archlinux.org/title/PKGBUILD#replaces

ah thanks for the pointer, I'll add this config