NumbaIRAssumptionWarning variable not in scope

Thanks to all the Numba devs. This is a great library! 😄
I've been consistently getting NumbaIRAssumptionWarning in my library galois since Numba 0.54.0. I previously opened #7623 and I believe this is related.
I've copied code out of my library into this minimal example. I'm calling a JIT function inside a ufunc. While both Numba 0.54.1 and 0.55.1 produce the correct result in this example, I've found times in my library where it is not producing the correct result. I fear the "variable not in scope" warnings are true and variables are being updated outside of the function scope.
Q: What does NumbaIRAssumptionWarning mean in general?
I'm trying to debug these warnings from my library and I'm having the hardest time.
Q: What does NumbaIRAssumptionWarning mean in the Numba 0.55.1 case from my example?
What's the difference between _power_calculate_v6_b_3 and _power_calculate_v6_b_4? How do I know which variable (or one which line) it is referring?
For reference, issues I opened in my repo:

https://github.com/mhostetter/galois/issues/178
https://github.com/mhostetter/galois/issues/226

Minimal example
import numpy as np
import numba
print(np.__version__)
print(numba.__version__)

@numba.extending.register_jitable(inline="always")
def _multiply_calculate(a, b, CHARACTERISTIC, DEGREE, IRREDUCIBLE_POLY):
    """
    a in GF(2^m), can be represented as a degree m-1 polynomial a(x) in GF(2)[x]
    b in GF(2^m), can be represented as a degree m-1 polynomial b(x) in GF(2)[x]
    p(x) in GF(2)[x] with degree m is the irreducible polynomial of GF(2^m)

    a * b = c
        = (a(x) * b(x)) % p(x) in GF(2)
        = c(x)
        = c
    """
    ORDER = CHARACTERISTIC**DEGREE

    # Re-order operands such that a > b so the while loop has less loops
    if b > a:
        a, b = b, a

    c = 0
    while b > 0:
        if b & 0b1:
            c ^= a  # Add a(x) to c(x)

        b >>= 1  # Divide b(x) by x
        a <<= 1  # Multiply a(x) by x
        if a >= ORDER:
            a ^= IRREDUCIBLE_POLY  # Compute a(x) % p(x)

    return c

MULTIPLY_JIT = numba.jit(["int64(int64, int64, int64, int64, int64)"], nopython=True, cache=True)(_multiply_calculate)

@numba.extending.register_jitable(inline="always")
def _power_calculate(a, b, CHARACTERISTIC, DEGREE, IRREDUCIBLE_POLY):
    """
    Square and Multiply Algorithm

    a^13 = (1) * (a)^13
            = (a) * (a)^12
            = (a) * (a^2)^6
            = (a) * (a^4)^3
            = (a * a^4) * (a^4)^2
            = (a * a^4) * (a^8)
            = result_m * result_s
    """
    if a == 0 and b < 0:
        raise ZeroDivisionError("Cannot compute the multiplicative inverse of 0 in a Galois field.")

    if b == 0:
        return 1
    # elif b < 0:
    #     a = RECIPROCAL(a, CHARACTERISTIC, DEGREE, IRREDUCIBLE_POLY)
    #     b = abs(b)

    result_s = a  # The "squaring" part
    result_m = 1  # The "multiplicative" part

    while b > 1:
        if b % 2 == 0:
            result_s = MULTIPLY_JIT(result_s, result_s, CHARACTERISTIC, DEGREE, IRREDUCIBLE_POLY)
            b //= 2
        else:
            result_m = MULTIPLY_JIT(result_m, result_s, CHARACTERISTIC, DEGREE, IRREDUCIBLE_POLY)
            b -= 1

    result = MULTIPLY_JIT(result_m, result_s, CHARACTERISTIC, DEGREE, IRREDUCIBLE_POLY)

    return result

characteristic = 2
degree = 2
irreducible_poly = 7

POWER_UFUNC = numba.vectorize(["int64(int64, int64)"], nopython=True)(lambda aa, bb: _power_calculate(aa, bb, characteristic, degree, irreducible_poly))

x = np.array([0, 1, 2, 3])  # Elements
y = np.array([0, 1, 2, 3])  # Powers

z = POWER_UFUNC.outer(x, y)
print(z)

z_truth = np.array([[1, 0, 0, 0], [1, 1, 1, 1], [1, 2, 3, 1], [1, 3, 2, 1]])
print(z_truth)

print(np.array_equal(z, z_truth))

Numba 0.54.1
1.20.3
0.54.1
[[1 0 0 0]
 [1 1 1 1]
 [1 2 3 1]
 [1 3 2 1]]
[[1 0 0 0]
 [1 1 1 1]
 [1 2 3 1]
 [1 3 2 1]]
True

Numba 0.55.1
1.20.3
0.55.1
/home/matt/.local/lib/python3.8/site-packages/numba/core/ssa.py:272: NumbaIRAssumptionWarning: variable '_power_calculate_v6_result_s_3' is not in scope.

