Fix #730 by using a guaranteed reuse buffer pool.

Always return buffers to the pool.
Current code fails to call bufPool.Put(bufp) for every bufPool.Get(), which is fixed here. But even with this fix, the code in #730 still results in signal: killed.
Reimplementing the buffer pool with github.com/oxtoacart/bpool instead of sync.Pool solves the problem. Now we always reuse buffers if possible.

I'm trying to understand the tests... Am I right in thinking there is currently no test coverage for the creation of buffers in the pool during PutObjectStreaming()?
The closest tests seem to be things like testPutObjectNoLengthV2() in functional_tests.go. What calls that? Do you have to go run -race functional_tests.go -v as opposed to go test -race ./...?
If I add a new test function to functional_tests.go, I'm having difficulty debugging if the test actually triggers the desired code path, since I can't see any fmt.Printf output in the apo-*.go code.
How do you run absolutely all tests and confirm test coverage?

Thanks for the PR @sb10 we don't need to use an external library - the problem was perhaps calling Get() inside a loop which resulted in multiple buffers even for a single PutObject() operation.  Even after a success Put(bufp), the usage of the sync.Pool was wrong
The right way is to re-use the buffer appropriately by calling it only once.
diff --git a/api-put-object-multipart.go b/api-put-object-multipart.go
index 6e0015a..acc8595 100644
--- a/api-put-object-multipart.go
+++ b/api-put-object-multipart.go
@@ -101,19 +101,20 @@ func (c Client) putObjectMultipartNoStream(bucketName, objectName string, reader
        // Initialize parts uploaded map.
        partsInfo := make(map[int]ObjectPart)

+       bufp := bufPool.Get().(*[]byte)
+       defer bufPool.Put(bufp)
+
        for partNumber <= totalPartsCount {
                // Choose hash algorithms to be calculated by hashCopyN,
                // avoid sha256 with non-v4 signature request or
                // HTTPS connection.
                hashAlgos, hashSums := c.hashMaterials()

-               bufp := bufPool.Get().(*[]byte)
                length, rErr := io.ReadFull(reader, *bufp)
                if rErr == io.EOF {
                        break
                }
                if rErr != nil && rErr != io.ErrUnexpectedEOF {
-                       bufPool.Put(bufp)
                        return 0, rErr
                }

@@ -132,7 +133,6 @@ func (c Client) putObjectMultipartNoStream(bucketName, objectName string, reader
                objPart, err = c.uploadPart(bucketName, objectName, uploadID, rd, partNumber,
                        hashSums["md5"], hashSums["sha256"], int64(length), metadata)
                if err != nil {
-                       bufPool.Put(bufp)
                        return totalUploadedSize, err
                }

@@ -145,9 +145,6 @@ func (c Client) putObjectMultipartNoStream(bucketName, objectName string, reader
                // Increment part number.
                partNumber++

-               // Put back data into bufpool.
-               bufPool.Put(bufp)
-
                // For unknown size, Read EOF we break away.
                // We do not have to upload till totalPartsCount.
                if rErr == io.EOF {
diff --git a/api-put-object.go b/api-put-object.go
index f410713..95bbdcc 100644
--- a/api-put-object.go
+++ b/api-put-object.go
@@ -256,14 +256,18 @@ func (c Client) putObjectMultipartStreamNoLength(bucketName, objectName string,
        // Initialize parts uploaded map.
        partsInfo := make(map[int]ObjectPart)

+       // Fetch a new buffer.
+       bufp := bufPool.Get().(*[]byte)
+
+       // Put back data into bufpool.
+       defer bufPool.Put(bufp)
+
        for partNumber <= totalPartsCount {
-               bufp := bufPool.Get().(*[]byte)
                length, rErr := io.ReadFull(reader, *bufp)
                if rErr == io.EOF {
                        break
                }
                if rErr != nil && rErr != io.ErrUnexpectedEOF {
-                       bufPool.Put(bufp)
                        return 0, rErr
                }

@@ -276,7 +280,6 @@ func (c Client) putObjectMultipartStreamNoLength(bucketName, objectName string,
                objPart, err = c.uploadPart(bucketName, objectName, uploadID, rd, partNumber,
                        nil, nil, int64(length), metadata)
                if err != nil {
-                       bufPool.Put(bufp)
                        return totalUploadedSize, err
                }

@@ -289,9 +292,6 @@ func (c Client) putObjectMultipartStreamNoLength(bucketName, objectName string,
                // Increment part number.
                partNumber++

-               // Put back data into bufpool.
-               bufPool.Put(bufp)
-
                // For unknown size, Read EOF we break away.
                // We do not have to upload till totalPartsCount.
                if rErr == io.EOF {

This should address your bug @sb10 can you re-work this PR and test it on your end?

Sorry, that doesn't work. Again, from the docs for sync.Pool:

Get may choose to ignore the pool and treat it as empty.

If I alter the test added in this pull request to get 3 or more files sequentially with your above version, it still fails with signal: killed. You should be able to replicate this on any 4GB machine or VM.
If you're worried about adding another dependency, the code from github.com/oxtoacart/bpool that I'm using is only 28 lines and apache 2 licensed, so could be copied directly in to api-put-object-multipart.go if you like.

Sorry, that doesn't work. Again, from the docs for sync.Pool:
Get may choose to ignore the pool and treat it as empty.
If I alter the test added in this pull request to get 3 or more files sequentially with your above version, it still fails with signal: killed. You should be able to replicate this on any 4GB machine or VM.
If you're worried about adding another dependency, the code from github.com/oxtoacart/bpool that I'm using is only 28 lines and apache 2 licensed, so could be copied directly in to api-put-object-multipart.go if you like.

I see again why because PutObject() if called through your app by nature is again being called in a for loop for each PutObject operations which ultimately results in the same scenario.  This is quite unexpected from sync.Pool makes it quite not useful in most scenarios.  The only reason i wanted to stick to sync.Pool is that its a natural fit for these situations but i do see the problem since Go is not providing any guarantee.  Instead of using using external library we can leverage our own implementation here based on https://raw.githubusercontent.com/minio/minio/master/pkg/bpool/bpool.go which we used extensively with erasure coded backend - needs modification though can you try this following implementation instead?
package minio

import "sync"

// BytePool - temporary pool of byte slice.
type BytePool struct {
        sync.Mutex
        buf  []byte // array of byte slices
        size int64  // size of buf
}

// Get - Returns a buffer of size.
func (b *BytePool) Get() (buf []byte) {
        b.Lock()
        defer b.Unlock()
        if b.buf == nil {
                b.buf = make([]byte, b.size)
        }
        return b.buf
}

// NewBytePool - Returns a new byte pool.
// size - length of the pool'ed slice.
func NewBytePool(size int64) *BytePool {
        return &BytePool{size: size}
}

That's not a pool? The only thing it does is guarantee that Get() always returns the same byte slice, which would be very bad in a concurrent situation.
The minio bpool implementation is comparatively inefficient and errors out once you try to create too many buffers.
The oxtoacart/bpool implementation is simple, works concurrently and has the desired behaviour:

You can always get a buffer
We only store a limited number of past buffers
If one was previously made, is not being used right now and so got stored, you'll get that one

That's not a pool? The only thing it does is guarantee that Get() always returns the same byte slice, which would be very bad in a concurrent situation.

Correct, it is not a pool yet. I wanted to see if it does help as a first step, if it does then i can implement a new version which does concurrent behavior as well without using channels.

The minio bpool implementation is comparatively inefficient and errors out once you try to create too many buffers.

It is expected to error out since it is unexpected that you wish to create more buffer than requested amount on the server which in turn leads to OOM. The reason is that Get() should never really be allowed to do make([]byte) beyond its prescribed limit.  It also indicates that caller is doing something wrong in this situation.

The oxtoacart/bpool implementation is simple, works concurrently and has the desired behaviour:
You can always get a buffer
We only store a limited number of past buffers
If one was previously made, is not being used right now and so got stored, you'll get that one

We used it before when we wished to implement server side buffer pooling - bpool.Get() and bpool.Put() has to be synchronized i.e there should be a one to one relation otherwise there is no way bpool.Get() limits you from running out of memory.
I would even perhaps block the caller if a bpool.Get() is not synchronized with another bpool.Put() - this way run-away concurrency can be controlled and also mistakes can be avoided inside the code.  So in a sense that you can possibly only upload 5 PutObject in parallel on a 4GiB VM or machine.

Not quite sure how to take your last comments. Yes, you have to use it correctly. This pull request now defers the Put() after the Get(), so there won't be an issue.
Are you proposing to alter the oxtoacart/bpool implementation so that instead of "You can always get a buffer" it becomes "You can only get a new buffer if we haven't reached the limit, otherwise the Get() call blocks"?
But then you have to worry about a "reasonable" default limit and letting the user override it. I think the existing behaviour is better. The hard-coded limit prevents wasting too much memory on the pool, and the user decides exactly how many many simultaneous uploads they would like to do, based on their available memory.
Why do you wish to avoid using channels? They seem ideal here.

Not quite sure how to take your last comments. Yes, you have to use it correctly. This pull request now defers the Put() after the Get(), so there won't be an issue.

It works essentially in some cases but not in high concurrent environments which is what we have seen in the past. If the basic idea behind using sort of a byte pool is to save ourselves when an app misbehaves is not possible.
Lets take an example here if you set the pool size for example as 4GiB as 5 it doesn't really mean that you are essentially limited to a pool of 5 . Because if you have an application lets say uploads 10 objects in parallel then you have essentially overflowed your pool by 5 additional entries which are in-fact not holding any pool entry themselves but they are generally going to be lost and Go should garbage collect them.  This is what i meant by run-away affect it doesn't matter if you use it properly inside the PutObject() implementation you can potentially end up in a situation.  Another reason is also because user himself is not in control of the overall memory usage so an SDK consumer has to peek into our implementation to understand how many go-routines he/she can have and which would safer to use in certain environments.

But then you have to worry about a "reasonable" default limit and letting the user override it. I think the existing behaviour is better. The hard-coded limit prevents wasting too much memory on the pool, and the user decides exactly how many simultaneous uploads they would like to do, based on their available memory.

My suggestion is to block such PutObject() operations to request more memory from the system, this way we will be safe and there are no crashes. Yes we do need to provide a way to tune these values so that user can choose based on the amount of go-routines he/she is going to use.
Well if a user is able to decide based on how much of amount of memory is available - which is harder to obtain in a cross platform safe way. I would think that user will know the object size before hand and not even get to this situation in the first place.

Why do you wish to avoid using channels? They seem ideal here.

This is perhaps my bad, channels are fine.

Lets take an example here if you set the pool size for example as 4GiB as 5 it doesn't really mean that you are essentially limited to a pool of 5 . Because if you have an application lets say uploads 10 objects in parallel then you have essentially overflowed your pool by 5 additional entries which are in-fact not holding any pool entry themselves but they are generally going to be lost and Go should garbage collect them. This is what i meant by run-away affect it doesn't matter if you use it properly inside the PutObject()

This is just quite easy in an application like yours since you do not know the object size even if the file size is 1KiB lets say and you are expecting 100 routines to upload different files.  We are going to crash anyways so we are not safe here in the first place.
Let me think about this further, going to sleep now and perhaps provide more comprehensive solution to this situation.

Let's clarify this down.
The aim to be achieved here is that minio-go should be able to upload files in constant memory.

It is OK if each additional simultaneous upload requires an additional constant amount of memory.
It is NOT OK if each sequential upload requires additional memory.

If a user of minio-go finds that they run out of memory because they did too many simultaneous uploads, all they have to do is do fewer simultaneous uploads. The user doesn't have to tune any hidden parameter in minio-go.
The user shouldn't, however, run out of memory doing single sequential uploads, because then there's nothing they can do to avoid it.
minio-go currently suffers from this problem. This pull request solves the problem.
Again, it is OK for the pool to allow unlimited parallel buffers. That's the user's problem to sort out if they run out of memory. The user can't solve running out of memory by uploading single files.

On running further tests on my own software, I find yet another memory issue caused by this pull request.
One of the "features" of sync.Pool is that any unreferenced sync.Pool objects are removed at each garbage collection cycle.
That meant I could force garbage collection to clean up unneeded upload buffers.
Using oxtoacart/bpool means a permanent pool of buffers, and I now run out of memory when trying to do something unrelated following an upload.
It's not so nice emptying out the pool with a buffered channel implementation, but possibly still the cleanest way of doing things. However I almost certainly need to add a new public function to minio-go to trigger the emptying of the pool...

I've now changed the pull request so that instead of using oxtoacart/bpool, an implementation based on that is included directly in api-put-object-multipart.go (you may prefer it in its own file: let me know) with the modification of having an Empty() method.
I also introduce a new function to the API called ReleaseBuffers() (you may prefer a different name: let me know) so that users can empty the pool and reclaim memory at will.
By using ReleaseBuffers() my own software can now pass all its tests without running out of memory.

Let's clarify this down.
The aim to be achieved here is that minio-go should be able to upload files in constant memory.
It is OK if each additional simultaneous upload requires an additional constant amount of memory.

If this is okay then i would suggest we don't have a pool but instead allocate a buffer once per PutObject() since in the end without having any control we are essentially going to reach the same stage.

It is NOT OK if each sequential upload requires additional memory.

Correct

If a user of minio-go finds that they run out of memory because they did too many simultaneous uploads, all they have to do is do fewer simultaneous uploads. The user doesn't have to tune any hidden parameter in minio-go.

This situation no one is aware the problem here is it is coupled with situations where objects are smaller in reality but user such as your application has decided to not provide content-length - then a buffer is mandated due the underlying requirements.
From an app point of view user can argue that why would he/she needs to limit themselves to a lower limit to something which they don't have control over and to the data they are trying to upload which fits well within the current memory limits.

The user shouldn't, however, run out of memory doing single sequential uploads, because then there's nothing they can do to avoid it.
minio-go currently suffers from this problem. This pull request solves the problem.

This is okay it exposes an architectural problem which was not addressed previously, it was wrongly assumed that sync.Pool will work.

Again, it is OK for the pool to allow unlimited parallel buffers. That's the user's problem to sort out if they run out of memory. The user can't solve running out of memory when they only upload single files.

This is not acceptable because they are in no control over how a buffer is allocated and used. This is the same problem what exists today using sync.Pool we just made it not so easy in the beginning but during a life time of an production app - it is possible to crash which would fail in unexpected ways.
Its easy to tell why you gravitated towards the idea of ReleaseBuffers() because we are now trying to fix something which is architecturally non communicable to the user i.e your app. Adding new APIs to patch a problem is not really easy for anyone to understand why they need to follow step1 to step5 to get it all working smoothly.  It is very hard to explain these details and document from an SDK point of view.
Now think about this approach lets remove all buffer pooling, instead we just simply use make([]byte, partSize) inside each PutObject() and here is the diff.
       buf := make([]byte, partSize)
       defer debug.FreeOSMemory()

This avoids pooling and provides a much simpler way to think and reason about PutObject().
diff --git a/api-put-object-multipart.go b/api-put-object-multipart.go
index 6e0015a..0394920 100644
--- a/api-put-object-multipart.go
+++ b/api-put-object-multipart.go
@@ -24,10 +24,10 @@ import (
        "io/ioutil"
        "net/http"
        "net/url"
+       "runtime/debug"
        "sort"
        "strconv"
        "strings"
-       "sync"

        "github.com/minio/minio-go/pkg/s3utils"
 )
@@ -51,16 +51,6 @@ func (c Client) putObjectMultipart(bucketName, objectName string, reader io.Read
        return n, err
 }

-// Pool to manage re-usable memory for upload objects
-// with streams with unknown size.
-var bufPool = sync.Pool{
-       New: func() interface{} {
-               _, partSize, _, _ := optimalPartInfo(-1)
-               b := make([]byte, partSize)
-               return &b
-       },
-}
-
 func (c Client) putObjectMultipartNoStream(bucketName, objectName string, reader io.Reader, metadata map[string][]string, progress io.Reader) (n int64, err error) {
        // Input validation.
        if err = s3utils.CheckValidBucketName(bucketName); err != nil {
@@ -78,7 +68,7 @@ func (c Client) putObjectMultipartNoStream(bucketName, objectName string, reader
        var complMultipartUpload completeMultipartUpload

        // Calculate the optimal parts info for a given size.
-       totalPartsCount, _, _, err := optimalPartInfo(-1)
+       totalPartsCount, partSize, _, err := optimalPartInfo(-1)
        if err != nil {
                return 0, err
        }
@@ -101,38 +91,38 @@ func (c Client) putObjectMultipartNoStream(bucketName, objectName string, reader
        // Initialize parts uploaded map.
        partsInfo := make(map[int]ObjectPart)

+       buf := make([]byte, partSize)
+       defer debug.FreeOSMemory()
+
        for partNumber <= totalPartsCount {
                // Choose hash algorithms to be calculated by hashCopyN,
                // avoid sha256 with non-v4 signature request or
                // HTTPS connection.
                hashAlgos, hashSums := c.hashMaterials()

-               bufp := bufPool.Get().(*[]byte)
-               length, rErr := io.ReadFull(reader, *bufp)
+               length, rErr := io.ReadFull(reader, buf)
                if rErr == io.EOF {
                        break
                }
                if rErr != nil && rErr != io.ErrUnexpectedEOF {
-                       bufPool.Put(bufp)
                        return 0, rErr
                }

                // Calculates hash sums while copying partSize bytes into cw.
                for k, v := range hashAlgos {
-                       v.Write((*bufp)[:length])
+                       v.Write(buf[:length])
                        hashSums[k] = v.Sum(nil)
                }

                // Update progress reader appropriately to the latest offset
                // as we read from the source.
-               rd := newHook(bytes.NewReader((*bufp)[:length]), progress)
+               rd := newHook(bytes.NewReader(buf[:length]), progress)

                // Proceed to upload the part.
                var objPart ObjectPart
                objPart, err = c.uploadPart(bucketName, objectName, uploadID, rd, partNumber,
                        hashSums["md5"], hashSums["sha256"], int64(length), metadata)
                if err != nil {
-                       bufPool.Put(bufp)
                        return totalUploadedSize, err
                }

@@ -145,9 +135,6 @@ func (c Client) putObjectMultipartNoStream(bucketName, objectName string, reader
                // Increment part number.
                partNumber++

-               // Put back data into bufpool.
-               bufPool.Put(bufp)
-
                // For unknown size, Read EOF we break away.
                // We do not have to upload till totalPartsCount.
                if rErr == io.EOF {
diff --git a/api-put-object.go b/api-put-object.go
index f410713..b2e5c01 100644
--- a/api-put-object.go
+++ b/api-put-object.go
@@ -23,6 +23,7 @@ import (
        "os"
        "reflect"
        "runtime"
+       "runtime/debug"
        "sort"
        "strings"

@@ -233,7 +234,7 @@ func (c Client) putObjectMultipartStreamNoLength(bucketName, objectName string,
        var complMultipartUpload completeMultipartUpload

        // Calculate the optimal parts info for a given size.
-       totalPartsCount, _, _, err := optimalPartInfo(-1)
+       totalPartsCount, partSize, _, err := optimalPartInfo(-1)
        if err != nil {
                return 0, err
        }
@@ -256,27 +257,28 @@ func (c Client) putObjectMultipartStreamNoLength(bucketName, objectName string,
        // Initialize parts uploaded map.
        partsInfo := make(map[int]ObjectPart)

+       // Fetch a buffer.
+       buf := make([]byte, partSize)
+       defer debug.FreeOSMemory()
+
        for partNumber <= totalPartsCount {
-               bufp := bufPool.Get().(*[]byte)
-               length, rErr := io.ReadFull(reader, *bufp)
+               length, rErr := io.ReadFull(reader, buf)
                if rErr == io.EOF {
                        break
                }
                if rErr != nil && rErr != io.ErrUnexpectedEOF {
-                       bufPool.Put(bufp)
                        return 0, rErr
                }

                // Update progress reader appropriately to the latest offset
                // as we read from the source.
-               rd := newHook(bytes.NewReader((*bufp)[:length]), progress)
+               rd := newHook(bytes.NewReader(buf[:length]), progress)

                // Proceed to upload the part.
                var objPart ObjectPart
                objPart, err = c.uploadPart(bucketName, objectName, uploadID, rd, partNumber,
                        nil, nil, int64(length), metadata)
                if err != nil {
-                       bufPool.Put(bufp)
                        return totalUploadedSize, err
                }

@@ -289,9 +291,6 @@ func (c Client) putObjectMultipartStreamNoLength(bucketName, objectName string,
                // Increment part number.
                partNumber++

-               // Put back data into bufpool.
-               bufPool.Put(bufp)
-
                // For unknown size, Read EOF we break away.
                // We do not have to upload till totalPartsCount.
                if rErr == io.EOF {

Yes, I think what you've come up with makes sense and seems like a better way of addressing the issue.
I'll try it out tomorrow and update the PR.

Yes, I think what you've come up with makes sense and seems like a better way of addressing the issue.
I'll try it out tomorrow and update the PR.

Thanks @sb10 from my tests it seems like we are now using constant memory now.  Please validate and let us know.

I've updated the pr with harshavardhana's code. It works well for me.

Thanks @sb10 for your patience :+1:


VS Code Icon Like Visual Studio 2017 = Bad Idea

You have left the VSCode icon much like the Visual Studio 2017 icon, now I believe this is creating confusion for many who use both programs. You could at least disqualify the icon with a different color.

Seriously? What color you want now?
See The Icon Journey, #35783

Warm orange was great.

Let it as it is right now! It looks nice with this blue tone.

We currently have no plans to change the icon.


update addon links to blob builds

supreme and transcendence need updates to blob.build

SFCalc, SlimefunWarfare, and Galactifun got updated too


Fix i8i8f32 avx2 gemm

@alheinecke  @egeor  you can use this PR to fix I8I8I32 gemm and QUANT tpp for avx2.

great, thanks., I will create a branch and merge it there.


Doc Update:

Describe the Documentation Update
I can improve your README file by adding a section for "Our Valuable Contributors" along with their images.
Please assign this to me.
Add Screenshots (if applicable)

Confirm

[X] I agree to follow this project's Code of Conduct
[X] I'm GSSOC'24 Extd registered Contributor
[ ] I'm Hacktoberfest registered Contributor
[ ] I want to work on this documentation issue

Already exists, check #5
Find for some another issue which I will be happy to assign!


Can't build NetworkLocation

Hello,
I was trying to build NetworkLocation for F-Droid project. I was targetting android-19, and I got this error:
res/values/themes.xml:6: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat'.
res/values/themes.xml:8: error: Error: No resource found that matches the given name: attr 'colorPrimary'.
res/values/themes.xml:9: error: Error: No resource found that matches the given name: attr 'colorPrimaryDark'.
res/values/themes.xml:11: error: Error: No resource found that matches the given name: attr 'windowActionBar'.

Is there some library I need to add ?

NetworkLocation now uses support-v4 and support-v7-appcompat in their latest release (21?).
I guess you'll have other build problems as well for the internal android parts used. If you can wait for some hours, i'll upload everything needed to build in this repo (i'll add support for gradle or maven)

NetworkLocation now uses support-v4 and support-v7-appcompat in their latest release (21?).
I guess you'll have other build problems as well for the internal android parts used. If you can wait for some hours, i'll upload everything needed to build in this repo (i'll add support for gradle or maven)

Alright, before seeing your comment, I did a search, and found that I needed to add appcompat v7, so the errors got reduced to:
res/values/themes.xml:8: error: Error: No resource found that matches the given name: attr 'colorPrimary'.
res/values/themes.xml:9: error: Error: No resource found that matches the given name: attr 'colorPrimaryDark'.

Alright, before seeing your comment, I did a search, and found that I needed to add appcompat v7, so the errors got reduced to:
res/values/themes.xml:8: error: Error: No resource found that matches the given name: attr 'colorPrimary'.
res/values/themes.xml:9: error: Error: No resource found that matches the given name: attr 'colorPrimaryDark'.

I uploaded everything needed to build using gradle with the latest commit, can you just check if it's working fine for you as well?

Yes, that worked. Thanks !


Rest API: Subscription to an API with specific_tenants and tenant list [] fails for non creator tenants

OS: Ubuntu 16.04
JDK: 1.8.0_144
DB: Mysql 5.7 (apimdb and carbondb)
Steps

Created API with the following payload

{
   "name": "${apiname}",
   "description": "This document describe a RESTFul API for TestAPIfromREST API.\r\n",
   "context": "${context}",
   "version": "1.0.0",
   "provider":"${username}",
   "apiDefinition":"{\"swagger\":\"2.0\",\"paths\":{\"${resource}\":{\"get\":{\"responses\":{\"200\":{\"description\":\"this is test\"}},\"parameters\":[{\"name\":\"id\",\"in\":\"path\",\"allowMultiple\":false,\"required\":true,\"type\":\"string\"}],\"x-auth-type\":\"Application & Application User\",\"x-throttling-tier\":\"Unlimited\"}}},\"info\":{\"title\":\"${apiname}\",\"version\":\"1.0.0\"}}",
   "isDefaultVersion": false,
   "type": "HTTP",
   "transport":    [
      "http",
      "https"
   ],
   "tiers": ["Unlimited"],
   "visibility": "${visibility}",
   "endpointConfig": "{\"production_endpoints\":{\"url\":\"http://${tomcathost}:${tomcatport}/${backend}\",\"config\":null},\"sandbox_endpoints\":{\"url\":\"${backend}\",\"config\":null},\"endpoint_type\":\"http\"}",
   "subscriptionAvailability": "specific_tenants",
   "subscriptionAvailableTenants": null
}

Since the tenant list in above is [] (empty array], shouldn't other tenants (other than the creator tenant) be able to subscribe to this api?

In this case, the system behaves as expected. Other tenants (other than the creator tenant) should not be able to subscribe. Please see references [1],[2] and [3].
[1] https://docs.wso2.com/display/AM210/Key+Concepts#KeyConcepts-APIvisibilityandsubscriptionAvailability
[2] https://wso2.com/library/articles/2016/08/article-multi-tenant-api-management-with-wso2-api-manager/#apimanagement
[3] https://www.yenlo.com/blog/wso2easy-determining-api-visibility-subscriptions-and-invocation-in-wso2-api-manager-2.1.0


Fix undefined behavior with atan in GPU Particles

Should fix #35492 , maybe also #30906 .

The bug originates in #26613, CC @KoBeWi.
Might be worth reviewing the CPU Particles{,2D} code too for potential issues (atan2 seems to handle x == 0 fine, as long as y != 0).

I wonder if something similar could be done to fix https://github.com/godotengine/godot/issues/30340 which also comes from #26613

@clayjohn I pushed a fix for #30340 in this branch which builds upon the code in this PR.
Setting the direction of particles should behave as expected with that fix, including when the direction is Vec3(x != 0, y != 0, 0).
Not sure if it would be considered breaking/changing existing projects though, since the behavior of particles when the direction is Vec3(x != 0, y != 0, 0) gets changed (to the correct behavior). So let me know if I should create another PR or wait for this one to be reviewed.

@zxcvdev Looks like a step in the direction. But not sure that it solves the issue in #30340. Copying your code into a test scene, I can still reproduce the issue.
The issue doesn't just occur when a given direction is 0. It occurs whenever Y is different from 0, regardless of the values of X or Z.

@clayjohn You're right, my bad. It only solves the issue where the X direction was ignored when Y != 0 and Z = 0, not the incorrect spread thing of #30340 .

That's fine. :) It should be included in this PR. We can look into the solution for #30340 later.

Amended to include additional minor fix as mentioned.

Thanks!

Cherry-picked for 3.2.1.


Add comments to describe mdtest and IOR options

This needs to be revisited against the current code. A quick inspection show that it has changed rather than just being some new text.

merged into repo on a new branch (PR-17) for verification before final merge


Update sbt-web to 1.5.2

About this PR
📦 Updates com.github.sbt:sbt-web from 1.5.1 to 1.5.2
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

🔍 Files still referring to the old version number
The following files still refer to the old version number (1.5.1).
You might want to review and update them manually.
build.sbt

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.github.sbt", artifactId = "sbt-web" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "com.github.sbt", artifactId = "sbt-web" }
}]

labels: sbt-plugin-update, early-semver-patch, semver-spec-patch, old-version-remains, commit-count:1

Superseded by #125.


Can't run MediaPipe examples

Hi,
I started a project using MediaPipe a few weeks ago and everything was fine until I had to clean install my Ubuntu (18.04) for a separate issue.
Bazel: 3.3.0
Ubuntu: 18.0.4
Android studio: 4.0
SDK: 30
NDK: 19.2.5345600
Steps:

The "Hello World" example (bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11
mediapipe/examples/desktop/hello_world:hello_world) seems to work okay.
Bazel -> Sync -> Sync project with BUILD files also finishes with no errors
Run -> Using the edit configurations in the guide produces the error:

[Prepa] Installing //mediapipe/examples/android/src/java/com/google/mediapipe/apps/robotcontrol:mainapp
ERROR: <PATH>/mediapipe/mediapipe/examples/android/src/java/com/google/mediapipe/apps/robotcontrol/BUILD:62:15: Installing //mediapipe/examples/android/src/java/com/google/mediapipe/apps/robotcontrol:mainapp failed (Exit 1)
Error:
adb command: ['/home/mikroszolos/Android/Sdk/platform-tools/adb', '-s', 'c5e5add5', '-s', 'c5e5add5:tcp:5037', '-s', 'c5e5add5', '-s', 'c5e5add5:tcp:5037', 'shell', 'mkdir -p /data/local/tmp/incrementaldeployment/com.google.mediapipe.apps.robotcontrol/dex']
return code: 1
stdout:
stderr: adb: unknown host service
----------------
Note: The failure of target @bazel_tools//tools/android:incremental_install (with exit code 1) may have been caused by the fact that it is a Python 2 program that was built in the host configuration, which uses Python 3. You can change the host configuration (for the entire build) to instead use Python 2 by setting --host_force_python=PY2.

If this error started occurring in Bazel 0.27 and later, it may be because the Python toolchain now enforces that targets analyzed as PY2 and PY3 run under a Python 2 and Python 3 interpreter, respectively. See https://github.com/bazelbuild/bazel/issues/7899 for more information.
----------------
Target //mediapipe/examples/android/src/java/com/google/mediapipe/apps/robotcontrol:mainapp failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 5.366s, Critical Path: 0.38s
INFO: 0 processes.

FAILED: Build did NOT complete successfully

I tried the -host_force_python=PY2 but maybe I added it to the wrong place which is why it didn't work. I also don't remember having to do this the first time but I might be wrong.
I would also like to add that I cloned my repository on my clean build. Perhaps there are some config files that need to be cleaned that I am not aware of?
I've also tried a clean clone of mediapipe using the handtracking example and I get the same error.
Does anyone have any suggestions?
Thank you for your time,
Alex

The error is adb: unknown host service, which means that the apk was successfully built but adb is not able to install the apk.
I suggest verifying your adb setting and make sure you can install the other apks as the first step. You also can build the apk by Bazel and then ask adb to install it separately.
bazel build  -c opt   --config android_arm64 mediapipe/examples/android/src/java/com/google/mediapipe/apps/robotcontrol:mainapp

adb install -r <path to your apk>

Hey jiuqiant,
Thank you for your suggestion.
Turns out that I had the wrong Android Studio version (4.0 instead of 3.5). Do you think it could still be related to your suggestion? I.e. 4.0 requires some extra configuration regarding installing apks?
Thanks again,
Alex

adb can be installed separately without Android Studio. So, I am not sure if the issue is related to the Android Studio version.  The best way is to use the adb install command to install some other apps from the terminal. It this works, then try your robotcontrol app.

Thank you again for your advice Jiuqiant.
As I am a bit constrained by deadline times I won't mess around with it at the moment (given that it is working with AS 3.5).
Maybe sometime in the future^^

You are welcome!


Tooling for debugging adapt

A potentially breaking change (with no identifiable users) is removing
the dependency on pyee. Two events (tagged_entities and parse_results)
will no longer be emitted. There do not appear to be any consumers of
these events in adapt, mycroft-core, or skills.

Description of what the PR does, such as fixes # {issue number}
Fixes #129

Description of how to validate or test this PR
./run_tests.sh validates all existing behavior with no changes.
Additional instrumentation upstream needed to invoke debug utilities.

Whether you have signed a CLA (Contributor Licensing Agreement)
Yes

I think this looks good, the Pyee was probably only used in my WIP branch for adding debug-prints for adapt to mycroft-core.
Since there is a new pickling protocol in python 3.8 and the world is a bit splitted across 3.6+ versions of python right now do you think the pickling protocol should be locked to 4? to guarantee that all dumps can be opened on all supported python versions?


Flagged by windows protector

When i first launched the program it did not get flagged but now it does

Smartscreen does this for almost every app which does not have a valid publisher.


scan repo: do not ignore failures when run from a git checkout

If the current working directory is an existing git checkout, then running secret scan repo SOMETHING does not produce an error if SOMETHING is neither the URL of a git repository or a valid path to a git checkout.
$ ggshield secret scan repo https://example.com/doesnotexist.git
Error: /tmp/tmpaiyn0u5r is not a git repository

$ mkdir foo

$ cd foo

$ git init

$ ggshield secret scan repo https://example.com/doesnotexist.git
Scanning Commits  [####################################]  100%

No secrets have been found

This is because we cache the return value of check_git_dir(wd) but this function can be called with wd = None in which case it uses os.getcwd() as the path. If os.getcwd() changes between two check_git_dir() calls then the returned value for the second call is wrong.
To fix this we:

make is_git_dir() do the bulk of the work, remove its default value and cache its results
remove the caching decorator from check_git_dir()

(Doing it this way was less intrusive than removing the default value of check_git_dir())

Codecov Report

Merging #351 (5b1ca28) into main (8b08792) will increase coverage by 0.02%.
The diff coverage is 92.30%.

:exclamation: Current head 5b1ca28 differs from pull request most recent head 2fe649b. Consider uploading reports for the commit 2fe649b to get more accurate results

@@            Coverage Diff             @@
##             main     #351      +/-   ##
==========================================
+ Coverage   94.31%   94.33%   +0.02%
==========================================
  Files          75       75
  Lines        3078     3073       -5
==========================================
- Hits         2903     2899       -4
+ Misses        175      174       -1

Flag
Coverage Δ

unittests
94.33% <92.30%> (+0.02%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

ggshield/scan/repo.py
100.00% <ø> (ø)

ggshield/core/utils.py
93.29% <75.00%> (+0.55%)
:arrow_up:

ggshield/core/git_shell.py
82.85% <100.00%> (-1.36%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

I am not sure to agree on the root cause you identified.
From what I understand, when using ggshield secret scan repo https://example.com/doesnotexist.git, we enter in the if REGEX_GIT_URL.match(repository): condition. To me, the failure lies in the clone returning a CalledProcessError that is passed. See here.
What do you think ? 🤔

Ok so, if I sum up :

We have one issue that you fix in this PR, when we provide a repo (that is not a git repo) as a parameter, AND when the cwd is a git repo.
There is another issue when we provide a non-existing yet "valid" git url. This is described in this issue's description and would be fixed by handling the CalledProcessError.

Do we agree ?
Otherwise the PR looks good to me.

Yes, that's correct. Should have picked the local checkout example for my explanations. Can you approve the PR?


s/Freenode/LiberaChat/

Isn't it usually referred to as "Libara.chat" ?

@lizmat - I wouldn't know. If youi desire that change to be made, then let me know.

Isn't it usually referred to as "Libara.chat" ?

I am 99% sure you know better, but where? Google for "libara.chat" has 3 (three) results, while "libera.chat" - About 658,000.

I am 99% sure you know better, but where? Google for "libara.chat" has 3
(three) results, while "libera.chat" - About 658,000.

I'm pretty sure it was about "LiberaChat" vs. "Libera.chat"

A quick look at the Libera Chat bylaws shows that the legal name is "Libera Chat", so I suggest we go for that, except when specifically referring to the website/domain. :-)

Sorry for the confusion.  Typos!  I meant "Libera.Chat" as opposed to "LiberaChat".   AKA, having a period after Libera.

Sorry for the confusion. Typos! I meant "Libera.Chat" as opposed to "LiberaChat". AKA, having a period after Libera.

would be consistent with their service / web page

I have pushed this through in https://github.com/rakudo/rakudo.org/pull/88 deciding for "Libera Chat". Better than "Freenode" at least.
@Xliff Thanks for initiating this!


2.0.4: UI: Create Threshold Check: No Thresholds column visible

Steps to reproduce:

Create new alert
Choose "Threshold Check"
Select one field

Expected behavior:
I'd expect to see a "Thresholds column"
Actual behavior:
I don't see any "Thresholds column", and I have no clue how to configure the threshold value.
Environment info:

System info: Linux 5.10.25-5-ARCH aarch64
InfluxDB version: InfluxDB 2.0.4 (git: 4e7a59bb9a) build_date: 2021-02-08T17:47:02Z

Please change this to a feature request. It turns out that one needs to click on "2. Configure Check".
I would suggest to add additional navigation to "2. Configure Check" by hyperlinking the red coloured text "One ore more thresholds". The current state is not intuitive for some newbies (like me).


taskprov: Ensure the task ID matches the advertised config

Closes #710.
Add a unit test that ensures
TaskprovAdvertisement::parse_taskprov_advertisement() fails if the task ID doesn't match the advertised task config. Along the way, adjust some variable names to make the code easier to read.

Took Mendes' suggestion, rebased, and squashed.


added concept string.rf - couldn't test due to bug

small changes

bugfixes include:
function mangling adding spaces when parameter was of pointer type
varargs parameter name not being recognized

These bugs just always keep coming dang it

Is this pr ready for merging on your side?

yeah i think so; when I git merge or git pull it says everything's up to date and the github front page doesn't say there are any conflicts

Ye, Since you opened this pr and then added commits, I had no way of knowing whether you were planning to add any more. Gonna merge now


Only generate lots of hashes

Not sure if I am the first to encounter with this issue, when I installed the ollama and run the llama2 from the Quickstart, it only outputs a lots of '####'.
I suspect that might be caused by the hardware or software settings with my newly updated system?
Since it works with my old rig with i9-9900K and dual RTX 3090.
As shown in the screenshot below, I am currently using Pop!OS with AMD Threadripper 3960X and dual RTX 3090.

Any help would be greatly appreciated, thank you!

Before there has been a workaround for this, but the problem seems to be back again. Here are some more info https://github.com/jmorganca/ollama/pull/1261#issuecomment-1881823438

the same error too, have you found the solution?

My solution has become to downgrade to .17
curl https://ollama.ai/install.sh | sed 's#https://ollama.ai/download#https://github.com/jmorganca/ollama/releases/download/v0.1.17#' | sh.

It seems downgrade the Nvidia Driver back to 535.x.x can also resolve the problem with the latest ollama.

Thanks. If you know some up to date instructions on how to downgrade please share, I've not found any easy enough for me to follow.

Sorry guys, can you try again w/ 0.1.22 and make sure you the model you're trying to use.

Thanks @pdevine can confirm the 0.1.22 version fix the bug with the latest Nvidia 545 driver! Nice work!


plot haplotype resolved genome by plotsr

Hi  Manish,
It's look nice for visualize the SV from different genomes.
However, In my case, I assembly several genomes with two haplotypes,   I wondering whether  I can use plotsr to show samples with two haplotype(different sample with different colour, each sample has two haplotype genomes with same colour).
Also, I can use plotsr to draw figure   no more than 10 genomes. If more than 10 genomes, it will occur errors.

Hi Lin,

whether I can use plotsr to show samples with two haplotype

Yes. In the genomes.txt file you can specify chromosome colours for individual genomes/haplotypyes. For example:
genome1_hap1.fasta	g1h1	lw:1.5;lc:red
genome1_hap2.fasta	g1h2	lw:1.5;lc:red
genome2_hap1.fasta	g2h1	lw:1.5;lc:blue
genome2_hap2.fasta	g2h2	lw:1.5;lc:blue

The issue with more than 10 genomes should be fixed in the newer versions. In case you are having issues in the latest version, then could you please open a new issue for that and also share the error message.
Best
Manish

Hi Manish,
Many thanks for your quick reply !!!
This question is perfectly solved. I will open a new issue for plotsr with more than 10 genomes.

Thanks again.


Add test folder to .npmignore

Making packages I use lighter. ;)

Why not use the files field, which acts as a whitelist.

There's not much of a difference, you can use either. It's a preference as to how you want to organize. Some people prefer the files field and some prefer a separate file.
I'll add the files field instead if that's your preference.

@holtjohnson I just think in most of the cases a whitelist is appropriate.

Alright, I'll make the changes.

Please show that this makes a meaningful difference, i.e. only if the tarball is significantly smaller will I consider the pull, otherwise not since for some people working offline it is important to access the tests as part of the packages they installed locally on their machine.
You can compare the sizes as follows:
git checkout master
npm pack
du -h *.tgz

git checkout <your-branch>
npm pack
du -h *.tgz

@thlorenz It is common in the NPM ecosystem to exclude everything not related to the core functionality. Consider that all those non-core files add up to terabytes of traffic.
Developers can consult the GitHub repo for documentation, examples, build scripts anyway. They know how to do it. This whitelist is about users (who don't know/care about JS development), CI machines, etc.
Already today, supposedly lightweight NPM packages use >10mb because their deppendencies didn't care about a small footprint. And that is going to increase as NPM grows and dependency trees get deeper.

[…] otherwise not since for some people working offline it is important to access the tests as part of the packages they installed locally on their machine.

All those people can clone the git repo, install all dependencies and then work with that.

The difference of the tarballs is 4K, but macs have a 4K filesystem block size (minimum file size) so the tests folder takes up 90K when extracted. I use it as a dependency of node-notifier.
I'm not familiar with this project so you would know best as to what people need. Just thought if it wasn't necessary it would lighten the load of users when using it as a NPM package. It will still be available to anyone who pulls this repo.

tests folder takes up 90K when extracted

That's not huge and I'm more concerned about tarball size since that's what comes across the network. 4K is just not big enough to warrant not having tests available locally. Thanks, though.

Consider that all those non-core files add up to terabytes of traffic.

Certainly true, but 4K just not that big of a deal even if cardinal installs a lot.
Compare this to just watching 1 second on netflix for instance ;)

Alight, thanks for all your work!


Stop working after awhile

Environment
Windows 10 Version 1909 build 1863.778
PowerToys version: Version v0.17.0
PowerToy module for which you are reporting the bug (if applicable): FancyZones

Steps to reproduce
Not a lot to say here: after awhile the app stop working. No error message. Nothing. Impossible to open the settings or move/snap the windows with WIN+(arrows). The previous releases were totaly fine even after hours. The only way make it works again is kill the task and start the app again.
Expected behavior
FancyZones usual behavior: change the window location with the keyboard shortcut or shift+mouse draging
Actual behavior
Not working few mn after startup
Screenshots
Not applicable

Same issue here: App stopped working. In my case, the Windows Key Shortcut Guide no longer activates by pressing the Windows key. I tried repairing by downloading and reinstalling, but no joy.

voilà -- randomly started working!

Exactly the same problem. Continues until process is killed and restarted.

@gilles1394 @Watney @DavidO56
please take a look at this https://github.com/microsoft/PowerToys/issues/2563#issuecomment-622462804

@enricogior thank you. Just installed the 0.17.1. Will you know the oucome after few days of testing. And sorry for the new thread I opened, I obviously haven't check well enough in the existing bugs already opened on the 0.17.0. I close it.


Characters animations using AnimationPlayer

Done:

character facing direction switch logic based on destination point
character animation based on AnimationPlayer and naming conventions
character turning and animation triggers while moving through the walk cycle
public play_animation() on the singleton, that can also be used in other interactions
animation added to the AnimationPlayer for any orientation are now play according to the player looking point
basic fallback logic on walk animations
added talk animation to test using the simplest case of animation
updated demo game main character sprite to introduce animated walk up/down/left cycles

TODO:

figure out if it is possible to implement the logic that relies on character looking direction and fallback for all the animations in general
add the AnimationPlayer in the character template

Add a few improvements (update the main comment accordingly) thanks to a great pair programming session with @stickgrinder and drbb


Join Meeting Screen

When we use JitsiMeetWrapper. joinmeeting method takes us to some Join meeting Screen where we can manipulate our audio video and name; it also contains a button named Join Meeting.
My question is how to change the screen name and button name of that screen in Flutter, for instance, how we can change joining meet to connect meet or something else?

Hey there,
this package is a wrapper around the official JitsiMeet SDKs. You can have a look at the official documentations (https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-ios-sdk and https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-android-sdk) and try finding a feature flag that does this for you. However, i assume that it is not possible.


How to dynamic define column?

In my project,i need dynamic the columns.
I did like this:
$scpe.areaNum=1;
$scope.$watch('areaNum', function(num) {
			$log.log(num)
			columnDefs = []
			for (var i = 1; i <=num; i++) {
				columnDefs.push({headerName: "name", field: "name",group: i+'area'})
				columnDefs.push({headerName: "name", field: "name",group: i+'area'})
			};
			$scope.gridOptions.api.softRefresh();
		});

It can't work ,can you help me?

please use the forum for asking questions!!
the github issues are for issues within the grid project.


Stuck in python -m textual

I was trying to deploy a HF app with textual-serve and they seem to get stuck on the initial screen.
https://huggingface.co/spaces/davidgasquez/harlequin-web
You can see all the files here.
Not sure what is going on there and I have no rush. Just wanted to play around.

Same issue happens in Textual docs, actually.
After some time the screen says "session ended".
What should happen is us knowing the issue from looking in the devtools console, but you should have some info in your logs. Anything there?

Not sure there is anything in the devtools console. That said, I don't know enough about front-end to make an absolute call.

Not sure there is anything in the devtools console. That said, I don't know enough about front-end to make an absolute call.

Yes, that's what should happen, but doesn't.


Evaluate ordering of callbacks when socket notifiers are part of the play

This is about a divergence from the behaviour of the default Selector based event loop, as used e.g. on ArchLinux and Fedora (others too, but I have not verified these). The test case which gets added by this pull request runs fine on those and fails when using QEventLoop from Quamash. For convenience, the code of the test case is here (it differs slightly from that in #24):
def test_scheduling(loop, sock_pair):
	s1, s2 = sock_pair
	fd = s1.fileno()
	cb_called = asyncio.Future()

	def writer_cb(fut):
		if fut.done():
			cb_called.set_exception(
				ValueError("writer_cb called twice")
			)
		fut.set_result(None)

	def fut_cb(fut):
		loop.remove_writer(fd)
		cb_called.set_result(None)

	fut = asyncio.Future()
	fut.add_done_callback(fut_cb)
	loop.add_writer(fd, writer_cb, fut)
	loop.run_until_complete(cb_called)

In stock asyncio, the following happens:

After the setup, writer_cb gets called (as the socket is obviously writable). It sets the futures result to None.
fut_cb gets called; it detaches the writer_cb and sets the result future cb_called, thus the loop is going to terminate soon.
Loop terminates cleanly.

With Quamash, the following happens instead:

After the setup, writer_cb gets called (as the socket is obviously writable). It sets the futures result to None.
writer_cb is called again immediately. The future being done already, it sets the result future cb_called to an exceptional state (to terminate the test with a loud bang).
Test fails.

This is critical, as sock_connect from the asyncio version shipping with Python 3.4.2 relies on this behaviour, as you can see from the following snippet copied from selector_events.py:
    def _sock_connect(self, fut, sock, address):
        fd = sock.fileno()
        try:
            while True:
                try:
                    sock.connect(address)
                except InterruptedError:
                    continue
                else:
                    break
        except BlockingIOError:
            fut.add_done_callback(functools.partial(self._sock_connect_done,
                                                    sock))
            self.add_writer(fd, self._sock_connect_cb, fut, sock, address)
        except Exception as exc:
            fut.set_exception(exc)
        else:
            fut.set_result(None)

    def _sock_connect_done(self, sock, fut):
        self.remove_writer(sock.fileno())

    def _sock_connect_cb(self, fut, sock, address):
        if fut.cancelled():
            return

        try:
            err = sock.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
            if err != 0:
                # Jump to any except clause below.
                raise OSError(err, 'Connect call failed %s' % (address,))
        except (BlockingIOError, InterruptedError):
            # socket is still registered, the callback will be retried later
            pass
        except Exception as exc:
            fut.set_exception(exc)
        else:
            fut.set_result(None)

There is more code around it, but when BlockingIOError gets raised and caught in _sock_connect, basically the same thing as in the provided test case happens. The result is that in applications using sock_connect (which is used under the hood by things like create_connection), if the connection cannot get established right away, weird behaviour encurs, which at least involves a lot of exception tracebacks being printed.
I see that this is hard to fix with Qt, as we don’t have full control about when callbacks from Qt get called. This is what I think may serve as a patch to this:

In __on_notifier_ready, we would use call_soon instead of directly calling the callback.
In addition, not the callback is scheduled via call_soon, but a wrapper which takes care of re-enabling the notifier if required after the callback returns (or raises).
During that, the notifier is disabled.

I have not implemented or tested this yet, but I’ll have a go on it now. Posting this here in case someone has a strong opinion on that topic.

I have a possible solution, but it requires changes currently only in the depinject branch. I have cherry-picked these and pushed my branch. I plan to rebase my branch on master when depinject has landed (which is passing all tests at my site (Fedora Linux with PyQt5) btw.).

well those fixes could be merged back into master (as one commit) since they don't have anything to do with the features added in depinject. I might just do that.
I think I have some other commits I want to pull over from depinject.

Also note that the appveyor tests fail for everyone at the moment. It would be nice if they passed though.

@harvimt How’s the progress on pulling some of the non-depinject related changes from depinject into master? I’d like to rebase this to get it merged.
Although I understand if you want to get CI working first, good test coverage is always a nice thing to have before advancing.

Oh, I just realize that you did the merge (checked the history manually). It’d be great if you could do the merges in a way github notes that they are done, or manually mark it as merged / closed.
But yeah, using rebase or cherry-pick kills the commit id.
I just forgot to close this. And it would explain why in #27 @sfrazt had problems with 0.4.1 but not the master version.
I definitely should have closed this earlier though.

I understand having a clean history without "oops typos" makes sense, I like that too.
How about rebasing feature branches (such as depinject) before merging, and avoiding to do error-prone work on (public) master? That would avoid these issues.
Sorry for keeping the topic open, but I think this is important and it gets even more important when more users are attracted to quamash.

It is important. This has been a big experiment for me and I'm definitely learning how ignorant I am at some sorts of software engineering tasks. A decade of cowboy coding hasn't provided me with the need to merge other people's commits very often.


azure-cli-extensions.application-insights: init at 1.2.1

Description of changes
Extension for the azure-cli.
Adds commands for working with Azure Application Insights.
Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

[X] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD".
[X] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

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

[X] Fits CONTRIBUTING.md.

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

@katexochen would you mind reviewing this?

Please don't create merge commits but rather rebase our PR on latest master.

Otherwise looks good to me.
Were you able to build the cli with the extension and tests its functionality?

Yes, I was able to build it locally and run the CLI with the extension from the result/bin/az binary.

Thanks, and welcome as nixpkgs maintainer! :)


Add Mypy

Not sure if this is wanted or not but I was playing around with this and would either need to add a lot of type: ignores to the existing code or drop support for python 3.7 in the version where mypy is included as a few of the stubs needed to correctly type out some code do not support 3.7
Happy to hack on this if wanted

haha my javascript is also not optimal but am happy to take a peek -- a rangeslider feature would be super cool. WIll play around with that notebook when I have some time as well


Feature: Protect http(s) trigger call by authorization. Move trigger call to separate file.

@glutamate I want to protect http trigger call by authorization.
Plans to add min read / min write roles to _sc_triggers table and binding program code for it.
I can do this if you agreed with this feature.
Also I plan to move trigger call to api_triggers.js to make code more clean.

This is a good idea. We should use the showIf to ask for minimum role in triggerForm, like this: https://github.com/saltcorn/saltcorn/blob/master/packages/server/routes/actions.js#L198.
showIf: { when_trigger: "API Call"} should work
I am doing a lot of work on events right now, I just added an event log and we should also make sure that API calls get added to the event log. The big goal is to have "event driven process automation" so instead of workflows you have event handlers that can do stuff & emit other events. I hope there will be a Blockly event handler with translation to run_js_code handler to teach people to code.

Implemented in https://github.com/saltcorn/saltcorn/pull/790
[+] add _sc_triggers.min_role and binding code
[+] protect http(s) api call by authorization
[-] I did not transfer api trigger call to a separate file from api.js. A separate discussion is required.


attrs for Term loci do not get stored when put into an Ontology

This isn't necessarily a bug, but the attrs for a Locus are stripped when they are put into an Ontology. These should be preserved at least on some level.

Fixed in 5908556a6b609fc4dc4c651d6dcccc48d5120245


Allow leading underscores for idents

As briefly discussed on discord, this adds support for leading underscores in front of any idents.
In my case, this will allow us to get rid of a lot of s-strings!
This is my first rodeo both with prql's code base as well as Rust & pest – a through review is probably wise.

Great, thanks @mklopets !


[WIP] Native feel of Browser Action popups

The goal of this PR is to make the little triangle at the top of the popup feel "native" (where possible).
I am not sure if we can make it work across all browsers, so this is kind of an "exploratory PR".
Rationale:

Better UX with dark themes
Native look-and-feel increases  trust (tm)
Future features (eg. https://github.com/ipfs/ipfs-companion/issues/330)  will require us to display permission dialogs.  Lost likely via browser action popup. We want it to look real, not like a phishing attack. (well, we could just use white background, but still..)

Remaining work

[x] Firefox
[ ] Chrome (if possible)
[ ] Brave (if possible)

Firefox
Before

After

I think we only added the border to try and make it look consistent across browsers, and to partially re-create the firefox specific styling that used to be there. I'm in favour of tailoring the styles so blends in nicely to each browser, if possible. They each, as always, seem to have their own unique quirks.

 It was simplest to keep them all consistent when I originally did the work but if this looks ok in Chrome/Brave and doesn't complicate things too much then I'm ok with it...I mean I'd prefer it if all the browsers looked like what you're proposing!

Note that in macOS Firefox the borders have radius. I think this is one of the things that made it complicated because you'd have to remove it from Chrome, and FF Linux...

Thanks for the feedback!  I noticed the issue under Chrome too -- no matter what I do the white arrow is not styled. Unfortunate. We should avoid browser-specific CSS, so let's park this PR for now.
I feel we will either:

abandon the idea
move icon with dark background to the bottom: that way all browsers have seamless arrow in white color

IMHO I think we should leave it as is for now

Yeah, I think we can revisit this when style guide lands, but that will be a different PR. Closing this one.


404 error when transferring ownership of repository

Transferring ownership of a private repository from my personal account to another personal or organization account results in a 404 error. As result, the repository is neither in the sender's account nor the receiver's. Nonetheless, the Dashboard has an entry " username transfered repository username/repo_name to receiver/repo_name".
My application version is: <IP_ADDRESS>1

This is more of a limitation than a bug.  The transfer does succeed, but if you don't have access to the receiver's repositories, it's not granted to you automatically on transfer.  The 404 occurs when the website redirects you to receiver/repo_name.
While not a bug per se, I admit it's not idea in terms of user experience.  It's perhaps reasonable to grant the original owner access to the transferred repository after the transfer is complete.

This explains it, the message in the transfer ownership page is now clear (I still have access to it only if I am an owner of the organization, but not as a simple member).

I'll keep this issue open until we add some way for the original owner to keep access after the transfer.


MINOR: Upgrade Gradle wrapper to version 8.4

This pull request is aiming to upgrade version to Gradle to last stable one 8.4
This version brings up support for JDK 21
More then that it fixes two security issues with much bug fixing related to the previous releases
Incorrect permission assignment for symlinked files used in copy or archiving operations
Possible local text file exfiltration by XML External entity injection
For more information please refer to https://docs.gradle.org/8.4/release-notes.html
Committer Checklist (excluded from commit message)

[x] Verify design and implementation
[ ] Verify test coverage and CI build status
[x] Verify documentation (including upgrade notes)

close this PR as version of gradle is 8.6 now


Merge targets undefined offset 0

When merging two targets from the host information page:
Notice: Undefined offset: 0 in C:\xampp\www\inc\database.inc on line 11927
Fatal error: Uncaught Error: Call to a member function get_Finding_Status() on null in C:\xampp\www\inc\database.inc:11928 Stack trace: #0 C:\xampp\www\ste\target.php(71): db->merge_Target(1, 32, 14) #1 {main} thrown in C:\xampp\www\inc\database.inc on line 11928

Added isset to line 11926 to make sure variable contained information.


factorio_item_production_input means "produced items" and vice versa

I was a bit confused to find that factorio_item_production_input stands for the items produced by your factory while factorio_item_production_output denotes the items consumed. Is this intended?

It is definitely counter-intuitive, compared to how we think about inputs/outputs in every other aspect of the game. But it makes sense if you think of input as being "into existence" or "into the universe."

or think of it this way the input is bringing items into a storage space from the factories and output is taking those items to be used
if @phdoerfler I am making things more problematic then ignore me then

in this case, the input/output naming is based on the factorio API naming of input_counts and output_counts on LuaFlowStatistics
https://lua-api.factorio.com/latest/LuaFlowStatistics.html

Thanks for the explanation. At least it's consistently confusing ;)
Still I think I'd very much welcome a "factorio_item_produced" and "factorio_item_consumed" (or something like this) that does away with this counter intuitiveness.


demo

Add demo link to documentation. Supported different versions and themes.

Added a demo to the Usage section, thanks.


WIP Move all class into his own file

In order to have a better readability, I've move all class into his own namespace.
It would be easier to work on it and improve it.

This would make the library a lot more complex and harder to use...

It follow PSR and file are tinyer.
It's not more complex, but more organized. I also think we can see all type of packet and see how the library works.


proposal: cmd/compile allows the variadic arguments are the implementation of the element of a function variadic parameter

Proposal Details
Current Behavior
Currently, if we pass an array whose elements implements the variadic parameter element interface, the go compiler and type check will complain. Here is the code snippet.
In the example, VariadicFn(es[0]) could pass the build but VariadicFn(es...) fails. I'm not sure whether it's intended or not, as the go specification is a bit ambiguous:

If f is variadic with a final parameter p of type ...T, then within f the type of p is equivalent to type []T. If f is invoked with no actual arguments for p, the value passed to p is nil. Otherwise, the value passed is a new slice of type []T with a new underlying array whose successive elements are the actual arguments, which all must be assignable to T. The length and capacity of the slice is therefore the number of arguments bound to p and may differ for each call site.

The specification says "all must be assignable to T.", which is definitely available for the  case `VariadicFn(es...). Please kindly correct me if I have some misunderstanding.
package main

func VariadicFn(ss ...Stringer) {

}

func Ints(is ...int){}
type example struct{}

func (e example) String() string {
	return "example"
}

type Stringer interface {
	String() string
}

func main() {
	var es []example
	VariadicFn(es[0])
	VariadicFn(es...)
	// ^ fail to build due to:
	// # command-line-arguments
	// ./main.go:21:13: cannot use es (variable of type []example) as
	// []Stringer value in argument to VariadicFn
}

Proposal
I propose to support the VariadicFn(es...) case in variadic case, which hasn't been supported yet.
The possible changes based on my knowledge are:

the type check part, we need to respect additional variadic case, generally it's the implementation of assignableTo. I briefly tried to change the type check code for a POC, seems not hard.
the code generation part, because now each element in the slice might be an implementation of the T, so we need to handle additional cases there as well.

As I'm not a professional Go, the prospect of the possible changes and proposal has very limitations. But personally I believe it's better for us to make the behavior consistent.
Note
I briefly search the issues but haven't found a similar one, hence I raised it here. I'm glad to help develop this feature, or amend the specification if it's rejected. Some hidden difficulties might be overlooked
Regards

You quoted some of the related spec, but not the relevant part. The part that you are using is this:

If the final argument is assignable to a slice type []T and is followed by ..., it is passed unchanged as the value for a ...T parameter. In this case no new slice is created.

In particular, in this case the last arg in your call must be assignable to []Stringer. Note that []example is not assignable to []Stringer (even though example is assignable to Stringer). Possible related reading: https://stackoverflow.com/questions/44602741/why-cant-i-substitute-a-slice-of-one-type-for-another-in-go
I'm going to close this, as it isn't feasible to do this conversion (without reallocating the slice).


[Bugfix] Fix placeholder text view blocks TextEditor

Purpose

This is to fix when users type on the left half of the text input view on a thread, the keyboard will not show up.
The reason being that, the text view for placeholder rendered on top of the TextEditor view. So it blocks the interaction.

Does this introduce a breaking change?

[ ] Yes
[x] No

Pull Request Type
What kind of change does this Pull Request introduce?

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Documentation content changes
[ ] Other... Please describe:

Pull request checklist
This PR has considered:

[ ] Color Theming
[ ] iOS supported versions (all major versions greater than or equal current target deployment version)
[ ] VoiceOver and Keyboard Accessibility
[ ] Internationalization and Right to Left layouts
[ ] Size classes and window sizes (iPhone vs iPad, notched devices, multitasking, different window sizes, etc)
[ ] View Data Injection
[ ] Demo App UI/UX update

How to Test

Open a chat thread
Click on the bottom text input view
Keyboard should show up

What to Check

Before
After

Screenshot or description before this change
Screenshot or description with this change

 |

merging this on behalf of @Leah-Xia-Microsoft since she's away at this moment


maybe ditch logger?

since it's just middleware anyway :D easier to customize that way, unless I missed how you can remove it. good stuff though!

For everyone else who wants to silence the logger (in my case for testing purposes):
	m.Map(log.New(bytes.NewBuffer(nil), "", 0))


Getting stack trace of running dart application

It would be great to have a tool like "jstack" in Java: https://docs.oracle.com/javase/7/docs/technotes/tools/share/jstack.html
Really helpful when debugging server apps in production.
Currently Observatory has something like that in debuger section of the Isolate. I find it a little bit overkill because I would not like to start Observatory in production. Also I would not like to open port for Observatory on my server. Sending kill signal to application to get trace would be much better option. Dedicated tool to do that would be nice either.
Also I would love it to work on applications compiled to native.

Hesitantly marking as area-vm; please re-assign if this isn't right.

@radzish is this in the context of standalone command line Dart or while running a Flutter application?

@radzish is this in the context of standalone command line Dart or while running a Flutter application?

@a-siva, only related to server or command line of course


Support ICE/1.x for SOURCE requests.

Normal clients sends "GET / HTTP/1.0" but Shoutcast clients send
"SOURCE / ICE/1.0".  Accept that as an alternative but only for
SOURCE requests.
Fixes: https://github.com/nodejs/http-parser/issues/410

@indutny Can I get a LGTM?  Congrats on the 5-0, by the way! #футбола

Landed with an extra test in 4dae120.


Use Compodoc and AppMap on 121 Service

@diderikvw I have resolved the conflicts and tested it which is nicely generated the report. From my side I think its OK to merge.


feat(fmt): An attempt at aesthetic items into PL

By adding comments (named "aesthetics" here, and includes linewraps) to PL, this is an attempt to get around the complications of combining lexer + parser output in prqlc fmt, which #4397 has hit in a few incarnations.
This very very nearly works — with chumsky we can create a function that wraps anything that might have a trailing or following comment, implement a trait on the AST items that contain it — and away we go. (though it did require lots of debugging in the end...). The AST would then be really easy to write back out.
This requires comments to lead or follow tokens that are part of an AST item. I think there's literally a single case where it doesn't work, which is when a comment follows the final trailing comma of a tuple or array. So apart from that case, a comment always leads or follows a token that's part of an AST item.
...so tests fail at the moment, on that case.
Next we need to consider:

Can we workaround that one case? We don't actually care about whether there's a trailing comma — it has no semantic meaning — and we're going to override that when we write it out, so we could likely hack around it...
Are there actually other cases of this model failing? I know this approach — of putting aesthetic items into AST — is not generally favored. And at a meta level we should be skeptical of the claim "there's just a single case of something not working" — bad models generally have multiple failures!

One thing we could do land from this is doc-comments — which must be attached to an item, and we may want to push through the AST. It's much less important to the project than getting prqlc fmt to work, but would let us merge something from this work rather than having a bunch of PRs & branches gradually accumulating merge conflicts...

Oh, this is an interesting idea: instead of discarding all comments and new lines, we keep them in the first AST, so they can be re-incorporated into codegen.
It's a shame that it doesn't work for all the cases. It would be a beautiful solution for formatting comments. Could we parse trailing comma as an aesthetic too?

re doc comments: yes, they are very similar. I think they should be allowed only on statements, so that's even simpler to parse.

It's a shame that it doesn't work for all the cases. It would be a beautiful solution for formatting comments. Could we parse trailing comma as an aesthetic too?

Yeah, I added some more thoughts at https://github.com/PRQL/prql/pull/4397#issuecomment-2187146337. It's possible to do it this way, but not as elegant as I first thought — I think it would require lots of backtracking and custom parsers (i.e. not just delimited_by...) to be able to distinguish between the two cases in that comment...


main orb page in omnibox might not be working

The default suggestion cannot have a URL. So instead of "fixing" this, I'm changing the wording of the suggestion.

Done in #54.


dynamic color options

So this is more of a feature request, my coding is quite limited and this is my first ever PR so sorry if its not correct.
basicly this fuctionality adds the ability to set hex color option in ui-lovelace like this :
color: "#1affa3"
I assumed this would also work for setting "var(--primary-color)" but it does not (only works for direct hex value) and that is the limit of my ability.
the reason for this request is so that button colors can bet set to theme variables and thus become dynamic with theme change.
Thanks.

That's awesome! Thanks a lot @simo878
Let me test that tonight, I made one suggestion but it's really not a big deal.

I assumed this would also work for setting "var(--primary-color)" but it does not (only works for direct hex value) and that is the limit of my ability.

Yeah I haven't scratched my head too hard about the css var yet. These are only evaluated by CSS / your browser. It looks like it will involve some wacky things to make that work.


Allow TextInput action to set non string property

Fixes #5088
Description
Remove the limitation that TextInput can only set string value to property. A more friendly solution is that TextInput only limits string format for raw user input from activity but no longer limits string format to property setting after post processing of user input. For example, users can set a luis recognized result like entity array generated from a text input to a dialog memory property.
Specific Changes

Change the input recognition and validation logic in InputDialog to allow non-string input set to property
Adjust the test case to test such changes

Testing
Test case adjusted.

@EricDahlvang, could you please review?

@EricDahlvang, could you please review?

I thought TextInput should only allow Text?  Is this something we really need in the sdk?
Would AttachmentInput work to solve this issue? or a custom InputDiaog, without changes to InputDialog base class?

I thought TextInput should only allow Text?  Is this something we really need in the sdk?
Would AttachmentInput work to solve this issue? or a custom InputDiaog, without changes to InputDialog base class?

@EricDahlvang yes, it still only allows text from user inputs. The changes here is to allow post-processing value got from this.value expression to be any object rather than limited to string. A typical user case is LUIS recognizers can return array entities and users want to set the array to the dialog property https://github.com/microsoft/BotFramework-Composer/issues/4875#issuecomment-753613559. With current restriction of TextInput action, users cannot do that directly in TextInput action. They need to use another setProperty action to set the array entities to dialog property. @boydc2014 has a short comment here https://github.com/microsoft/botbuilder-dotnet/issues/5088#issuecomment-759887382 explaining the proposal. If we don't plan to loose the restrictions here, we can close this PR and then highlight this restriction in documentation to let users use setProperty action to set non-string values got from LUIS recognizers or any other expressions. What is your preference? @EricDahlvang @boydc2014 @mrivera-ms

@EricDahlvang yes, it still only allows text from user inputs. The changes here is to allow post-processing value got from this.value expression to be any object rather than limited to string. A typical user case is LUIS recognizers can return array entities and users want to set the array to the dialog property https://github.com/microsoft/BotFramework-Composer/issues/4875#issuecomment-753613559. With current restriction of TextInput action, users cannot do that directly in TextInput action. They need to use another setProperty action to set the array entities to dialog property. @boydc2014 has a short comment here https://github.com/microsoft/botbuilder-dotnet/issues/5088#issuecomment-759887382 explaining the proposal. If we don't plan to loose the restrictions here, we can close this PR and then highlight this restriction in documentation to let users use setProperty action to set non-string values got from LUIS recognizers or any other expressions. What is your preference? @EricDahlvang @boydc2014 @mrivera-ms

I thought TextInput should only allow Text? Is this something we really need in the sdk?
Would AttachmentInput work to solve this issue? or a custom InputDiaog, without changes to InputDialog base class?

As Fei's comments above, this change is not supposed to change the value of TextInput itself, but to make the post processing easier. A typical use case is as this issue https://github.com/microsoft/BotFramework-Composer/issues/4875#issuecomment-753613559.
Whether we need this in SDK, depends on how we model the abstraction of a "InputDialog", and specifically the expectation of this "value" field. Whether
a) we think the "TextInput", "NumberInput" means the final value set to memory must be text or number,  or
b) we think the value of "TextInput", "NumberInput" must be a string or number, but after post processing, the memory variable eventually been set can be whatever type it is.
I'm leaning to option b), because i feel like, that's a more natural expectation of a "post-processing" step. Putting restrictions on this post-processing feels weird.
@Stevenic @tomlm can you share some thoughts on this?

@EricDahlvang sorry for the bothering, after checking with Fei and digged into the original code, i think this PR doesn't align with the current design, the flexibility it adds would bring more confusing than this very little convenience, so i'm closing this PR. Thanks for raising the concern.


Stabiliize ARCamera results

Suggested taxa on the ARCamera disappear too quickly, making them hard to tap and hard to reliably take a photo when you get the taxon you want. There are a few ways we could address this that merit investigation / proof of concepts:

[ ] Look into our options for controlling the frame processor FPS. If we only process one frame every 5s the suggestion will be stable for 5s, but it might also mean locking in a less-than-ideal suggestion for 5s
[ ] Look into using the Seek approach, which might mean consulting w/ Alex or Yaron about the react-native-vision-camera implementation that involves keeping a buffer of the last N suggestions and choosing the most frequent taxon, presumably weighted by rank to favor finer ranks

I believe that #1235 addresses this for iOS.

This is also addressed on Android now with #1239


[Spanish] localize 'Immutable Infrastructure'

Localize the content/en/immutable-infrastructure.md document to Spanish

Hey @electrocucaracha, I would like to try working on this issue. Can you please assign it to me?


[issue] Modernization Scanner is not working against Tenant

We are still having the issue with the Scanner tool. We are getting this error even for 1 site collection scan.
"This query was not completed because the system has been configured to block such queries."
Here is the old issue link which we opened before. Issue # 519
https://github.com/pnp/sp-dev-modernization/issues/519
Support team want us to open the issue again so that they can work togeather on this.

Seems you're getting blocked on the backend, doing a workflow scan of a single site = a single search query...so are you sure there's nothing else on going that results into this? Please have the support team connect with me.

Closing this one, please have support team contact me for internal follow-up if needed.


Swipe And Scroll at the same time on ion-item

Hi, I have a problem when i want to swipe and scroll. It's not possible to scroll when i have (swipe) in object. Something like that :
<ion-content>
 <ion-list class="list" *ngFor="#report of reportList">
      <ion-item (swipeRight)="addToFavorite(report, $event)">
          <ion-card-content>
          </ion-card-content>
      </ion-item>
 </ion-list>
</ion-content>

Any solution to keep the scroll even if i have a swipe on my item ?
Thank you
Ionic Version2
Cordova CLI: 6.1.1
Gulp version:  CLI version 3.9.0
Gulp local:   Local version 3.9.1
Ionic Framework Version: 2.0.0-beta.6
Ionic CLI Version: 2.0.0-beta.25
Ionic App Lib Version: 2.0.0-beta.15
OS: Distributor ID:	Ubuntu Description:	Ubuntu 15.04
Node Version: v4.0.0

@Tubishi check out my comment: https://github.com/driftyco/ionic/issues/6731#issuecomment-224752861
I will close this for the moment, since (swipeLeft) is not a ionic event, and we can't do much. try configuring hammer with the methods provided by angular 2, or using (touchmove) events directly.


Update tool installer container to use 20.09 initial freeze image

Updates to use https://hub.docker.com/layers/galaxy/galaxy-k8s/20.09/images/sha256-f607f66d7af6e568661e4f63d96cdeea8f5e5d655eb9873b5492dc64eae61ec0?context=explore

Try updating a tool in test.galaxyproject.org with it so we can see if it works.

I can cherry-pick that into sam's PR

@mvdbeek That sounds good to me


Add forecast horizon as a required parameter for time series problems

Pull Request Description
Fixes #2647
Fixes #1384

[x] Have our time series feature engineering respect Forecast Horizon, gap in the feature calculation.
[x] The addition of pipeline.predict_in_sample method along with changing the api of pipeline.predict for time series pipelines.
[x] Have time series baseline pipeline work with our new definitions of gap, forecast horizon
[x] Changing the time series split to not pad the holdout set with data from the training set.
[x] Adding the Forecast Horizon to the AutoMLSearch UI.

How to review this PR:

Read the new user guide to get an idea of what the expected behavior should be
Review the pipeline changes: Mainly the logic for concatenating the train and test sets in predict_in_sample, predict_proba_in_sample, compute_estimator_features. The unit tests test_compute_estimator_features and test_predict_and_predict_in_sample mainly cover that implementation.
Review the changes to DelayedFeaturesTransformer and the time series baseline pipeline.
Review the changes to the time series split.
Review the changes to AutoMLSearch. This is mainly just adding forecast_horizon as a required parameter.
Review the changes to prediction explanations: this is included in this PR to not break the existing functionality. It will be added to the user guide at a later date.

After creating the pull request: in order to pass the release_notes_updated check you will need to update the "Future Release" section of docs/source/release_notes.rst to include this pull request by adding :pr:123.

I think you have an extra space between the header and the body text here.


Order management software

You are applying for validated OSS program

[X] My project is OSS licensed and open to public. (Must have LICENSE file)
[X] My project has more than 10 ⭐stars on Github, which is the required for this program.

Repository URL to your project
https://github.com/duyquang1410/acolorhome
https://github.com/duyquang1410/learning
URL to your website
https://alphacolor.vn
Expected Quota of usage
1,000,000 requests / month
Details
- Category: Laravel
- License: MIT
- Date of release: 06/10/2023

Anything else?
I bought x-cors-api-key : live_8ebe515e65cb46801a6e76e10b0a65b621e11e64b4338fddea47620f5a2542d6
But now it's having an inactive error, I need it to work.

Hi. both your listed repo seems removed or private, not public and open-sourced


Library jar not actually included on maven central

Currently only the pom.xml is present on maven central, wit https://search.maven.org/search?q=g:com.google.openlocationcode which is not particularly useful.

Thanks for bringing this up! I'll look into this. Do you happen to know what needs to be changed to include the JAR? Is it a pom.xml configuration issue?

This issue might be caused by <packaging>pom</packaging> in https://github.com/google/open-location-code/blob/master/java/pom.xml#L14
I assume that the value should be jar instead.

https://maven.apache.org/repository/guide-central-repository-upload.html
https://central.sonatype.org/pages/requirements.html#correct-coordinates

Thanks @kroka - that was the issue. MavenCentral shows the correct files now (https://search.maven.org/search?q=g:com.google.openlocationcode). Note that the version is now 1.0.0 instead of 1.0. We will go with that version scheme going forward.

Thanks @zongweil didn't have time to actually look at the issue.


Regression: RaspberryMatic failing for HMIP-RFUSB on HA Supervised Install

Describe the issue you are experiencing
As of RaspberryMatic <IP_ADDRESS>20115, the HMIP-RFUSB stick does work by configuring the plug-in to NOT use "Protection Mode".
In the snapshot since that release (tested with  <IP_ADDRESS>20212-be487fa), the option to configure "Protection Mode" has been removed from the plug-in. This causes the plug-in to fail on a Home Assistant Supervised Install on x86/amd64 due to the following error:
22-02-12 07:09:36 INFO (MainThread) [supervisor.hardware.monitor] Detecting HardwareAction.ADD hardware /dev/mmd_hmip - None 22-02-12 07:09:36 INFO (MainThread) [supervisor.hardware.monitor] Detecting HardwareAction.ADD hardware /dev/mmd_bidcos - None 22-02-12 07:09:36 ERROR (MainThread) [supervisor.docker.addon] Can't set cgroup permission on the host for addon_de838cd8_raspberrymatic-dev
See https://homematic-forum.de/forum/viewtopic.php?f=65&t=72639&p=706049#p706047 for a detailled log.
Describe the behavior you expected
Unless the problem leading to the observed bug with the snapshot is not fixed, the plugin should at leas keep the option to be run without protection mode to avoid regression failure of running installations when the RaspberryMatic plugin is upgraded to the next version. Or else it should be documented that RaspberryMatic does not support the Supervised Install model of Home Assistant.
Steps to reproduce the issue
Installation of current Home Assistant and Plugin (as of the day of this writing) on x86/64 bit according to the supported installation guidelines:
https://github.com/home-assistant/archi ... ervised.md
What is the version this bug report is based on?
<IP_ADDRESS>20212-be487fa
Which base platform are you running?
intelnuc (intel NUC)
Which HomeMatic/homematicIP radio module are you using?
HmIP-RFUSB
Anything in the logs that might be useful for us?
see above URL

Additional information
NA

22-02-12 07:09:36 INFO (MainThread) [supervisor.hardware.monitor] Detecting HardwareAction.ADD hardware /dev/mmd_hmip - None 22-02-12 07:09:36 INFO (MainThread) [supervisor.hardware.monitor] Detecting HardwareAction.ADD hardware /dev/mmd_bidcos - None 22-02-12 07:09:36 ERROR (MainThread) [supervisor.docker.addon] Can't set cgroup permission on the host for addon_de838cd8_raspberrymatic-dev
See https://homematic-forum.de/forum/viewtopic.php?f=65&t=72639&p=706049#p706047 for a detailled log.

To me, this looks like a limitation within the docker/HA-supervised host where the cgroups configuration or kernel settings are nit appropriate enough for HA-supervisor to aet the cgroup permissions dynamically. Perhaps @pvizeli or @agners have some ideas what could be missing here in a supervised HA environment so that the cgrouo settings can be applied correctly like when using HaOS.


editable-select and $watchCollection bug

hi dears
i made editable-select to call a directive function but it does not work for me
i am using credit card validation in https://gist.github.com/lrvick/8789669 but i want to make it by editable-select   but the function is not called at all..
when i made it with normal function it gives alerts when i tried to alert anything but in using watch collection is does not work
                    {{ ccinfo.month.value || 'empty' }}                               {{ ccinfo.year || 'empty' }}
and the directive function is
`'use strict';
angular.module('signupApp')
.directive('cardExpiration', function () {
return {
require: 'ngModel',
link: function postLink(scope, element, attrs, ctrl) {
scope.$watchCollection('[ccinfo.month, ccinfo.year]', function (newValues, oldValues) {
ctrl.$setValidity('past', false);
      if (typeof newValues["0"] !== 'undefined' && typeof newValues["1"] !== 'undefined') {
        ctrl.$setValidity('past', true);
        if (newValues["1"] == scope.currentYear && newValues["0"].value < scope.currentMonth) {
          ctrl.$setValidity('past', false);
        }
      }
    });
  }
};

})`

So you select an item in editable-select and upon save you are expecting the cardExpiration directive watch to have done something?

the problem is ctrl value
i have 2 pull donwn menu one for year and other for month.. when i change value of month it only set validity for months and when i change the year it set validity for only year
so how to set validity for ctrl that is not clicked notice that i know its name , id and model id

Why can't you call an function in eitheronBeforeSave or onAfterSave that will display an error message based upon the value that update and the other input?

i dont know how to call directive in on before save or i will make it into controller?

Documentation for onbeforesave andonaftersave are here.
Just add e-ng-change and have it call a function.


[BUG] Link to "Demonstration boards" is dead

The link in the README to the "Demonstration boards" page of the documentation is dead, and it appears that this section has disappeared of the documentation.

Links removed


Bugfix/assignment op

@maciekgajewski can you have a look at this fix? cheers! david

Coverage increased (+0.4%) to 98.98% when pulling 4972f96d9dce1880b9aa9b881ba4a97b699cd49d on bugfix/assignment_op into 36671f89ee5576ee0c86ce4a51ded53f1409a4e0 on master.


Bump up version to 0.3.0

Codecov Report
Base: 72.29% // Head: 72.29% // No change to project coverage :thumbsup:

Coverage data is based on head (cfe6619) compared to base (2abec3f).
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #14   +/-   ##
=======================================
  Coverage   72.29%   72.29%
=======================================
  Files          11       11
  Lines         462      462
=======================================
  Hits          334      334
  Misses        128      128

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Implemented configuration for running in docker behind a reverse proxy

The following modifications allow to use the software in a docker container behind a reverse proxy.
The ansible role for this can be found here: https://github.com/kevinveenbirkenbach/server-playbook/tree/master/roles/docker-roulette-wheel

Hey! Could you explain a little bit more why you need them?


Update to version v0.42.6 with our staking fix

Codecov Report

Merging #338 (fab2284) into main (3054495) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #338   +/-   ##
=======================================
  Coverage   18.28%   18.28%
=======================================
  Files         133      133
  Lines       21471    21471
=======================================
  Hits         3925     3925
  Misses      16891    16891
  Partials      655      655

Continue to review full report at Codecov.

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


Fix News Extension to Replace Underscores with Whitespace

Request

[ ] New Feature
[ ] Refactor
[x] Fix Issue
[ ] Other

Target Items
Select All That Apply

[ ] CloudFormation Template
[x] Chef Cookbook
[x] Mediawiki
[ ] Nginx
[ ] PHP FPM
[ ] Documentation
[ ] Other

Details

Fix News Extension to Replace Underscores with Whitespace
Add this logic to Cookbook HowTo:Hide_Underscores_in_Article_Links_Displayed_by_Mediawiki_News_Extension

Completed