This warning came from an internal pedantic check. Please report the warning
message and traceback, along with a minimal reproducer at:
https://github.com/numba/numba/issues/new?template=bug_report.md

  warnings.warn(errors.NumbaIRAssumptionWarning(wmsg,
/home/matt/.local/lib/python3.8/site-packages/numba/core/ssa.py:272: NumbaIRAssumptionWarning: variable '_power_calculate_v6_b_4' is not in scope.

This warning came from an internal pedantic check. Please report the warning
message and traceback, along with a minimal reproducer at:
https://github.com/numba/numba/issues/new?template=bug_report.md

  warnings.warn(errors.NumbaIRAssumptionWarning(wmsg,
/home/matt/.local/lib/python3.8/site-packages/numba/core/ssa.py:272: NumbaIRAssumptionWarning: variable '_power_calculate_v6_result_m_3' is not in scope.

This warning came from an internal pedantic check. Please report the warning
message and traceback, along with a minimal reproducer at:
https://github.com/numba/numba/issues/new?template=bug_report.md

  warnings.warn(errors.NumbaIRAssumptionWarning(wmsg,
/home/matt/.local/lib/python3.8/site-packages/numba/core/ssa.py:272: NumbaIRAssumptionWarning: variable '_power_calculate_v6_result_s_2' is not in scope.

This warning came from an internal pedantic check. Please report the warning
message and traceback, along with a minimal reproducer at:
https://github.com/numba/numba/issues/new?template=bug_report.md

  warnings.warn(errors.NumbaIRAssumptionWarning(wmsg,
/home/matt/.local/lib/python3.8/site-packages/numba/core/ssa.py:272: NumbaIRAssumptionWarning: variable '_power_calculate_v6_b_3' is not in scope.

This warning came from an internal pedantic check. Please report the warning
message and traceback, along with a minimal reproducer at:
https://github.com/numba/numba/issues/new?template=bug_report.md

  warnings.warn(errors.NumbaIRAssumptionWarning(wmsg,
/home/matt/.local/lib/python3.8/site-packages/numba/core/ssa.py:272: NumbaIRAssumptionWarning: variable '_power_calculate_v6_result_m_2' is not in scope.

This warning came from an internal pedantic check. Please report the warning
message and traceback, along with a minimal reproducer at:
https://github.com/numba/numba/issues/new?template=bug_report.md

  warnings.warn(errors.NumbaIRAssumptionWarning(wmsg,
[[1 0 0 0]
 [1 1 1 1]
 [1 2 3 1]
 [1 3 2 1]]
[[1 0 0 0]
 [1 1 1 1]
 [1 2 3 1]
 [1 3 2 1]]
True

Thanks for the report. MWR:
import numba
from numba import njit
print(numba.__version__)

@numba.extending.register_jitable(inline="always")
def bar():

    b = 3
    while b > 1:
        b //= 2

    return 5

@njit
def foo():
    bar()

foo()

I think the issue is triggered by a bug in the implementation of inline='always'. I suspect that the inlining algorithms run to inject the IR from (in the MWR) bar into foo at the call site and then that warning is emitted later during SSA reconstruction, probably because the scope of the variable(s) hasn't been correctly transferred/updated during inlining.

Q: What does NumbaIRAssumptionWarning mean in general?
I'm trying to debug these warnings from my library and I'm having the hardest time.

It means that some assumption has been made when constructing or manipulating Numba's intermediate representation (IR). It's reasonably likely that from a user perspective the code will still work and it's just that the IR is for some reason technically invalid, but this it not always the case.

Q: What does NumbaIRAssumptionWarning mean in the Numba 0.55.1 case from my example?

See the above note RE inlining and scope transfer.

What's the difference between _power_calculate_v6_b_3 and _power_calculate_v6_b_4? How do I know which variable (or one which line) it is referring?

These are the names in the IR given to variable b in the function _power_calculate. Numba uses static single assignment form for it's IR, the v6 and _3 etc refer to various types of versioning of the variable.

@mhostetter Question: In your code, what is the reason for using inline='always'? xref developer docs with notes on uses etc: https://numba.readthedocs.io/en/stable/developer/inlining.html#notes-on-inlining

Upon further examination, the "incorrect result" cases I've found so far have only manifest in my library using Numba 0.54.1 and not Numba 0.55.1. However, both versions throw the NumbaIRAssumptionWarnings.
On a positive note, when changing my library from using @numba.extending.register_jitable(inline="always") to @numba.extending.register_jitable, the NumbaIRAssumptionWarnings are suppressed from both 0.54.1 and 0.55.1 and the incorrect result in 0.54.1 is resolved.

@mhostetter Question: In your code, what is the reason for using inline='always'? xref developer docs with notes on uses etc: https://numba.readthedocs.io/en/stable/developer/inlining.html#notes-on-inlining

@stuartarchibald to be honest, I don't know. I thought I needed to "inline" the code so it could be used in a lambda function, like this:
@numba.extending.register_jitable(inline="always")
def _power_calculate(aa, bb, CHARACTERISTIC, DEGREE, IRREDUCIBLE_POLY):
    ...

POWER_UFUNC = numba.vectorize(["int64(int64, int64)"], nopython=True)(lambda aa, bb: _power_calculate(aa, bb, 2, 2, 7))

If you have one of these cases that fail and do so on with Numba 0.55.0+, a code sample would be hugely appreciated, many thanks! In 0.55.0+ this was merged #7552 which I think would help with making the code work correctly even if the scopes are not valid.

I will keep a lookout for such an example and share if found.

Upon further examination, the "incorrect result" cases I've found so far have only manifest in my library using Numba 0.54.1 and not Numba 0.55.1. However, both versions throw the NumbaIRAssumptionWarnings.

Thanks for checking, what you describe correlates roughly with areas of the code base that targeted fixes for these issues between 0.54 and 0.55, so I think what you are observing makes sense.

On a positive note, when changing my library from using @numba.extending.register_jitable(inline="always") to @numba.extending.register_jitable, the NumbaIRAssumptionWarnings are suppressed from both 0.54.1 and 0.55.1 and the incorrect result in 0.54.1 is resolved.

Indeed, the offending piece of code is in the inliner part of the compiler, which won't be run unless inline is requested.

@mhostetter Question: In your code, what is the reason for using inline='always'? xref developer docs with notes on uses etc: https://numba.readthedocs.io/en/stable/developer/inlining.html#notes-on-inlining

@stuartarchibald to be honest, I don't know. I thought I needed to "inline" the code so it could be used in a lambda function, like this:
@numba.extending.register_jitable(inline="always")
def _power_calculate(aa, bb, CHARACTERISTIC, DEGREE, IRREDUCIBLE_POLY):
    ...

POWER_UFUNC = numba.vectorize(["int64(int64, int64)"], nopython=True)(lambda aa, bb: _power_calculate(aa, bb, 2, 2, 7))

I see, I don't think that's the case, but am also trying to recall if there would be anything similar that might trigger an issue.

If you have one of these cases that fail and do so on with Numba 0.55.0+, a code sample would be hugely appreciated, many thanks! In 0.55.0+ this was merged #7552 which I think would help with making the code work correctly even if the scopes are not valid.

I will keep a lookout for such an example and share if found.

Great, thank you. Fixing this scoping problem could well be hard so having an actual failing case would act as good motivation!

@mhostetter am hoping that https://github.com/numba/numba/pull/7823 will fix.

@sklam thanks for your commitment on this issue.
I have experienced a similar problem while working on JIT-ing some universal functions translated from cephes.
I wanted to test if https://github.com/numba/numba/pull/7823 solved the issue also in my case.
Following your suggestion in https://github.com/numba/numba/pull/7823#issuecomment-1049888994 I downloaded the latest numba package with dev label from the conda numba channel.
Unfortunately, it builds the main branch at https://github.com/numba/numba/commit/468647dddde27ee8af124c97dfcd20c35c4a2bc6
However, I am not able to figure out whether or not the ci label is a valid choice: since I cannot map the g part to a commit in  main, I would argue not.
Can you please make sure the dev label follows the commits on the main branch?
Thanks in advance!


cmd/go: plugin versions do not match when built within vs. outside a module

What did you do?
I have simple application that loads Go plugins and allows them to communicate with app via exported interface.
Simplified version can be found here.
Shared interface is stored under ext directory, real implementation is located underplugin directory.
Application passes pointer to real implementation to dynamically loaded plugin which expects interface.
Example plugin code can be found here.
Unfortunately combination of Go Modules and Go Plugins doesn't work unless go.mod of plugins module has replace entry with local relative path for shared interface path.
When I use remote location in plugins module, application crashes because of wrong version of packages.

Go Modules and plugins working fine when remote path is used.
What did you see instead?
Error about different package versions.
Does this issue reproduce with the latest release (go1.12.3)?
Yes.
System details
go version go1.12.3 linux/amd64
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/maciej/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/maciej/work"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/maciej/tmp/go-plugin-bug/plugins/go.mod"
GOROOT/bin/go version: go version go1.12.3 linux/amd64
GOROOT/bin/go tool compile -V: compile version go1.12.3
uname -sr: Linux 4.14.13-041413-generic
Distributor ID:	Ubuntu
Description:	Ubuntu 17.10
Release:	17.10
Codename:	artful
/lib/x86_64-linux-gnu/libc.so.6: GNU C Library (Ubuntu GLIBC 2.26-0ubuntu2.1) stable release version 2.26, by Roland McGrath et al.
gdb --version: GNU gdb (Ubuntu 8.0.1-0ubuntu1) 8.0.1

Bump. Any plans to fix this? Seems that algorithm which verifies package version integrity needs alignment.

This is the same underlying problem as #29814.
The workaround should be to build both the plugin and the main binary from outside of their respective repositories, or (as you note) to use a replace directive when building locally.

CC @jayconrod

See also #31278, of which this may be a duplicate.

Is this issue related to https://github.com/golang/go/issues/16860 ?
Building plugin and main binary with -trimpath flag doesn't solve this issue. Even using a go toolchain built from head.

There are several similar tickets; apologies if this is not the right place to comment.
If the path is different but the version of the libraries are identical, we get version mismatch errors.  A way of replicating this is to build the calling program in a container, and build the plugin outside of the container.  The paths may look like this:
# Calling
<EMAIL_ADDRESS># Called
<EMAIL_ADDRESS>
Building locally, but where the plugin is built using a go.mod with a specific version, and the the calling application is built from a checkout at that version, and using --trimpath on both, shifts the error:
# Error:
2:31:33 main.go:485: plugin.Open("dummy"): plugin was built with a different version of package github.com/xxxserxxx/gotop/v3/devices
# strings ./gotop | grep v3/devices$
go.link.pkghashbytes.github.com/xxxserxxx/gotop/v3/devices
go.link.pkghash.github.com/xxxserxxx/gotop/v3/devices
%github.com/xxxserxxx/gotop/v3/devices
go.link.pkghashbytes.github.com/xxxserxxx/gotop/v3/devices
go.link.pkghash.github.com/xxxserxxx/gotop/v3/devices
# strings dummy.so | grep 'v3/devices$'
go.link.pkghashbytes.github.com/xxxserxxx/gotop/v3/devices
go.link.pkghash.github.com/xxxserxxx/gotop/v3/devices
github.com/xxxserxxx/gotop-dummygithub.com/xxxserxxx/gotop-dummygithub.com/xxxserxxx/gotop/v3/devices
%github.com/xxxserxxx/gotop/v3/devices
go.link.pkghashbytes.github.com/xxxserxxx/gotop/v3/devices
go.link.pkghash.github.com/xxxserxxx/gotop/v3/devices

I've been playing with this, copying the go.sum into the directories so that they're identical, and making sure that the entries in both go.mods are the same (except for the inter-plugin dependency).  I'm unable to get this to work unless I add the following to the plugin's go.mod:
replace github.com/xxxserxxx/gotop/v3 => ../gotop

Then it all works.

Same thing happens for me for a go.mod-based project regarding the -trimpath option. When building both the main app and the plugin with -trimpath enabled, I get a plugin was built with a different version of package github.com/me/myapp/mypackage. Removing -trimpath makes it load fine, however I'm afraid people with other setups might have trouble getting their plugins loaded due to paths inconsistencies.

Another data point which I can't even begin to interpret:
$ git clone https://github.com/xxxserxxx/gotop
$ git clone https://github.com/xxxserxxx/gotop-dummy
$ cd gotop && git checkout v3.5.0
$ go build -o gotop ./cmd/gotop
$ cd ../gotop-dummy && grep gotop go.mod
require github.com/xxxserxxx/gotop/v3 v3.5.0
$ go mod download
$ go mod vendor
$ go build --buildmode=plugin -o ../gotop/dummy.so .
$ cd ../gotop
$ ./gotop -X dummy    # this hangs for some reason; ^C to break
$ cat ~/.local/state/gotop/errors.log
13:03:16 main.go:485: plugin.Open("dummy"): plugin was built with a different version of package github.com/shirou/gopsutil/internal/common
$ go mod graph | grep gopsutil
github.com/xxxserxxx/gotop/v3<EMAIL_ADDRESS>➜  gotop git:(be42ba5) ✗ git log -1
commit be42ba538cefc892d1dc3d18c783483f4875baff (HEAD, tag: v3.5.0)
$ cd ../gotop-dummy
$ go mod graph | grep gopsutil
<EMAIL_ADDRESS><EMAIL_ADDRESS>
These are the identical dependencies.  Why is the system claiming that they are not?

Still an issue we're running into as well.

This is the same underlying problem as #29814.
The workaround should be to build both the plugin and the main binary from outside of their respective repositories, or (as you note) to use a replace directive when building locally.

do you mean to say, that the ext folder should be its own module, separate from the main app?
would that work?

Has anybody found a way to build reproducible plugins for different machines?

@mytototo There is no reliable way, as the problem is by design. Every dependency of every package used in both plugin and main app have to be exactly the same version, making plugin and app extremely highly coupled. Even if you have control over both, plugin and app, this is very hard or impossible to maintain because you don't have control over what 3rd party modules might import.
Unfortunately that means there are very few practical use cases for Go plugins, as far as I can see.

A solution for this problem:
There are a project MAIN, If u want build some plugin for MAIN. You can create a project A and import the MAIN as its DockerFile, and create another project B and import the MAIN to build the plugin.
Then A and B import the same version for MAIN, every thing will be work perfect.

A solution for this problem:
There are a project MAIN, If u want build some plugin for MAIN. You can create a project A and import the MAIN as its DockerFile, and create another project B and import the MAIN to build the plugin.
Then A and B import the same version for MAIN, every thing will be work perfect.

@mark4z This is not a proper workaround, for me at least. I need to be able to let external developers build plugins for my app, based on a specific set of shared interfaces and structures, without having to (re)build everything inside a single environment.

A solution for this problem:

There are a project MAIN, If u want build some plugin for MAIN. You can create a project A and import the MAIN as its DockerFile, and create another project B and import the MAIN to build the plugin.

Then A and B import the same version for MAIN, every thing will be work perfect.

@mark4z This is not a proper workaround, for me at least. I need to be able to let external developers build plugins for my app, based on a specific set of shared interfaces and structures, without having to (re)build everything inside a single environment.

Sure, maybe the last way is extraction everything the plug-in need and both projects import it. I'm working on it now.

I'm on go 1.16 and still seeing this problem.

@rsc Hi Russ,
Is this issue could be fixed in some foreseen future?

A fix for this issue would require changes to the compiler (to prevent cross-package inlining when building plugins), and probably the linker (to interpret and record a signature for the package ABI). That's possible, but it would be a lot of work to support a fairly esoteric build mode.
@jeremyfaller could perhaps speak to whether the compiler and linker folks are planning to implement that support, but to my knowledge it's not on the roadmap at this time.

@bcmills's  knowledge is correct. We've kicked around improving this for some time, but those things are just thoughts. It's a complicated problem, and it's almost certainly not on the roadmap for 2022.

just ran into this problem and cannot get it working even with a replace directive in the plugin's go mod file.

hi @all, @marcusholmessumup
this problem is fixed?

No its not

A fix for this issue would require changes to the compiler (to prevent cross-package inlining when building plugins), and probably the linker (to interpret and record a signature for the package ABI). That's possible, but it would be a lot of work to support a fairly esoteric build mode.

This is mostly a chicken and egg problem where many projects are not utilizing plugins due to their complicated build setup and other limitation (version incompatibility, requiring a main packet, linux only) while the plugin system does not get improved because very few projects are using it. However the demand certainly exists.

If look around, there are plenty of incomplete and partially-working attempt to deal with plugins, just because current system is way too restricting. At the end, a lot of efforts lost for nothing and 1) adoption of current plugins system is subpar, and 2) people waste time re-introducing wheel.
I think, for most of it, if we introduce some kind of "unsafe"  switch which disables next lines in src/runtime/plugin.go
	for _, pkghash := range md.pkghashes {
		if pkghash.linktimehash != *pkghash.runtimehash {
			md.bad = true
			return "", nil, "plugin was built with a different version of package " + pkghash.modulename
		}
	}

giving user options to make unsafe (and unrecommended) choice and deal with potential fallout on it's own, adoptions of plugin system will jump tremendously, which on it's own will lead to improvement of it. Solving chicken and egg issue from above.

I try to import this and finally give up, maybe try the wasm.

So its 2023 and i did run in the same issue as the rest here. I have a repostiory for my application and a respostiory for the plugin code. The idea was to write an application that can be fed by custom developed plugins for execution. Tho even considering the workarround with the alias it would be quite uncomfortable for people to use Plugins and this way of extending the apllication than.
I think this definatly should be considered to be solved since the net is allover filled with people hitting this issue and this thread now is ongoing for about 4 years with people asking for a solution.

A fix for this issue would require changes to the compiler (to prevent cross-package inlining when building plugins), and probably the linker (to interpret and record a signature for the package ABI). That's possible, but it would be a lot of work to support a fairly esoteric build mode.
@jeremyfaller could perhaps speak to whether the compiler and linker folks are planning to implement that support, but to my knowledge it's not on the roadmap at this time.

Hi there, just wanted to see if it would be possible to get an update on this since, AFAICT, there has been a good amount of development in this area with the versions released after this comment (1.16+). Particularly since, in looking through the 1.16 release notes, I found this document outlining the design goals for linker improvements, particularly with this section which relates to this issue.
In using Go for ~7 years now, I've definitely reached for the plugin package a few times, but had to give up due to the difficulty in getting a plugin to load, so I can definitely echo that the demand here may seem artificially low due people either giving up on trying to use it, or finding an alternative like hashicorp/go-plugin (the popularity of which may be a better indicator for demand for this functionality) for non performance-critical applications.
Are there any public documents on what it would take to better support the plugin package (either as a quick fix with sharp edges, or a formal fix)? Is this something the community could help with at all, or is there still a fundamental limitation in the compiler/linker that the go maintainers would need to address first?
Thanks, as always, for your time and consideration 🙏

My personal opinion is that plugins need to be rethought completely.  The current approach absolutely requires using the exact same version of Go to build the plugin and the application.  That restriction makes plugins significantly less useful.  Basically plugins were implemented as "this is something we can do with existing technology" rather than "this is something that people really need."
So I think we need to go back to the beginning and decide what plugins are for, and then think about how to implement them.  And we have to understand why plugins are better than simply executing a separate program and passing data back and forth on standard input and output.
To be clear, this issue is not the place for any of those discussions.

It is interesting to see this issue come up so many times over the past few years (or longer) and yet.. little to no movement by the go team to fix this properly once and for all. The use of plugins if properly implemented allows any application that supports it the ability to be extended dynamically outside the context of the original creators of the application. Applications like IDEs, DAWs, and more make great use of extensibility in this way and provides a path of enhancement the original developers may not thought of or had the manpower/etc to do themselves. Similar to an open source project where many contribute.
I've seen in Rust a similar issue, where by code built as a dynamic loadable module using Rust's ABI is "unstable" and only able to be loaded with specific versions that the app and module are compiled in. Sound familiar? Rust (and Zig) seem to have the ability to also load stable C ABI module, and compile to them however, though I won't pretend to be an expert in how all that works and if it's as good and easy to use.
As far as I can tell, this is the one built in area of Go that was never complete as there is no Windows implementation (not sure if ARM is supported?). So it's like a half baked piece of work that the Go team gave up on and I am surprised it was never deprecated given its lack of support on Windows and last I read (some time ago) not fully working on Mac. Maybe that changed?
The Go team should figure out some sort of stable ABI option like Rust/zig have, but lets make it easier to use.. following how easy Go typically is to use. Make it so we do something like go build -plugin ... and we do NOT have to deal with any version issues. There should be no reason an app build in go 1.22 (or later since I will assume this "updated" idea I have here wouldn't be possible to make it in 1.21 if even 1.22) can't load a plugin built in go 1.23, 1.37, etc.
Until then, I don't feel like there is much use in the built in plugin concept with the version mismatch issues. I am not sure if it works across minor versions.. but how awful is it that you build an app in go 1.19 and a plugin compiled in go 1.19.1 or even 1.20 does not load/work in the app? It makes no sense really.. unless the idea by the go team who started on this area figured it would only be used for in house use cases and thus no real need to make it work across versions. Granted, I wont pretend to know everything about why it doesn't work, only that if it was truly impossible to do (which it isnt since rust/zig/c are able to do it), why put it in half baked and now see people trying to use it but running in to issues.

I've also run into this issue many times in 2024.


Issue with Object.assign is not a function

Depending on your environment, Object.assign might not be available. You should polyfill fill it if that is the case.

hi , thanks for the info....i have tried itbut i am unable to execute the
same and i am using npm package.json....could you please let me know how to
use polyfill in this case....
On Jan 31, 2017 8:54 PM, "Will"<EMAIL_ADDRESS>wrote:

Depending on your environment, Object.assign might not be available. You
should polyfill fill it if that is the case.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/codeschool/sqlite-parser/issues/43#issuecomment-276393399,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AO7l7Fcpb_8SADJch0lcUNdP0L1aQG8Vks5rX1IygaJpZM4LyXwP
.

Here is a package that will polyfill just Object.assign for you. Load it before this script. Please let me know if that resolves the issue for you.

can we sync in fb...i can send my files and please let me know where to
change files and all
On Jan 31, 2017 11:58 PM, "Will"<EMAIL_ADDRESS>wrote:

Here is a package https://www.npmjs.com/package/object-assign that will
polyfill just Object.assign for you. Load it before this script. Please
let me know if that resolves the issue for you.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/codeschool/sqlite-parser/issues/43#issuecomment-276448800,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AO7l7EMAcHc_Ltf1lN5QPHjZ9x0H3AHTks5rX31NgaJpZM4LyXwP
.

No I am afraid not. It should be as simple as npm install object-assign and then just adding that script to your page however you are already doing that. Do you use webpack or browserify?

I am not using either webpack or browserify ... am using package.json and gruntfile.js

How do you load scripts?

by using grunt uglify and
 in one of the HTML

Here is a bower version you could use

Not sure where all the other replies in this thread went, but, the parser is available as a single JavaScript file for browser environments at dist/sqlite-parser.js. No need for an Object.assign() polyfill with the browser version in the dist/ folder, you can just include dist/sqlite-parser.js on the page instead of the Node version in lib/.

i am using the file from dist folder only. still getting the below issue.
Error: Object doesn't support property or method 'assign'

it is failing in IE only


[FEATURE] Add Discord as a social in the footer

Detailed description
It would be nice if we could add Discord to the list of socials at the bottom.

Context
People who are not aware of our GitHub/Twitter/Discord might find our community easier. 🙂
Possible implementation
Add our Discord community at the socials part at the footer.
Additional information
I'd like to work on this.
Code of Conduct

[X] I agree to follow this project's Code of Conduct

can you comment the discord link here

can you comment the discord link here

https://discord.gg/TSRwqx4K2v

Is this issue still open?

Is this issue still open?

Yeah, feel free to work on it. 🙂

Can I work on this?

I have solved this issue but I have updated the font awesome icon to version 5.8.1 If this solution is fine I'll do a PR

Can we have the new discord logo?

I have solved this issue but I have updated the font awesome icon to version 5.8.1 If this solution is fine I'll do a PR

I have done a PR if found suitable you can merge it: https://github.com/web3community/web3community.github.io/pull/138

I think you can close this issue now #139


Status field missing from rest api

Looks like since WD 2.0.0 we lost the status field from the  /api/admin/federations api rest endpoint.

Opened PR: https://github.com/HotelsDotCom/waggle-dance/pull/30


Add a RawMap transformation step to collapse "sausage link" roads.

See https://github.com/a-b-street/osm2streets/issues/16 for context. CC @BudgieInWA and @martinfleis
A good example of before:

and after:

This isn't ready yet. I found a number of regressions just in Bristol. For each of them, I'll first add a test case to osm2streets to prevent regressions, and then adjust the algorithm here to improve things. A bad example of before:

and after:

The detection needs to make sure the two one-way roads point at each other in a loop. These cases are just two one-way roads leading between the same pair of intersections.
CC

Replaced by https://github.com/a-b-street/osm2streets/pull/50


Crossplay/PlayFab support

Consider apt install libatomic1 libpulse0 libpulse-dev to enable crossplay. Currently PlayFab is unable to register correctly and receive a join code.

Closed by #7


Improve NetworkedTransform

Improve the networked transform to work better with Hosts & non player objects. Possibly add Extrapolation at some point?

Should be done. Needs to be tested with all different object types:

Player object
Player owned object
Server owned object


[Autocomplete] Returning JSX element from the getOptionLabel prop

getOptionLabel returns a string, it would be better if we add a new prop that can return jsx element, this will increase  the customization.
-Thank You

Hi! do we have an update on this? I am facing the same issue here where I would like to return a JSX element from getOptionLabel to customise the input with a logo.

@manonja Use the renderOption prop. getOptionLabel should be a string, it's used to fill the textbox.

I think what we want is the ability to format the value that is given to text field.  So the possibility of showing an image with the value.  Think if we have formatted or customized the renderOption and we want the value to be the same format as what the user clicked or match the renderOption.

This would be great-- is there a solution for showing a customized selected option?


ed: 1.13 -> 1.14.1

This PR is against the staging branch.
See http://lists.gnu.org/archive/html/info-gnu/2017-01/msg00004.html
for full release announcement.
Motivation for this change
Things done

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

[X] NixOS
[ ] macOS
[ ] Linux

[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[X] Fits CONTRIBUTING.md.

@Mic92 I’ve updated my commit to include the fedora repo in the urls. Thanks.


Have generated source paths added to build automaticly instead of with build helper

Currently it appears build helper is required to add the generated source paths to the build. I imagine there's a way to have a plugin reliably do it for you. Some things have been tried, but doesn't seem consistent.

done


[Feature Request] Add public facing graph to landing page

One thing I'd love to see added to fermentrack is the graph from the dashboard being publically visible on the home/landing page, without having to log in.

I like for my other brewing friends to be able to check in on what I'm cooking, but I'd rather not make them log in, or give them a login.

Access control in general is driving the majority of the TODO items by count, at the moment. The model I’m currently planning is for all “information only” screens to be able to either be set publicly available (using that flag at setup) or to users with specific access rights.
Sent from my iPhone
On Nov 1, 2018, at 12:11 PM, goose-ws <notifications<EMAIL_ADDRESS>wrote:
One thing I'd love to see added to fermentrack is the graph from the dashboard being publically visible on the home/landing page, without having to log in.
[capture]https://user-images.githubusercontent.com/874014/47863181-13802700-ddcd-11e8-8117-485b4684a4c9.PNG
I like for my other brewing friends to be able to check in on what I'm cooking, but I'd rather not make them log in, or give them a login.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/thorrak/fermentrack/issues/320, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ACWBLGbZPEtED_SheJe649kIvBUDaVBQks5uqx1EgaJpZM4YHDQB.


Will by any chance the next releases of .net frameworks, offer more support for winforms and wpf on Linux?

Hi dotnet devs,
I only want to know if the next releases of .net frameworks will offer more support to sophisticated deployment of winform and wpf on Linux. I use JetBrains Rider on Linux, and I kinda have to develop C# GUI based apps in old ways... It's very tiresome! The mono-project is very helpful, but the UI is very ugly, and it looks like those from decade 90s... I tried to use gtk#, with monodevelop to make the work more productive, but it lacks too much components; even ListBox is missing (I don't remember correctly, I think it was ListView).

There are currently no plans to port these to non-Windows platforms.
Xamarin Forms already has a community-made GTK+ backend -- I'm not sure if this will carry over to the future .NET MAUI but it seems like a good place to start.


Oryx "build" for Codespaces puts venv folder in an unexpected location

Currently the Oryx build that happens automatically for codespaces drops a venv folder in the root of projects which the Python extension does not expect. This location is also unlikely to be in a repo's .gitignore.
//cc: @lostintangent

Related Codespaces beta feedback: https://github.community/t/codespace-doesnt-handle-python-venv-properly/137691

This has been resolved through the use of a flag and will be resolved upstream in Oryx longer term.


Use anonymous session for HEAD request.

The default Instaloader headers aren't passed with a simple requests.head(), so leakage of user agents such as "python-requests/2.18.1" will occur.

Thanks for fixing this! :)


Fix expiry to be UTC-based

The default configuration make it feel that the parseExpiry function should return the nb of millis since the epoch, but the time is compared to the local time in various places. Fixed that and updated the docs to reflect the change. References :

Date constructor doc
Date.now() doc

Let it down, sorry for my mistake, the two functions returns the same timestamp


[glaze] new port

[x] Changes comply with the maintainer guide
[x] The name of the port matches an existing name for this component on https://repology.org/ if possible, and/or is strongly associated with that component on search engines.
[x] Optional dependencies are resolved in exactly one way. For example, if the component is built with CMake, all find_package calls are REQUIRED, are satisfied by vcpkg.json's declared dependencies, or disabled with CMAKE_DISABLE_FIND_PACKAGE_Xxx
[x] The versioning scheme in vcpkg.json matches what upstream says.
[x] The license declaration in vcpkg.json matches what upstream says.
[x] The installed as the "copyright" file matches what upstream says.
[x] The source code of the component installed comes from an authoritative source.
[x] The generated "usage text" is accurate. See adding-usage for context.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is in the new port's versions file.
[x] Only one version is added to each modified port's versions file.

@microsoft-github-policy-service agree company="Skaginn 3X ehf."

Upstream project requires at least gcc 10 the azure pipelines are built using gcc 9.
/mnt/vcpkg-ci/buildtrees/glaze/src/v1.2.1-af0f635c8a.clean/include/glaze/binary/header.hpp:7:10: fatal error: concepts: No such file or directory
    7 | #include <concepts>
      |          ^~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.

What is usually done in this situation?

We can wait to merge until a VM update allows us to test this.
Otherwise, we can only temporarily disable the relevant functions as we cannot test it. Sorry for that. 😔
Track: https://github.com/microsoft/azure-pipelines-agent/issues/3834

No need to wait.

What is usually done in this situation?

Tell port users:
Add a message to the portfile that gcc must be at least <version>.
Tell vcpkg CI:
Insert glaze:x64-linux=fail to scripts/ci.baseline.txt

Example: port coroutine.

Thanks for the new port!


[planning] Add provisional directory diagram

Let's hash out how we want to structure this thing. I'm into changing up the server client relationship, but I'm also into whatever you're into.

Went ahead and added a conceptual outline for how the app might look, so far as what it might do and be. I'm not married to any of it, but it might be a nice way to set our trajectory and expectations.


[Feature request]: index.js in 6.7.3 cannot be replaced as index.html.

Is your feature request related to a specific problem? Or an existing feature?
I am trying to add a plugins for swaggerUI, but I cannot add it wihtout replacing the index.js files and this file is not replaceable officially. The only choice we have is to put a different source of the same file or to put the javascript code inline like before.
Describe the solution you'd like
It would be ideal if we can replace index.js just like we are able to replace index.html or having a way to add the plugins in the configuration.
The plugin I use for example is a script I must include in the index file and use a global a variable make available for that script
Additional context
Have a look here
https://github.com/dlevesque1980/swagger-ui-json-folding-plugin

I'm not quite sure I'm following.
index.js should be replaceable (like any of the files we serve) by replacing it with a file with the same path in your wwwroot folder. If that isn't working, then that's a bug.
If you want the ability to add plugins without needing to override index.js, then that was recently added by #3056, which will be available in the next release.

yes that is what is required. Thank you.

@martincostello Is replacing files, such as index.js, documented somewhere? I can't seem to figure it out.

I can't see an obvious mention of it in the README, no.

Alright thanks anyway. Is there a planned release date for v6.8.0?

Not yet - best I can say at the moment is "soon".
If you're super-desperate to use the latest changes, you can consume pre-release packages from our MyGet feed.

Alright, thank you.


remove org.antlr.stringtemplate and org.antlr.antlr from dist

Ceylon doesn't use stringtemplate, so these jars can be removed from the dist. I don't know how they ever came to be there in the first place. Commits 1adea52 and 2cf31eb show how to do this, except that they don't remove the dependency from the generated OSGi metadata, which comes from ... somewhere.
Only @davidfestal can explain the magic that adds this dependency into the manifest.

I bet it comes from the OSGi metadata in the jar. Also, our tests actually parse the distrib jars to make sure we did not forget any imports, so those tests will fail if you remove those dependencies.

I bet it comes from the OSGi metadata in the jar.

Well, I don't think so, I looked at the MANIFEST.MF.

Also, our tests actually parse the distrib jars to make sure we did not forget any imports, so those tests will fail if you remove those dependencies.

Well, OK, but it seems to me like reducing the size of the dist is the effort it would take to fix those tests.

It is mentionned in ./META-INF/maven/org.antlr/antlr-runtime/pom.xml in the jar.
Also, stringtemplates is indeed only required by ./org/antlr/runtime/tree/DOTTreeGenerator.class which we're not using and is not used by any other class. We can safely remove that dep.

I don't get the error you mention, @gavinking, if I remove the deps manually. I can still build the Eclipse plugin.

@FroMage The problem isn't while building the Eclipse plugin. It's after installing it.

Ah.

You know me: if it compiles, ship it! ;)

No, it also installs, closing.


Adding a landing screen and updates to guidance and data requirement screens

Landing screen
This is a proposed, light-weight landing screen for users who are logged in. I see it more as a research tool than a final design. Hopefully it will prompt insights around:

the usefulness of the Trainee status overview section. Are they hoping for route specific data? Is a general overview (all routes) useful?
the notifications section. What will users think this feature does?

Start screen
Links to guidance and data requirements have been removed from the Start screen.

Guidance and data requirements
New screens for guidance and data requirements have been added. Including content for all routes on a single page is an attempt to maintain a shallow information architecture.

Will long scrolling pages with sections signposted by a contents list be suitable once we have information for all routes?
Perhaps accordions are a better option?

Bug fix
Bug fix has been included to address the QTS recommended status tag wrapping.
Before

After

I'd wonder if each of the status cards should link through to the applications list filtered by that status? (or leave for now and see if it comes up in user research)


[Feature Request] Name attribute for schema

I have two schemas (frontend/backend) with a shared type
Inside the Type I want to resolve all items for the backend admins but a filtered set for the frontend
My current solution is a path chek like this:
@strawberry.type
class SharedType:

  @strawberry.field
  def items(self, info) -> List[ItemType]:
    if info.context.request.path == '/api/backend/':
        return self.item_set.all()
    return self.item_set.exlude(hidden=True)

But this is bounded to the path. A better solution would be a named schema - so I can resolve depending on the mounted schema, e.g.:
def items(self, info) -> List[ItemType]:
    if info.schema.name == 'backendSchema':
        ...

instanciating the schema with an optional name like this:
frontend_schema = strawberry.Schema(..., name="backendSchema", types=[SharedType])
backend_schema = strawberry.Schema(..., name="frontendSchema", types=[SharedType])

@Speedy1991 have you tried extending the schema class and adding a name there? 😊

@Speedy1991 did that work? :)

Yea works like a charm. Thanks for the idea :)


Yet another gnuplot wrapping... but certainly the smallest one :)

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/52766
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.1.1 -m "<description of version>" 47f09c646608d003062a33358c71bc3581ca04a4
git push origin v0.1.1

Also, note the warning: This looks like a new registration that registers version 0.1.1.
Ideally, you should register an initial release with 0.0.1, 0.1.0 or 1.0.0 version numbers
This can be safely ignored. However, if you want to fix this you can do so. Call register() again after making the fix. This will update the Pull request.


Feature/end to end registry v2 test

@jrosadohp @gmatoshp it is looking good so far. One thing is that I tried to run in my environment and I had to add net-tools as a package to the shipyard controller image because it needs to look for the docker0 via route.
After that, I am having other issues, the TestPushImageToRegistry is failing. I will touch-base with you tomorrow to look into this further.

closing this down in favor of the test suite that does not have tests for push pull since we have had technical issues implementing such and getting reliable result across multiple environments.


Fix labels after bad merge

What's a bad merge in this context? Is it something we need to fix in our process or just like a problem resolving conflicts?

Hit a flake due to #639, re-ran.

@jbarrick-mesosphere I was working on the same code in two branches and when I merged after merging the first one into master I pretty much reverted https://github.com/kudobuilder/kudo/commit/0356f0c4d6bd6eb04d58fb35a8515e7f5f991fd1#diff-c2e52ee1aa92f961c976702674f98591 and https://github.com/kudobuilder/kudo/commit/32ec485980dc9a67f05773f8e828bd40f803a793#diff-c2e52ee1aa92f961c976702674f98591 so the upgrades are broken again on master :(


Define process to include new implementations in MicroProfile Starter

We need to define a process on how to include new MicroProfile implementations into MicroProfile starter.

Pass the TCK and list yourself on the [https://wiki.eclipse.org/MicroProfile/Implementation](MicroProfile implementation)
If there is an issue with an example -> The example can be wrong if we don't follow the spec or TCK, or the implementation does something different then spec/TCK.

Please add following pre-requisites to the process to add an implementation:

Ensure that your implementation has passed the MicroProfile TCKs for an umbrella release.
Add your implementation under the right MicroProfile version at page [https://wiki.eclipse.org/MicroProfile/Implementation](MicroProfile implementation)
Create a GitHub issue for adding your implementation to the MicroProfile Starter at [https://github.com/eclipse/microprofile-starter/issues](Issues page)
Do a Pull Request of the MicroProfile Starter project (this project) to add your new integration.

It has been written already: https://github.com/eclipse/microprofile-starter/blob/master/how-to.md
Done. Closing.

Done, but the process is in the readme file of the repo
when can implementation be added to the MicroProfile Tool


Handle connection error "Cannot connect to host gateway.autonolas"

Currently, this connection error produces: ValueError: The mech's tools have not been set.

I also observed this. The non-availability of the gateway should not affect the agents ability to run. Of course, it will affect its behaviour.
Full trace:
[2023-11-15 14:34:29,515][ERROR] [agent] Response: "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 969, in _wrap_create_connection\n    return await self._loop.create_connection(*args, **kwargs)  # type: ignore  # noqa\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/asyncio/base_events.py\", line 1085, in create_connection\n    raise exceptions[0]\n  File \"/usr/local/lib/python3.11/asyncio/base_events.py\", line 1069, in create_connection\n    sock = await self._connect_sock(\n           ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/asyncio/base_events.py\", line 973, in _connect_sock\n    await self.sock_connect(sock, address)\n  File \"/usr/local/lib/python3.11/asyncio/selector_events.py\", line 634, in sock_connect\n    return await fut\n           ^^^^^^^^^\n  File \"/usr/local/lib/python3.11/asyncio/selector_events.py\", line 674, in _sock_connect_cb\n    raise OSError(err, f'Connect call failed {address}')\nConnectionRefusedError: [Errno 111] Connect call failed ('<IP_ADDRESS>', 443)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n  File \"/root/agent/vendor/valory/connections/http_client/connection.py\", line 190, in _http_request_task\n    resp = await asyncio.wait_for(\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/asyncio/tasks.py\", line 489, in wait_for\n    return fut.result()\n           ^^^^^^^^^^^^\n  File \"/root/agent/vendor/valory/connections/http_client/connection.py\", line 235, in _perform_http_request\n    async with session.request(\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/client.py\", line 1117, in __aenter__\n    self._resp = await self._coro\n                 ^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/client.py\", line 520, in _request\n    conn = await self._connector.connect(\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 535, in connect\n    proto = await self._create_connection(req, traces, timeout)\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 892, in _create_connection\n    _, proto = await self._create_direct_connection(req, traces, timeout)\n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 1051, in _create_direct_connection\n    raise last_exc\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 1020, in _create_direct_connection\n    transp, proto = await self._wrap_create_connection(\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 975, in _wrap_create_connection\n    raise client_error(req.connection_key, exc) from exc\naiohttp.client_exceptions.ClientConnectorError: Cannot connect to host gateway.autonolas.tech:443 ssl:<ssl.SSLContext object at 0x7f11f86dc830> [Connect call failed ('<IP_ADDRESS>', 443)]\n"
[2023-11-15 14:34:29,515] [ERROR] [agent] Response: "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 969, in _wrap_create_connection\n    return await self._loop.create_connection(*args, **kwargs)  # type: ignore  # noqa\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/asyncio/base_events.py\", line 1085, in create_connection\n    raise exceptions[0]\n  File \"/usr/local/lib/python3.11/asyncio/base_events.py\", line 1069, in create_connection\n    sock = await self._connect_sock(\n           ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/asyncio/base_events.py\", line 973, in _connect_sock\n    await self.sock_connect(sock, address)\n  File \"/usr/local/lib/python3.11/asyncio/selector_events.py\", line 634, in sock_connect\n    return await fut\n           ^^^^^^^^^\n  File \"/usr/local/lib/python3.11/asyncio/selector_events.py\", line 674, in _sock_connect_cb\n    raise OSError(err, f'Connect call failed {address}')\nConnectionRefusedError: [Errno 111] Connect call failed ('<IP_ADDRESS>', 443)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n  File \"/root/agent/vendor/valory/connections/http_client/connection.py\", line 190, in _http_request_task\n    resp = await asyncio.wait_for(\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/asyncio/tasks.py\", line 489, in wait_for\n    return fut.result()\n           ^^^^^^^^^^^^\n  File \"/root/agent/vendor/valory/connections/http_client/connection.py\", line 235, in _perform_http_request\n    async with session.request(\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/client.py\", line 1117, in __aenter__\n    self._resp = await self._coro\n                 ^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/client.py\", line 520, in _request\n    conn = await self._connector.connect(\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 535, in connect\n    proto = await self._create_connection(req, traces, timeout)\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 892, in _create_connection\n    _, proto = await self._create_direct_connection(req, traces, timeout)\n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 1051, in _create_direct_connection\n    raise last_exc\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 1020, in _create_direct_connection\n    transp, proto = await self._wrap_create_connection(\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/aiohttp/connector.py\", line 975, in _wrap_create_connection\n    raise client_error(req.connection_key, exc) from exc\naiohttp.client_exceptions.ClientConnectorError: Cannot connect to host gateway.autonolas.tech:443 ssl:<ssl.SSLContext object at 0x7f11f86dc830> [Connect call failed ('<IP_ADDRESS>', 443)]\n"
[2023-11-15 14:34:29,529][ERROR] [agent] Retries were exceeded while trying to get the mech agent's data.
[2023-11-15 14:34:29,529] [ERROR] [agent] Retries were exceeded while trying to get the mech agent's data.
[2023-11-15 14:34:29,557][ERROR] [agent] <An error occurred during act of behaviour valory/trader_abci:0.1.0/TraderConsensusBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 440, in act_wrapper
    raise AEAActException(

aea.exceptions.AEAActException: An error occurred during act of behaviour valory/trader_abci:0.1.0/ToolSelectionBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

> raised during `<bound method Behaviour.act_wrapper of <behaviours.TraderConsensusBehaviour object at 0x7f11f817a190>>`
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 435, in act_wrapper
    self.act()
  File "/root/agent/vendor/valory/skills/abstract_round_abci/behaviour_utils.py", line 318, in act
    self.__handle_waiting_for_message()
  File "/root/agent/vendor/valory/skills/abstract_round_abci/behaviour_utils.py", line 354, in __handle_waiting_for_message
    self.__get_generator_act().send(self.__message)
  File "/root/agent/vendor/valory/skills/abstract_round_abci/behaviour_utils.py", line 731, in async_act_wrapper
    yield from self.async_act()
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 277, in async_act
    selected_tool = yield from self._select_tool()
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 255, in _select_tool
    self._set_policy()
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 204, in _set_policy
    self._adjust_policy_tools(local_tools)
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 184, in _adjust_policy_tools
    removed_idx = [idx for idx in reversed_idx if local[idx] not in self.mech_tools]
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 184, in <listcomp>
    removed_idx = [idx for idx in reversed_idx if local[idx] not in self.mech_tools]
                                                                    ^^^^^^^^^^^^^^^
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")
ValueError: The mech's tools have not been set.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 435, in act_wrapper
    self.act()
  File "/root/agent/vendor/valory/skills/abstract_round_abci/behaviours.py", line 368, in act
    self.current_behaviour.act_wrapper()
  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 440, in act_wrapper
    raise AEAActException(
aea.exceptions.AEAActException: An error occurred during act of behaviour valory/trader_abci:0.1.0/ToolSelectionBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aea/agent_loop.py", line 286, in _execution_control
    return fn(*(args or []), **(kwargs or {}))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 440, in act_wrapper
    raise AEAActException(
aea.exceptions.AEAActException: An error occurred during act of behaviour valory/trader_abci:0.1.0/TraderConsensusBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 440, in act_wrapper
    raise AEAActException(

aea.exceptions.AEAActException: An error occurred during act of behaviour valory/trader_abci:0.1.0/ToolSelectionBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

[2023-11-15 14:34:29,557] [ERROR] [agent] <An error occurred during act of behaviour valory/trader_abci:0.1.0/TraderConsensusBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 440, in act_wrapper
    raise AEAActException(

aea.exceptions.AEAActException: An error occurred during act of behaviour valory/trader_abci:0.1.0/ToolSelectionBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

> raised during `<bound method Behaviour.act_wrapper of <behaviours.TraderConsensusBehaviour object at 0x7f11f817a190>>`
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 435, in act_wrapper
    self.act()
  File "/root/agent/vendor/valory/skills/abstract_round_abci/behaviour_utils.py", line 318, in act
    self.__handle_waiting_for_message()
  File "/root/agent/vendor/valory/skills/abstract_round_abci/behaviour_utils.py", line 354, in __handle_waiting_for_message
    self.__get_generator_act().send(self.__message)
  File "/root/agent/vendor/valory/skills/abstract_round_abci/behaviour_utils.py", line 731, in async_act_wrapper
    yield from self.async_act()
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 277, in async_act
    selected_tool = yield from self._select_tool()
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 255, in _select_tool
    self._set_policy()
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 204, in _set_policy
    self._adjust_policy_tools(local_tools)
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 184, in _adjust_policy_tools
    removed_idx = [idx for idx in reversed_idx if local[idx] not in self.mech_tools]
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 184, in <listcomp>
    removed_idx = [idx for idx in reversed_idx if local[idx] not in self.mech_tools]
                                                                    ^^^^^^^^^^^^^^^
  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")
ValueError: The mech's tools have not been set.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 435, in act_wrapper
    self.act()
  File "/root/agent/vendor/valory/skills/abstract_round_abci/behaviours.py", line 368, in act
    self.current_behaviour.act_wrapper()
  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 440, in act_wrapper
    raise AEAActException(
aea.exceptions.AEAActException: An error occurred during act of behaviour valory/trader_abci:0.1.0/ToolSelectionBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aea/agent_loop.py", line 286, in _execution_control
    return fn(*(args or []), **(kwargs or {}))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 440, in act_wrapper
    raise AEAActException(
aea.exceptions.AEAActException: An error occurred during act of behaviour valory/trader_abci:0.1.0/TraderConsensusBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 440, in act_wrapper
    raise AEAActException(

aea.exceptions.AEAActException: An error occurred during act of behaviour valory/trader_abci:0.1.0/ToolSelectionBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

[2023-11-15 14:34:29,627] [INFO] [agent] HTTP Client has shutdown on port: 8000.
[2023-11-15 14:34:29,627][INFO] [agent] HTTP Client has shutdown on port: 8000.
[2023-11-15 14:34:29,633] [ERROR] [agent] exception on node client close
Traceback (most recent call last):
  File "/root/agent/vendor/valory/connections/p2p_libp2p_client/connection.py", line 501, in disconnect
    await self._node_client.close()
  File "/root/agent/vendor/valory/connections/p2p_libp2p_client/connection.py", line 268, in close
    await self.pipe.close()
  File "/usr/local/lib/python3.11/site-packages/aea/helpers/pipe.py", line 600, in close
    await self._sock.close()
  File "/usr/local/lib/python3.11/site-packages/aea/helpers/pipe.py", line 325, in close
    await self._writer.drain()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 377, in drain
    await self._protocol._drain_helper()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 166, in _drain_helper
    raise ConnectionResetError('Connection lost')
ConnectionResetError: Connection lost
[2023-11-15 14:34:29,633][ERROR] [agent] exception on node client close
Traceback (most recent call last):
  File "/root/agent/vendor/valory/connections/p2p_libp2p_client/connection.py", line 501, in disconnect
    await self._node_client.close()
  File "/root/agent/vendor/valory/connections/p2p_libp2p_client/connection.py", line 268, in close
    await self.pipe.close()
  File "/usr/local/lib/python3.11/site-packages/aea/helpers/pipe.py", line 600, in close
    await self._sock.close()
  File "/usr/local/lib/python3.11/site-packages/aea/helpers/pipe.py", line 325, in close
    await self._writer.drain()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 377, in drain
    await self._protocol._drain_helper()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 166, in _drain_helper
    raise ConnectionResetError('Connection lost')
ConnectionResetError: Connection lost
[2023-11-15 14:34:29,651][ERROR] [agent] Error while disconnecting <class 'connection_module.P2PLibp2pClientConnection'>: Connection lost
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aea/multiplexer.py", line 454, in _disconnect_all
    await asyncio.wait_for(
  File "/usr/local/lib/python3.11/asyncio/tasks.py", line 489, in wait_for
    return fut.result()
           ^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aea/multiplexer.py", line 481, in _disconnect_one
    await connection.disconnect()
  File "/root/agent/vendor/valory/connections/p2p_libp2p_client/connection.py", line 501, in disconnect
    await self._node_client.close()
  File "/root/agent/vendor/valory/connections/p2p_libp2p_client/connection.py", line 268, in close
    await self.pipe.close()
  File "/usr/local/lib/python3.11/site-packages/aea/helpers/pipe.py", line 600, in close
    await self._sock.close()
  File "/usr/local/lib/python3.11/site-packages/aea/helpers/pipe.py", line 325, in close
    await self._writer.drain()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 377, in drain
    await self._protocol._drain_helper()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 166, in _drain_helper
    raise ConnectionResetError('Connection lost')
ConnectionResetError: Connection lost
[2023-11-15 14:34:29,651] [ERROR] [agent] Error while disconnecting <class 'connection_module.P2PLibp2pClientConnection'>: Connection lost
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aea/multiplexer.py", line 454, in _disconnect_all
    await asyncio.wait_for(
  File "/usr/local/lib/python3.11/asyncio/tasks.py", line 489, in wait_for
    return fut.result()
           ^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aea/multiplexer.py", line 481, in _disconnect_one
    await connection.disconnect()
  File "/root/agent/vendor/valory/connections/p2p_libp2p_client/connection.py", line 501, in disconnect
    await self._node_client.close()
  File "/root/agent/vendor/valory/connections/p2p_libp2p_client/connection.py", line 268, in close
    await self.pipe.close()
  File "/usr/local/lib/python3.11/site-packages/aea/helpers/pipe.py", line 600, in close
    await self._sock.close()
  File "/usr/local/lib/python3.11/site-packages/aea/helpers/pipe.py", line 325, in close
    await self._writer.drain()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 377, in drain
    await self._protocol._drain_helper()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 166, in _drain_helper
    raise ConnectionResetError('Connection lost')
ConnectionResetError: Connection lost
Stopping AEA 'agent' ...
AEA 'agent' stopped.
Error: AEA was terminated cause exception `An error occurred during act of behaviour valory/trader_abci:0.1.0/TraderConsensusBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/usr/local/lib/python3.11/site-packages/aea/skills/base.py", line 440, in act_wrapper
    raise AEAActException(

aea.exceptions.AEAActException: An error occurred during act of behaviour valory/trader_abci:0.1.0/ToolSelectionBehaviour:
Traceback (most recent call last):

  File "/root/agent/vendor/valory/skills/decision_maker_abci/behaviours/tool_selection.py", line 81, in mech_tools
    raise ValueError("The mech's tools have not been set.")

ValueError: The mech's tools have not been set.

` in skills <bound method Behaviour.act_wrapper of <behaviours.TraderConsensusBehaviour object at 0x7f11f817a190>>! Please check logs.
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function StreamWriter.__del__ at 0x7f11fef0eb60>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 395, in __del__
    self.close()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 343, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
[2023-11-15 14:34:29,897][ERROR] Task was destroyed but it is pending!
task: <Task pending name='Task-155911' coro=<TcpServerChannel.receive_messages() running at /root/agent/vendor/valory/connections/abci/connection.py:953> wait_for=<Future pending cb=[Task.task_wakeup()]>>
[2023-11-15 14:34:29,897][ERROR] Task was destroyed but it is pending!
task: <Task pending name='Task-155913' coro=<TcpServerChannel.receive_messages() running at /root/agent/vendor/valory/connections/abci/connection.py:953> wait_for=<Future pending cb=[Task.task_wakeup()]>>
[2023-11-15 14:34:29,897][ERROR] Task was destroyed but it is pending!
task: <Task pending name='Task-155916' coro=<TcpServerChannel.receive_messages() running at /root/agent/vendor/valory/connections/abci/connection.py:953> wait_for=<Future pending cb=[Task.task_wakeup()]>>
[2023-11-15 14:34:29,897][ERROR] Task was destroyed but it is pending!
task: <Task pending name='Task-155919' coro=<TcpServerChannel.receive_messages() running at /root/agent/vendor/valory/connections/abci/connection.py:953> wait_for=<Future pending cb=[Task.task_wakeup()]>>


[Bug]: Testimonials missing

Give a brief about the bug ✍
In the mobile-menu/side-menu the "Testimonials" link is missing.
What is the expected behavior? 🤔
The side menu should have all the links that are in the main navigation bar
Provide step by step information reproduce the bug 📄

Select program in which you are contributing
GSSoC24
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

@ayush-t02 kindly have a look into this issue.


Swift 4 support

Check List
Thanks for considering to open an issue. Before you submit your issue, please confirm these boxes are checked.

[x] I have read the wiki page and cheat sheet, but there is no information I need.
[x] I have searched in existing issues, but did not find a same one.
[x] I want to reoprt a problem instead of asking a question. It'd better to use kingfisher tag in Stack Overflow to ask a question.

Issue Description
Add support for swift 4
What
A project that complies with swift 4 marks the following issues:

Pods/Kingfisher/Sources/AnimatedImageView.swift:382:19: Declarations in extensions cannot override yet
Pods/Kingfisher/Sources/Filter.swift:74:40: 'cropping(to:)' has been renamed to 'cropped(to:)'
Pods/Kingfisher/Sources/Filter.swift:82:9: Closure tuple parameter '(CGFloat, CGFloat, CGFloat, CGFloat)' does not support destructuring
Pods/Kingfisher/Sources/Image.swift:626:39: Static var 'colorControl' expects a single parameter of type 'Filter.ColorElement' (aka '(CGFloat, CGFloat, CGFloat, CGFloat)')

Reproduce
Create a new project in Xcode 9.0 add Kingfisher via cocoapods and try to compile
Other Comment
It can work if the project has been compiled for swift 3, but if you clean the project and try to compile again the compilation fails

temporal solution from stackoverflow, append this to your Podfile

  post_install do |installer|
      installer.pods_project.targets.each do |target|
          if target.name == 'Kingfisher'
              target.build_configurations.each do |config|
                  config.build_settings['SWIFT_VERSION'] = '3.2'
              end
          end
      end
  end

Kingfisher 4 already supports Swift 4. To use the latest version, please upgrade to version 4.
And you also need to change the Swift version to 4.0 in the build setting in Kingfisher. Or try to upgrade your CocoaPods.
See https://github.com/onevcat/Kingfisher/issues/772 https://github.com/onevcat/Kingfisher/issues/777 https://github.com/onevcat/Kingfisher/issues/779
Please, make sure you have searched in existing issues, but did find a same one

Sorry I did not realized that my cocoapods was not updated and I thought 3.13.1 and I did not check the closed issues/PR Thanks anyway

:] Never mind. Since it seems that CocoaPods decides not to use setting provided in our podspec (https://github.com/CocoaPods/CocoaPods/issues/6791), I think it should be better to provide a version supports both Swift 3.2 and Swift 4, to avoid further issues like this. I will create a new version soon.
Thanks.

Version 4.1.0 was released with supporting for both 3.2 and 4.0. That should fix this kind of issues.


[Dewhale] implements #242

[Dewhale] This PR implements #242, created by Dewhale.

[Dewhale]: This Svelte code snippet creates a sidebar UI component with a logo at the top, navigation items such as Home, Profile, Search, and Logout, and the user's login credentials at the bottom. The Logo component is used to display the company logo, and the UserCredentials component is used to display the user's name, email, and avatar. Icons from 'lucide-svelte' are used to represent the navigation items. The global style ensures that the logo image is fully contained within its container.


Config value listen.prefix does not work anymore since major refactor in version v0.117

In verison 0.116 it was enough to add "/" to the end of the URL.
e.g. no listen.prefix configured, reverseproxy forwards "https://.../mon/karma" -> "http://<karma-pod/service>/" (strip-prefix)
Working URL in browser was "https://.../mon/karma/"
Now this does not work anymore, because path to assets is not relative but absolute, now.
So assets are always tried to be loaded from /assets/...
Config value listen.prefix only works for the index.html but is ignored for assets.
Additionally setting custom.js or custom.css to any value leads to /assets/custom.css or /assets/custom.js respectively. So this can also not be used as workarround.
This is a major issue in nearly all web frameworks. As I do not understand the one used here, could you please verify if this is an issue in the way you use this framework, or if it is a bug or missing feature in the framework and open an issue there?

Works fine for me, thank you


Feature/www

IMPORTANT: Please do not create a Pull Request without creating an issue first.
Fixed issues (PRs without this will not be accepted)

Fixes #350

Changes

Adds marketing website home page
Adds marketing website pricing page

PR Checklist

[ ] Does your PR contain relevant tests that pass?
[x] Is your code linted? yarn lint or yarn lint:fix
[ ] Does your code build correctly in ALL projects? yarn build

Cannot figure out why the checks(install packages) are failing


[gdal] Update to 2.4.4

update from 2.4.1 to 2.4.4
add new feature latest to support Build latest gdal version (3.0.4)
add new feature kmz to support kmz format by libkml

Any updates?

Any updates?

I failed the test under osx, and I found a new PR#9100, which is modifying some compilation methods under linux and osx, so I want to wait for this PR to pass and then do a version update

Okay, please ping me when this PR ready for review.

Closing this PR since it seems that no progress is being made. Please reopen if work is still being done.


Support 4608 colour terminals.

Vim assumed that all terminals that do not have 8, 16, 88 or 256 colours
have a particular non-ansi, non-terminfo ordering to the first 16 colours.
Terminals that had one of those counts would only get ANSI ordering if
the terminfo control sequence ends with a letter "m".
I have left the weirdness in, but added the assumption that a terminal
with more than 256 colours will do the sane thing and use the XTerm-256
ordering for the first 256 of these colours.
If it does not, terminfo is sufficiently programmable to make it happen.
I have checked the terminfo.src from ncurses and the only mentioned non-ansi
terminals have 64 or fewer colours, and probably don't work with Vim's colours anyway.
Note: the '4608 colours' I'm referring to are the result of placing the terminfo setaf
below with other related codes into the terminfo descriptions of one of the recent crop
of "24bit truecolor" supporting terminals.
This makes the colours that vim is already able to use as below, except those hardcoded colour
names go "weird".

0..7 -- ANSI standard
8..15 -- Bright ANSI
16..231 -- XTerm Colour cube
232..255 -- XTerm greys
256..4351 -- 12 bit cube
4352..4607 -- Full grey scale

        setaf=\E[
            %?%p1%{8}%<%t3%p1%d
            %e%p1%{16}%<%t%p1%{82}%+%d
            %e%p1%{256}%<%t38;5;%p1%d
            %e38;2;
                %?%p1%{4352}%<%t
                    %p1%{256}%-%{256}%/%{17}%*%d;
                    %p1%{256}%-%{16}%/%{15}%&%{17}%*%d;
                    %p1%{15}%&%{17}%*%d
                %e%p1%{32768}%<%t
                    %p1%{255}%&%Pa%ga%d;%ga%d;%ga%d
                %e
                    %p1%{65536}%/%{255}%&%d;
                    %p1%{256}%/%{255}%&%d;
                    %p1%{255}%&%d
                %;
            %;m,

What bizarro terminal supports 4608 colors, and why?  If it exists already, and is widely available, it'd be interesting as a test case.  If not, many terminals are starting to support 24-bit colors (1 byte each for R, G, and B components), which is a much better scheme.  E.g. Xterm, GNOME Terminal, and Konsole all support ISO 8613-3 \e[N;2;R;G;Bm where N is 38 for foreground or 48 for background.  There are patches available for supporting it in Vim.

@benizi Xterm does not support 24-bit colors. It does support escape sequences in question, but it uses nearest (in RGB space) color from 8-bit palette and I have not heard that this is going to change. Also in place of GNOME terminal it is better to mention vte library because there many other vte-based terminals. In addition true color is supported by ConEmu (Windows) and iTerm2 (Mac OS).

Interesting.  I'd assumed this entry from the ncurses FAQ

After some reflection, I provided in xterm (with patch #282) support for the direct color feature. Both that and the earlier 256-color feature are usable with either the ISO 8613-6 syntax, or the xterm patch #111 syntax.

meant that Xterm supported "direct color" mode.  But, indeed, @ZyX-I, you're correct that it does a nearest match.  (The changelist states as much.)
Regardless, 4608 is a very bizarre choice, and I'd like to see something that uses it.

Grrr, the point of the patch is not 4k colours, it's that vim uses a weird set of 16 colours for any number of colours that isn't 8,16,88 or 256. Only those exact numbers of colours use ANSI and XTerm colours. The tiny patch makes vim use XTerm colours for any larger number of colours you might choose.
Anyway, to answer the question ...

"What bizarro terminal supports 4608 colors,"

Every terminal that supports 24 bit colour. The terminfo item I mentioned uses the Kinsole/XTerm ANSI sequences to display a 4096 colour cube (plus the normal 216 colour cube, ansi colours and greys )
The reason you might want to do that is that there is NO WAY of representing 24bit colour in terminfo. The maximum value of any integer item defined in a terminfo file is 32767. The names of the terminfo items are not stored in the file, everyone has to agree what name goes with what offset in the file so adding items is a pain.
OTOH just adding a few thousand colours is easy, once someone has written the hairy string, and a 12 bit cube is surprising close to the "can't tell the difference" line where you don't need to add any more colours. Basically, you can't distinguish any exact 24 bit colour and it's 12 bit nearest neighbour unless the two colours are literally right next to each other. And occasionally not even then.
But, if you want a test case, that's a good idea, here's the XTerm variant. It should be close enough for most of the 24 bit compatible terminals. The hardcoded colour names in vim will be wrong, but everything else works fine.
xterm-4k|XTerm like terminal emulator with 4k colours,
        colors#4608, pairs#32767,
        setaf=\E[
            %?%p1%{8}%<%t3%p1%d
            %e%p1%{16}%<%t%p1%{82}%+%d
            %e%p1%{256}%<%t38;5;%p1%d
            %e38;2;
                %?%p1%{4352}%<%t
                    %p1%{256}%-%{256}%/%{17}%*%d;
                    %p1%{256}%-%{16}%/%{15}%&%{17}%*%d;
                    %p1%{15}%&%{17}%*%d
                %e%p1%{32768}%<%t
                    %p1%{255}%&%Pa%ga%d;%ga%d;%ga%d
                %e
                    %p1%{65536}%/%{255}%&%d;
                    %p1%{256}%/%{255}%&%d;
                    %p1%{255}%&%d
                %;
            %;m,
        setab=\E[
            %?%p1%{8}%<%t4%p1%d
            %e%p1%{16}%<%t%p1%{92}%+%d
            %e%p1%{256}%<%t48;5;%p1%d
            %e48;2;
                %?%p1%{4352}%<%t
                    %p1%{256}%-%{256}%/%{17}%*%d;
                    %p1%{256}%-%{16}%/%{15}%&%{17}%*%d;
                    %p1%{15}%&%{17}%*%d
                %e%p1%{32768}%<%t
                    %p1%{255}%&%Pa%ga%d;%ga%d;%ga%d
                %e
                    %p1%{65536}%/%{255}%&%d;
                    %p1%{256}%/%{255}%&%d;
                    %p1%{255}%&%d
                %;
            %;m,
    setb@, setf@,
    use=xterm,

And here's a trivial script to display them all.
#!/bin/sh

main() {
r=0;
e=`tput colors`
[ "$e" = 32767 ] && e=33554432

bld=0
w=128
[ "$e" -le 512 ] && w=64

echo Colours=$e

[ "$e" -eq 8 ] && { bld=1; e=16 ; }

while [ $r -lt $e ]
do  c=0;

    if [ $bld = 1 ]
    then tput bold ; tput setaf 7
    else tput setaf 15
    fi

    while [ $c -lt $w -a $c -lt $e ]
    do  col=$((r+c))
        [ "$col" -lt $e ] || break

        c=$((c+1))
        if [ $bld -eq 1 -a $col -gt 7 ]
        then
            tput bold
            tput setab $((col-8))
            tput setaf $((col-8))
            echo -n "#"
        else
            tput setab $col
            echo -n " "
        fi

        [ $e = 256 -a $col = 15 ] && {
            w=36
            break
        }
    done
    tput sgr0
    echo
    r=$((r+c))
done
}

main "$@"

PS: I keep forgetting, there's a stanza on the end of those strings for colours in the range 16777216..33554431 which it translates that into a truecolour sequence assuming that value is: 2**24 + r*65536 + g*256 + b but there's no way to represent 16 or 33 million in the colors# item in a terminfo file.

Grrr, the point of the patch is not 4k colours,

Grrr, then don't make the title of the pull request "Support 4608 colour terminals."

it's that vim uses a weird set of 16 colours for any number of colours that isn't 8,16,88 or 256. Only those exact numbers of colours use ANSI and XTerm colours. The tiny patch makes vim use XTerm colours for any larger number of colours you might choose.

Excellent. That makes much more sense. "Use 256-colour palette for terminals that support more than 256 colours."

Anyway, to answer the question ...
"What bizarro terminal supports 4608 colors,"
Every terminal that supports 24 bit colour. The terminfo item I mentioned uses the Kinsole/XTerm ANSI sequences to display a 4096 colour cube (plus the normal 216 colour cube, ansi colours and greys )

Huh.  That's pretty clever use of terminfo sequences.  Similar entries for rxvt-unicode-4k (against my 24-bit capable fork) and st-4k worked fine with this simpler test script:
for ((i=0;i<4608;i++)) { tput setaf $i ; printf M ; tput sgr0 ; }

Having built your branch, using any of the 4k modes {xterm-, rxvt-unicode-, st-}, your version of :colo default matches xterm-256color, whereas "standard" Vim's :colo default looks a lot like xterm16 (with bg=light).  i.e., it does what you say it does (treats >256 the same as 256, rather than similar to 8 or 16).  Had to forcibly :set t_Co=4608 several times, and reset :se bg=light.
:thumbsup:

Grrr Sigh, yes you're probably right, even a "257, 4608 or more" wouldn't have helped much, as I expect there are far too many message/patch requests to VIM for most people to look at.


Release 0.0.1

What's done:

Add Publishing Configuration files

Closes #32

Also you should remove version from gradle.properties if it is being set dynamically by reckon plugin


Plugin to search in Obsidian

Description of the new feature / enhancement
PowerToys Run recently got a plugin that allows it to search in local OneNote notebooks. Could someone put something similar together for Obsidian (https://obsidian.md), that would allow opening notes by title or headers in them and searching for words and tags, please?
Scenario when this would be used?
I use Obsidian as knowledge-base storage. I put things in there and retrieve them all the time. Now, I know it isn't that hard to switch to that app and search there but it's not always on the same virtual desktop I'm currently on and PowerToys Run would make this so much faster.
Supporting information
No response

This would be enabled via /dup https://github.com/microsoft/PowerToys/issues/3200
we as a team wouldn’t build this out.