Go: SIGSEGV when using int32 instead of int64 and missing error in Resize functions

Problem
In Go, some operation causes a SIGSEGV when using an int32 instead of an int64 (and I have reasons to believe that the same will happen when using float instead of double and vice-versa).
The Resize* operations don't define the output shape correctly when the input is not a "batch": they just let the dimensions undefined instead of raising some errors.
The tests below are commented so I hope that's enough to let you understand what the problems are.
Source code / logs
package poc_test

import (
        "fmt"
        //tf "github.com/tensorflow/tensorflow/tensorflow/go"
        "github.com/tensorflow/tensorflow/tensorflow/go/op"
        "testing"
)

func TestResizeWithoutBatchIsNoSense(t *testing.T) {
        // Create root scope
        root := op.NewScope()

        // Define graph

        // 1: read image content
        imagePath := "test.jpg"
        contents := op.ReadFile(root.SubScope("ReadFile"), op.Const(root.SubScope("filename"), imagePath))

        // 2: decode Jpeg
        value := op.DecodeJpeg(root.SubScope("DecodeJpeg"), contents, op.DecodeJpegChannels(3))

        // I'd like to add noise to the image, so I'd like to define a nose tensor with the same shape of the image
        // Just to be sure that the image shape is fully defined, I resize it
        resize1 := op.ResizeNearestNeighbor(root.SubScope("ResizeArea"), value, op.Const(root.SubScope("size"), []int32{int32(80), int32(80)}))

        // If the size parameter is an int32, no error is raised but the operation is no sense
        // Because it returns ? instead of [80, 80, 3]
        // The reason is taht Resize* methods requires a batch of images: should raise an error?
        fmt.Println("Shape with int32: ", resize1.Shape().String())
        if dims64, err := resize1.Shape().ToSlice(); err != nil {
                fmt.Println(dims64)
        } else {
                t.Error("Error: ", err.Error())
        }

        // I expect a fully defined shape
        if !resize1.Shape().IsFullySpecified() {
                t.Error("Not defined shape")
        }

        // create the batch and see how things changes
        batch := op.ExpandDims(root.SubScope("expand"), value, op.Const(root.SubScope("axis"), []int32{0}))
        resize1 = op.ResizeNearestNeighbor(root.SubScope("ResizeArea"), batch, op.Const(root.SubScope("size"), []int32{int32(80), int32(80)}))
        fmt.Println("Shape with int32 and input as a batch: ", resize1.Shape().String())
        if dims64, err := resize1.Shape().ToSlice(); err == nil {
                fmt.Println(dims64)
        } else {
                fmt.Println("Error: ", err.Error())
        }
        // Now the things have sense and the shape is defined and equals to [ 1, 80, 80, 3]
}

func TestResizeWithIn64ShapeSigSegvs(t *testing.T) {
        defer func() {
                if r := recover(); r != nil {
                        t.Error("Panic!")
                }
        }()
        // Create root scope
        root := op.NewScope()

        // Define graph

        // 1: read image content
        imagePath := "test.jpg"
        contents := op.ReadFile(root.SubScope("ReadFile"), op.Const(root.SubScope("filename"), imagePath))

        // 2: decode Jpeg
        value := op.DecodeJpeg(root.SubScope("DecodeJpeg"), contents, op.DecodeJpegChannels(3))

        // However, changing int32 with int64 breaks everyting (no matter if I use `batch` or `value`)
        resize2 := op.ResizeArea(root.SubScope("ResizeArea2"), value, op.Const(root.SubScope("size2"), []int64{int64(80), int64(80)}))
        // This operation causes a SIGSEGV
        fmt.Println("Shape value: ", resize2.Shape())
        fmt.Println("Shape with int64: ", resize2.Shape().String())

        // In short, chaning int32 with int64 causes SIGSEGV. It looks like kernels are not registered to handle both types

        // This can bring the code to be a mess to debug, because If I'd like to, for example, add noise to an image
        // I have to generate a set of values with the same shape of the input images.
        // Using the one with the defined shape (the batch) I'd like to use the output of Shape().ToSlice()
        // But I can't.
}

func TestGenerateNoiseWithInt32Shape(t *testing.T) {
        defer func() {
                if r := recover(); r != nil {
                        t.Error("Panic!")
                }
        }()
        // Create root scope
        root := op.NewScope()

        // Define graph

        // 1: read image content
        imagePath := "test.jpg"
        contents := op.ReadFile(root.SubScope("ReadFile"), op.Const(root.SubScope("filename"), imagePath))
        // 2: decode Jpeg
        value := op.DecodeJpeg(root.SubScope("DecodeJpeg"), contents, op.DecodeJpegChannels(3))
        batch := op.ExpandDims(root.SubScope("expand"), value, op.Const(root.SubScope("axis"), []int32{0}))
        resize1 := op.ResizeNearestNeighbor(root.SubScope("ResizeArea"), batch, op.Const(root.SubScope("size"), []int32{int32(80), int32(80)}))
        fmt.Println("Shape with int32 and input as a batch: ", resize1.Shape().String())
        if dims64, err := resize1.Shape().ToSlice(); err != nil {
                fmt.Println(dims64)
        } else {
                fmt.Println("Error: ", err.Error())
        }

        dims64, _ := resize1.Shape().ToSlice()
        noise := op.ParameterizedTruncatedNormal(root.SubScope("ParameterizedTruncatedNormal"),
                op.Const(root.SubScope("shape"), dims64),
                op.Const(root.SubScope("means"), 0.),
                op.Const(root.SubScope("stddev"), 1.),
                op.Const(root.SubScope("minvals"), 0.),
                op.Const(root.SubScope("maxvals"), 1.))
        fmt.Println(noise)

        // ^ This operation causes SIGSEGV
        // I have to convert dims64 to a slice of int32 and then the operation works

}

func TestGenerateNoiseWithInt64Shape(t *testing.T) {
        // Create root scope
        root := op.NewScope()

        // Define graph

        // 1: read image content
        imagePath := "test.jpg"
        contents := op.ReadFile(root.SubScope("ReadFile"), op.Const(root.SubScope("filename"), imagePath))
        // 2: decode Jpeg
        value := op.DecodeJpeg(root.SubScope("DecodeJpeg"), contents, op.DecodeJpegChannels(3))
        batch := op.ExpandDims(root.SubScope("expand"), value, op.Const(root.SubScope("axis"), []int32{0}))
        resize1 := op.ResizeNearestNeighbor(root.SubScope("ResizeArea"), batch, op.Const(root.SubScope("size"), []int32{int32(80), int32(80)}))
        fmt.Println("Shape with int32 and input as a batch: ", resize1.Shape().String())
        if dims64, err := resize1.Shape().ToSlice(); err != nil {
                fmt.Println(dims64)
        } else {
                fmt.Println("Error: ", err.Error())
        }

        dims64, _ := resize1.Shape().ToSlice()

        var dims []int32 = make([]int32, len(dims64))
        for i, dim := range dims64 {
                dims[i] = int32(dim)
        }

        noise := op.ParameterizedTruncatedNormal(root.SubScope("ParameterizedTruncatedNormal"),
                op.Const(root.SubScope("shape"), dims64),
                op.Const(root.SubScope("means"), 0.),
                op.Const(root.SubScope("stddev"), 1.),
                op.Const(root.SubScope("minvals"), 0.),
                op.Const(root.SubScope("maxvals"), 1.))
        fmt.Println(noise.Shape().String())
}

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Archlinux
TensorFlow installed from (source or binary): source
TensorFlow version (use command below): 1.1.0-rc2
Bazel version (if compiling from source): 0.4.5
CUDA/cuDNN version: cuda 8, cudnn 5.1
GPU model and memory:  GeForce GTX 1080
Exact command to reproduce: go test

Thanks for the report @galeone , there are multiple things going on here.

There was a bug in the underlying C API where it was suppressing errors during graph construction. That is fixed at head in 7d785f1e18af9d22d940f18aac6e8c9ffd268b22, so it will be available with the 1.2 release of the TensorFlow C API

The Scope type follows the "builder pattern" for graph construction. So, while op.ResizeNearestNeighbor(Scope*, ...) doesn't return an error, errors are collected in Scope.Err. This allows for more compact graph definitions (see the package example for the op package), at the cost of forgetting to check the error. Setting aside comments on the merits of this design, before using any of the returned tf.Outputs from the functions in the op package, one is encouraged to check the error. So, in line 30 of the snippet above for example, I'd suggest:
resize1 := op.ResizeNearestNeighbor(root.SubScope("ResizeArea"), value, op.Const(root.SubScope("size"), []int32{int32(80), int32(80)}))
if err := root.Err(); err != nil {
    t.Fatal(err)
}

// If the size parameter is an int32, no error is raised but the operation is no sense
// Because it returns ? instead of [80, 80, 3]
// The reason is taht Resize* methods requires a batch of images: should raise an error?
fmt.Println("Shape with int32: ", resize1.Shape().String())

Regardless, the Go API should never end up with segfaults from the underlying C API (in this case, providing an invalid TF_Operation pointer). So I'm going to send a fix for that.

Long story short: A couple of fixes will ensure error messages/panics that are more useful than the cryptic segfaults. Additionally, it's good practice to check the error on the Scope object.
Hope that helps (will update this issue with the fix mentioned above). Comments/thoughts welcome.

Thank you for the suggestion on how to properly check for errors!
Is somewhere documented the Scope follows the builder pattern? I guess it would be nice to put this in Scope's go-doc.
About the point 3: what is the problem? Why it segfaults? That op has a kernel registered to handle both types or the fix is to register the missing type?

@galeone : I'm probably misusing the phrase "builder pattern" :), but yeah, it does want you to check for errors. If you'd like to contribute or suggest some changes to scope.go or other files to help improve documentation, we'd be more than happy to look at them.
Regarding point 3: It isn't that the kernel isn't registered, it's that the operation requires that the size argument be an int32 Tensor (see godoc).
Between 7d785f1e18af9d22d940f18aac6e8c9ffd268b22 and a fix I'm about to make on the Go side, you shouldn't see any segfaults in the C API - but you may see a nil-pointer dereference in Go (because Scope.AddOperation will return nil and an error after the fix).
Hope that helps (the fix should be in sometime tomorrow I think)

I'll be happy to contribute! In the next days, as soon as I have time, I'm going to give a better look.
However, since every size argument of every function requires an int32, why the .Shape() method returns a []int64? I mean, it seems not coherent. The documentation talks about int32 almost everywhere and this int64 just makes operations like the creation of a new tensor with a predefined shape (like the noise in my previous example) a problem because of the required casts.
Isn't just better to use an int32 everywhere and thus avoid the problem? I'm pretty sure that no one will create a tensor with a dimension > 2^32 -1

I believe the use of int32 in many operations predates efforts to accept int64 as well (see for example 91ce95d497ec2957535b2ce6a965cd8269d723e5). So, I think some of these ops need to be updated to accept int64 as well.
In general, having Tensors that reach > 2^32-1 dimensions isn't unheard of, especially when reshaping large batches of multi-dimensional tensors.

Alright, thus instead of using int32 everywhere I suggest using int64 everywhere in order to maintain consistency. Or, if not everywhere, at leat use the same type for attributes that works togeather, i.e. shape and dimensions (as input and/or output parameters) should be both int64.

This issue should be resolved at head (and with C library compiled from head), so I'm going to close this out.
Contributions for making more operations accept int64 for shape similar to https://github.com/tensorflow/tensorflow/commit/91ce95d497ec2957535b2ce6a965cd8269d723e5 are welcome.
@galeone : Hope that helps. Feel free to open a new issue if you run into more trouble. Thanks!


feat: added support for subTitle field in service

Corresponding UCC UI release: https://github.com/splunk/addonfactory-ucc-base-ui/releases/tag/v1.28.0

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


can not Archive at iOS using RN 0.72.4

Description
main.jsbundle does not exist
React Native Version
0.72.4
Output of npx react-native info
System:
OS: macOS 13.5.2
CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
Memory: 365.50 MB / 16.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 18.12.1
path: ~/.nvm/versions/node/v18.12.1/bin/node
Yarn:
version: 1.22.19
path: ~/.nvm/versions/node/v18.12.1/bin/yarn
npm:
version: 8.19.2
path: ~/.nvm/versions/node/v18.12.1/bin/npm
Watchman:
version: 2<IP_ADDRESS>
path: /usr/local/bin/watchman
Managers:
CocoaPods:
version: 1.12.1
path: /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.0
- iOS 17.0
- macOS 14.0
- tvOS 17.0
- watchOS 10.0
Android SDK: Not Found
IDEs:
Android Studio: 2022.1 AI-221.6008.13.2211.9619390
Xcode:
version: 15.0/15A240d
path: /usr/bin/xcodebuild
Languages:
Java:
version: 11.0.19
path: /usr/bin/javac
Ruby:
version: 3.2.2
path: /usr/local/opt/ruby/bin/ruby
npmPackages:
"@react-native-community/cli": Not Found
react: Not Found
react-native: Not Found
react-native-macos: Not Found
npmGlobalPackages:
"react-native": Not Found
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: true
newArchEnabled: false
Steps to reproduce

open file restuque.xcworkspace
choose menu product in Xcode and choose sub menu archive

Snack, screenshot, or link to a repository

same issue

same issue here

Why is this closed? Getting same error...
File /Users/[USER]/Library/Developer/Xcode/DerivedData/[APP_NAME]-hkkxnxtxugqfssgyivbmjcqyhpow/Build/Intermediates.noindex/ArchiveIntermediates/[APP_NAME]/BuildProductsPath/Release-iphoneos/[APP_NAME]app/main.jsbundle does not exist. This must be a bug with React Native, please report it here: https://github.com/facebook/react-native/issues


hyphens replaced with underscores

I created a new project named "VSA-example" and it created projects named "VSA_example" etc. which caused invalid references everywhere.

Hi,
Thanks for reporting, I will fix this issue


Make clean doesn't clean properly

when you "make clean" in the main directory it leaves some files.. some over 200mb in size..

Can you list which files?
If you run make distclean, do the same files persist?

Closing, not a bug (this is usually expected without make distclean)


[website] fixing footer position in safari

Motivation
Documentation website has a broken footer position in Safari v.14 OSX. The fix was tested in all major browsers:
OSX: Safari v14; Firefox v81, v82; Brave v86
Windows10: Edge v86; IE11; Firefox v12; Chrome v86; Opera v72
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
Open website in Safari and verify if the footer is not sticking at the top of the page.
Website before the fix:

Website after the fix:

@jareknowotka I think this should be good, but waiting for you to sign the CLA before reviewing and possibly approving.

Thank you @JoelMarcey, in fact I had trouble signing CLA as individual as well. I keep getting "Mailing Address is required" although I provide my address. Seams like a form validation issue. Unfortunately not a part of this repository, so unable to fix.
In the meanwhile I went the corporate path, signed the docs and waiting for approval.

@jareknowotka Thanks for the bug report on the CLA process. We have someone taking a look at fixing it.

@jareknowotka CLA bug has been solved. You should be able to finish the Individual CLA signing process now!

@maxwellgordon thanks for looking into this, @bmwill CLA is signed.

/land


Add -s flag to force switching users

From the commit log:
As @C4K3 suggested in issue #105, the -s flag can be used to force
switching to the configured user and group combination without
daemonizing. Since it is best practice to not daemonize when running as
a systemd service, this flag, in combination with -d, allows systemd
users to switch users without daemonizing. Something like the following
would then be used in ExecStart:

  /usr/bin/umurmur -c /etc/umurmur/umurmur.conf -d -s

In my opinion a flag shouldn't be necessary to switch if a user is set in the config; it should happen whether it's daemonizing or not. The example config comments would tend to support this: "Will attempt to switch user if set".
It's possible to just copy "username = getStrConf(USERNAME)" from switch_user() to just before the !nodaemon check in main() and use it to determine whether the switch is necessary.
Or just call switch_user no matter what since it's a noop if there is no username set in the config.

You may be right that that makes more sense. Honestly the only reason I didn't want it to switch user is that it makes it convenient to test things, in that it will run without editing the config files.

Maybe instead have a flag to not switch users?


Two table time return search problem

When my page has two jsgrids, the carriage return of the second table will lose its effect.

Can someone help me with this?


[BUG] ERR_PACKAGE_PATH_NOT_EXPORTED issue encountered when upgrading to NodeJS 18 runtime

What is the bug?
We've had the "@opensearch-project/opensearch" working in an app running against the Node JS 14 runtime. Howerver we've recently tried upgrading our app's runtime to NodeJS 18 and experience the issue below.
ERROR	Uncaught Exception 	{"errorType":"Error","errorMessage":"Package subpath './lib/errors' is not defined by \"exports\" in /var/task/node_modules/@opensearch-project/opensearch/package.json","code":"ERR_PACKAGE_PATH_NOT_EXPORTED","stack":["Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/errors' is not defined by \"exports\" in /var/task/node_modules/@opensearch-project/opensearch/package.json","    at new NodeError (node:internal/errors:399:5)
How can one reproduce the bug?
Import a module like: import { ResponseError } from '@opensearch-project/opensearch/lib/errors';
What is the expected behavior?
module imports without errors
What is your host/environment?

NodeJS 18.16.1,
@opensearch-project/opensearch": "2.1.0". Also tried it on versions "2.3.0", "2.2.1", "1.2.0"

@rayhive thanks for bringing this to our attention. Do you encounter this in other versions of Node as well? Esp the newer ones?

Hi @nhtruong, thanks for your response. We encountered this issue with the NodeJS 16, as well as 18 runtimes.  Ideally we're looking to upgrade our runtime from version 14 to version 18.

Is there an ETA as it's a kind of a blocker for us ?
@nhtruong

@mahajanvivektech Our integration and unit tests do include 18.x and they don't encounter this error. Lemme see if I can recreate this.

Is this what you're looking for?
import { errors } from '@opensearch-project/opensearch';

console.log(errors.ResponseError)

@nhtruong , this is what we are looking out for us to work.
Even in our case it works at the unit test level level. However, when we try running it at runtime either through Lambda or locally, we get the error.

Hi @nhtruong ,
Yeah, Thanks for sharing: https://github.com/opensearch-project/opensearch-js/blob/b892c6954731f98f76bd464cef9d320ca0763f50/lib/errors.d.ts#L87
We will give it a shot and let you know if it works

Is this what you're looking for?
import { errors } from '@opensearch-project/opensearch';

console.log(errors.ResponseError)

Thanks for that @nhtruong, that's resolved the issue running this locally on my workstation - also, I upgraded to  @opensearch-project/opensearch 2.3.1. We'll give this a test in the office, otherwise looking good, cheers.

Glad that was resolved. I'm going to close this ticket then.


cant import models at all

ok so yes it works but i cant import armatures
on this one it simply doesnt import bones and on the bones branch it doesnt import at all
on the bones branch i get
  File "C:\Users\Flashlight Bulbton\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\io_scene_gltf2222\__init__.py", line 116, in execute
    scene.create_scenes(self)
  File "C:\Users\Flashlight Bulbton\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\io_scene_gltf2222\scene.py", line 7, in create_scenes
    realize_vforest(op)
  File "C:\Users\Flashlight Bulbton\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\io_scene_gltf2222\scene.py", line 146, in realize_vforest
    pass2(root)
  File "C:\Users\Flashlight Bulbton\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\io_scene_gltf2222\scene.py", line 128, in pass2
    bone_name = op.id_to_vnode[node_id]['blender_name']
KeyError: 'blender_name'

location: <unknown location>:-1

the 2222 is because it wouldnt even install right for some reason (that was a fault on my end)
im trying to import a vroid vrm model

Can you upload the glTF?

I found the one enzyme69 (you?) uploaded for the other importer. I pushed a change (5acf1f746) to my bones branch that fixes it. Can you try the bones branch again and tell me if it works?

YES IT WORKED THANK YOU


Consider separate thread pools for I/O and running subscription handlers

Subscription handlers could easily exhaust the I/O threads, we should consider using separate thread pools that way we can avoid starving the I/O threads, which include all kinds of timers needed to update the ACK deadline and publish events.

We talked about it over the original design doc and decided not to implement this.


Major rewrite

The initial scope of the project have been expanded quite a bit in the past months, this means that a fresh rewrite should be due quite soon, before the project complexity grows out of hand. The current code base is just a single file and most of the code lives in the same monolith function.
Goals of the rewrite:

More reliable and easier to maintain code base.
Easier, more powerful, and less complicated/convoluted extensibility.
More streamlined configuration.

As part of the rewrite a new more logical and concise config api should be designed.
Inspiration:

transports from winston as a way of reacting to logs being emitted.

betterLogging(console, {
  transports: [
    betterLogging.transports.file({
       filename: 'error.log',
       levels: {
           include: [ 'error' ] // default includes all
           exclude: [] // default excludes none
       }
    }),
    betterLogging.transports.file({
       filename: 'combined.log'
    }),
    betterLogging.transports.http({
      domain: 'www.demo.com',
      root: '/logs',
      gracePeriod: 2000, // milliseconds to wait after starting a batch before pushing the collected logs
      paths: {
         '/error': {
              include: [ 'error' ],
              exclude: []
         },
         '/usage': {
              include: [],
              exclude: [ 'error', 'debug', 'warning' ]
         }
      }
    })
  ]
});

Upside: Its tried & tested and would allow betterLogging the possibility to grow as a library.
Downside: betterLogging was never supposed to be the "be all and end all" logging library. This might be out of scope for the library.

The rewrite should probably include the introduction of a necessary build step (for that sweet sweet typescript quality of life).

Current WIP includes a "use" system and a more streamlined event system. These two features could be used to implement most of the core features of the live version, but would also provide a really strong foundation for exstenciability.
Fiddle: https://jsfiddle.net/2xzkoq38/48/
The idea is to register a list of extensions. Each extension should be responsible for a single part of the logger. Like the loglevel, or overwriting the "log" function. Each extension could also expose a list of other extensions that needs to be installed before this extension can be installed. For example "log" depends on "loglevel", and with the currently planed API that would be written like this:
require('better-logging', {
  use: [
    useLoglevel(),
    {
       name: 'better-logging-log',
       dependencies: [ 'better-logging-loglevel' ],
       create(config) {
         // fires before configs are applied
       },
       installed(app, hostObj) {
         // install your extension either on the hostObject or on the app or on both
         // app.on(event, handler) can be used to react to event emitted by other extensions
         // app.emit(event, playload) can be used to emit events for other extensions (or the user) to react to
       }
    }
  ]
})

Parts of the live version that could be built purely using extensions: name -> dependencies

event-system - [] (could actually impl app.on, app.off and app.emit as an extension)
argument-formatter - []
loglevel - []
line - [ 'event-system', 'argument-formatter', 'loglevel' ]
log - [ 'event-system', 'argument-formatter', 'loglevel', 'line' ] (doesn't depend on line, but line needs to grab the native impl before log overwrites it.)
info - [ 'event-system', 'argument-formatter', 'loglevel' ]
debug - [ 'event-system', 'argument-formatter', 'loglevel' ]
error - [ 'event-system', 'argument-formatter', loglevel' ]
warn - [ 'event-system', 'argument-formatter', 'loglevel' ]

These core extensions should be provided to the decorator instance prior to usage:
const { CustomInstance } = require('better-logging');
const {
  useEventSystem,
  useArgumentFormatter,
  useLogLevel,
  useInfoOverwride
} = require('better-logging/extensions/core');

const customLogging = CustomInstance([
  useEventSystem(),
  useArgumentFormatter(),
  useLogLevel()
]);

customLogging(console, {
  use: [
    useInfoOverwride() // will work because all 3 of its dependencies have already been included in the instance it self.
  ]
});

Known problems

Hard to implement in typescript.

#23


(PDB-2380) Limit the storage of historical-catalogs

This commit limits the storage of historical catalogs to only the latest
three catalogs for a node. This commit limits the storage because for
our benchmarking data with 5000 nodes (~3 million catalogs) we were
seeing the catalogs table take up around 140GB of space.

Marking as WIP until we get feedback from the advisory group

Refer to this link for build results (access rights to CI server needed):
http://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_puppetdb_init-multijob_githubpr-master/491/
Test PASSed.

Updated the config option @wkalt

Refer to this link for build results (access rights to CI server needed):
http://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_puppetdb_init-multijob_githubpr-master/493/
Test PASSed.

Refer to this link for build results (access rights to CI server needed):
http://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_puppetdb_init-multijob_githubpr-master/496/
Test PASSed.

generally +1, but fix yer sql injection!

@mullr addressed ur comments :)

Refer to this link for build results (access rights to CI server needed):
http://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_puppetdb_init-multijob_githubpr-master/508/
Test PASSed.

@ajroetker you've missed the documentation item for this setting.

This requires this PR to be merged also: https://github.com/puppetlabs/pe-puppetdb-extensions/pull/162

@kbarber I was under the impression we were leaving this undocumented

@ajroetker umm, fine, the old setting is still documented however.

Refer to this link for build results (access rights to CI server needed):
http://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_puppetdb_init-multijob_githubpr-master/529/
Test PASSed.


Fusion reactor clears inventory when unchunkloaded.

When on a server and then chunks become unloading, i.e. leaving the server for a little bit, the internal tanks will be empty when I log back in, meaning the reactor will have to reheat up, for long heat up times like a Dt-Dt fusion this is very inconvenient.

I can't recreate this - the contents of the tanks are saved just like any other fluid handling machine. What version of NC are you using, and are you sure that there can't be any other reason that the fusion reactor runs out of fuel?

Yeah, sorry I think I figured it out. I believe it was a bug with how ae2stuff and ae handles channeling (I was using fluid storage buses and fluid export buses) where they were not connected causing the reactor to run through it reserves and ae not supplying anything to it. Sorry to bother you ;(, great work on the mod!

No worries, and thanks very much :)


sftp client

sftp storage support

The tests for sftp only run when used with vagrant at the moment, because there needs to be sftp infrastructure configured, I just followed the approach for s3, etc which are skipped by default.  Also due to https://github.com/paramiko/paramiko/issues/1369, I have pinned cryptogrophy to 2.4.2, not sure if this is ok or not.

OK, fixes applied based on your feed back.

and build has passed :-)

Not sure if this relevant, but in the past I've had issues with paramiko's sftp implementation when transferring large files; if a re-key happened while the file transfer was ongoing the transfer failed.

when transferring large files

"large" here apparently being something between 10 and 100 MiB. @pellcorp if you didn't already test with some sizable (typically basebackup chunks can be anything up to a gigabyte or two) files maybe you could do some test with those to check if that issue is still relevant.

We have tested downloads using this code to 30+ gb files, and I just confirmed that  a 1gb upload worked just fine.  Will make the other changes.

Good point about the /tmp/vagrantvm file existing, I will clean that up

ok I changed to generate a random username and password to avoid clobbering an existing user, also I cleaned up the flag file stuff and put it into the /home/vagrant directory.

build has passed :-)

ok build passed

hopefully this time I am done :-)

ok lets try now :-)

@pellcorp I didn't do proper enough due diligence check for the pysftp library used here. It seems the library isn't maintained anymore and isn't available on Fedora so this breaks things for all Fedora users. To unbreak things we decided that the best course of action for now is to revert this change (https://github.com/aiven/pghoard/pull/340) and then see how to make this in a way that works for Fedora as well.
Because pysftp seems to be such a lightweight wrapper our thinking is that it doesn't make sense to try to set up things so that it would be directly usable on Fedora somehow but instead just implement things directly using paramiko. Is that something you could look into?

I will have a go when I have time, a shame as I was hopeful I had finished this work

I am looking at this now, hopeful to have something soonish

I have opened a new merge request with sftp client using paramiko directly
https://github.com/aiven/pghoard/pull/342


Typo in release changelog URL

Small headsup about an typo in the latest release.
The url there goes to https://dumpingapp.com instead of https://dumplingapp.com, which is some ad / virus site which redirects a ton of times (before being blocked by my pihole)

Oh yup, I can see that. I've corrected it now however. Thanks!


fix abi.entrys undefined

If the contract has no abi, the key of that abi may not exist.

Makes sense. Thanks.


Discontinuing the use of Weaviate modules

ref: https://github.com/andreibondarev/weaviate-ruby/pull/18#issuecomment-1554318857
I think we should embed via Langchain.rb and then passing it to Weaviate when integrating Langchain.rb and Weaviate.
https://weaviate.io/developers/weaviate/api/rest/objects#with-a-custom-vector
That way, we can align with other vector databases and APIs.
Furthermore, for Langchain users, the benefits of the Weaviate module are not that substantial.

@moekidev Do you think this produces better results? By not relying on the Weaviate internal modules.

For maintainability. It helps reduce accidental reuse of LLM names and branching based on the presence or absence of modules. Of course, it is possible to rely on the extensibility of Weaviate modules. However, currently, Langchain.rb is limited to OpenAI, Cohere, and HuggingFace APIs to align with other vector databases. As a result, it does not benefit from the full extent of extensibility. Nevertheless, I believe this is the right choice. It is advisable to have Langchain.rb designed in a way that allows for easy replacement of the database and language model, ensuring compatibility among APIs.

@moekidev Could you please run standardrb --fix and commit to fix the failing specs?

@moekidev A few comments and it's good to go! 🚀

@andreibondarev Please check.

@andreibondarev Could you please review it again?


Proxies provision in FastHTTPUser Approach

Describe the bug:
In HTTPUser, we can give Proxies in self.client.get(url, proxies=proxies) where proxies is configured as JSON (e.g. {"http": "testmedmain.company.com:80","https":"testmedmain.company.com:443",} ).
However, same is not working when we use fasthttpuser. It says "Connection Refused". Please let us know the steps to configure Proxie property as JSON in Self.client.get in FastHTTPUSer.
Expected behavior:
Proxy setting should work in FastHTTPUser when we configure same manner as in HTTPUser
Actual behavior:
Connection Refused message appears. Same approach works fine with HTTPUser
Environment

OS: MAC
Python version: Python 3.6
Locust version:1.4.1

I dont know how to do this (and I'm unsure who else might). Maybe check if there is some documentation for geventhttpclient or ask on stackoverflow?

The question is relevant and unfortunately there are no examples available.

even though its abit old now :) @cyberw here is an example for geventhttpclient.
from geventhttpclient import HTTPClient
from geventhttpclient.url import URL

url = URL("https://google.co.uk/")

proxy_host = "localhost"
proxy_port = 3128

http = HTTPClient(url.host, ssl=True, proxy_host=proxy_host, proxy_port=proxy_port)
response = http.get(url.request_uri)

# read status_code
r_code = response.status_code
r_text = response.read().decode("utf-8")

print(r_code)
print(r_text)

# close connections
http.close()

@cyberw Hello, any update on this ? Would be great to have proxy support for FastHttpUser. Can't allow myself to switch to regular HttpUser (requests based) since I do a enormous amount of http GET and my server wouldn't handle the load.

@cyberw Just openned  #2758


build: add  element parent pom - bump version…

… to 0.6.4
@chayim based on our chat:
Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project redis-om-spring-parent: Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter -

I've added the distributionManagement element to the parent POM. After approval I'll try a SNAPSHOT deployment via the GH actions and then in a couple of weeks we can try a RELEASE.

@bsbodden I added to your PR, changing how snapshots roll. WDYT? Merged to mainline and numbered releases will trigger the snapshot publish now.

@sazzad16 Can you take a look at this? Let us know what you think.

If we really are going to maintain parent, we don't need to keep distributionManagement in redis-om-spring/pom.xml. Isn't it?

TBH I have no idea on how to prevent the parent POM from attempting to involve itself in the release :-) . To do deployments locally, I've been CD-ing to the subproject redis-om-spring and running the deploy goal from there. So you're likely right, I'll try a SNAPSHOT deployment locally, and I'll amend this PR if that works. I was able to add a skip parameter to the modules under /demos and that seems to work in preventing those from trying to deploy.

@bsbodden I added to your PR, changing how snapshots roll. WDYT? Merged to mainline and numbered releases will trigger the snapshot publish now.

I like that.


plot() method not working as expected.

I'm running the hellokan example as a Python script. I saved all the hellokan.ipynb steps to a file named hellokan.py, and am running it via 'python3 hellokan.py' (after creating a virtual environment and installing all the necessary dependencies).
plotting KAN at initialization generates a bunch of .png files in ./figures folder -- each .png file depicts a B-Spline on the edge of the network. I do not see any .png file depicting the whole network (Such as one shown below). How can I plot the KAN network (all layers, edges, etc.) outside Jupyter notebook? Thanks you

You can try to add plt.show() at the end of your code.

That worked! Thank you.


Add option for hybrid global and thread session pools

Came up with this option while debugging the issue fixed by PR #6796
Even with that fixed, the hybrid approach looks like it is a useful mid-ground between minimizing number of connections to origin and minimizing lock contention.  We plan on experimenting with this option some more.  I wanted to share this approach to get feedback from the community.

I did some side-by-side measurements in with three machines in one of our colo's between global pool, hybrid pool, and thread pool.  I ran a python script over the 15 minute squid.log files to calculate the latencies for transactions that go to origin.  The script also computed what percent of those transactions reused an existing origin connection. I combined that with the connection count information from ysar (which pulls traffic_server metrics once a minute).
||Reuse Model||Median Latency||90% Latency||99% Latency||% Trans reusing origin connection||concurrent open origin connections||
|Global|26ms|293|964|71.48|1972|
|Hybrid|21ms|280|928|78.91|3668|
|Thread|21ms|284|949|78.36|7998|
The global pool has the smallest number of origin connections, but the latency numbers are better for hybrid and thread.  Those two models behave similarly, but the hybrid has far fewer open connections.

Interesting. Would you share the setting of proxy.config.http.server_session_sharing.pool_hybrid_limit with your experiment?

In my experiment, proxy.config.http.server_session_sharing.pool_hybrid_limit was set to -1.  I've only played a little bit with different hybrid limits.  Most of my efforts have been looking at all on or all off.  May not be worth the complexity of being able to adjust this limit.
We are running with autoscale == 1.0, which would be 48 ET_NET threads.

[approve ci docs]

Pushed two additional commits.  One to address @masaori335's method naming concerns.  And another to simplify the config and associated documentation.

Thinking about this some more , something feels fishy. How can there be so much pressure on this mutex? I mean, Linux can resolve this 100s of thousands per second without problem. So I’m wondering, is the critical section in this lock too long and/or to slow? If not, we should just be able to change this from a try lock to a regular blocking lock


feat(es/minifier): Implement more rules

Description:
Related issue (if exists):

I profiled it but I think path-based optimization will regress performance


Dependencies errors with 1.0.9 brand new install

Hello, I am trying to install a brand new version of refinery and I get errors with the versions of active support and active model.
Thanks in advance.
$ gem list

*** LOCAL GEMS ***

bundler (1.0.21)
rake (0.9.2)

$ gem i refinerycms
Fetching: refinerycms-base-1.0.9.gem (100%)
ERROR:  Error installing refinerycms:
	activemodel requires activesupport (= 3.1.3, runtime)

Uh this doesn't make much sense why this is happening.
Try:
gem install rails --version 3.0.11
gem install refinerycms

Hi parndt, that works, but I wondering where in the code the deps are pointing to rails 3.1.
Thank you very much

I'm pretty sure they aren't which is why I'm confused :-)


Don't install upgrade-ipam for canal

[ ] Tests
[ ] Documentation
[ ] Release note

None required

Deploy preview for calico ready!
Built with commit e95fdc671a5961622fa4d1885de569bb63df4d73
https://deploy-preview-2448--calico.netlify.com


Can't Run load_data.py

Can't Run load_data.py
Location of incorrect documentation
Upload Image Package
Describe the problems or issues found in the documentation

Whats the solution to this prob?


Nuxt 3: [runtimeConfig] You are trying to access a public runtime config value (twicpics) directly from the top level. This currently works (for backward compatibility with Nuxt 2) but this compatibility layer will be removed in v3.5. Instead, you can update config['twicpics'] to config.public['twicpics'].

I am getting this console log:
[runtimeConfig] You are trying to access a public runtime config value (twicpics) directly from the top level. This currently works (for backward compatibility with Nuxt 2) but this compatibility layer will be removed in v3.5. Instead, you can update config['twicpics'] to config.public['twicpics'].
when using Twicpics ("@twicpics/components": "^0.17.2") with nuxt 3 ("nuxt": "^3.4.2").
i think it might come from the twicpics component package.. as i am not using a twicpics runtime config in my project code, also when searching it i cannot find it, it's not part of my runtime config.
So i guess it comes with the plugin of twicpics. Please have a look.
Best regards, Annick

Hi @awacode21.
Thank you for your precious comment.
We are looking into it and will keep you informed.
Thank you for using our components, we hope you are satisfied with them.
Best regards.
Miguel

Maybe this helps, i think in you plugin.js you are calling directly from root of runtimeConfig, but you env var twicpics is to be found under public. So the call should be runtimeConfig.public.twicpics

You are right. It's clearly related to our package. I just reproduced it...
I have to check the proposed fix is not a problem with the older version of Nuxt3.
Thank you for your analysis and once again for your valuable feedback.
Wishing you a good day.
Miguel

Hi @awacode21.
We have just deployed version 0.17.3 which should fix the issue with the Nuxt3 module.
Do not hesitate if you encounter any other anomalies.
Reagrds.
Miguel

Hi Miguel,
i just checked the new version and it is working fine. Thank you very much for the quick fix.
Best regards, Annick


Lesson 6 - solc_version=compiler_config["solc"].get("version", None), AttributeError: 'NoneType' object has no attribute 'get'

Hi -  an error while running (brownie compile); please advise.
dependencies:

<EMAIL_ADDRESS>
compiler:
solc:
remappings:
- '<EMAIL_ADDRESS>

Hello there @XRP97 you have a indentation error on line 11, you should leave a empty space, something like this:

@cromewar Thank you.

thanks guys


[toggo] ERROR: 'brightcove:new': Access to this resource is forbidden

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting that yt-dlp is broken on a supported site
[X] I've verified that I'm running yt-dlp version 2023.06.22 (update instructions) or later (specify commit)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[X] I've read about sharing account credentials and I'm willing to share it if required

Region
Germany
Provide a description that is worded well enough to be understood
Last week I was still able to download from www.toggo.de, but now it won't work any more. :(
ERROR: [('brightcove:new',)] (None,): Access to this resource is forbidden by access policy.
I have tried v2023.03.04 and the new v2023.06.21, both throw this error message!
None of my other download tools (youtube-dl [Linux], youtube-dlc [Linux], yt-dlp [Linux], yt-dlp [Windows]) are working.
I think, Toggo (brightcove:new) changed something and now your wonderful and very useful download-program is sadly broken.
Please fix the support for this page.
Best of luck to you!
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
yt-dlp -vU https://www.toggo.de/toggolino/peppa-pig/folge/seifenblasen-vep2918
[debug] Command-line config: ['-vU', 'https://www.toggo.de/toggolino/peppa-pig/folge/seifenblasen-vep2918']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>[812cdfa06] (zip)
[debug] Python 3.9.2 (CPython x86_64 64bit) - Linux-5.15.107-2-pve-x86_64-with-glibc2.31 (OpenSSL 1.1.1n  15 Mar 2022, glibc 2.31)
[debug] exe versions: ffmpeg N-65014-g7c130d6911-static (setts), ffprobe N-65014-g7c130d6911-static, rtmpdump 2.4
[debug] Optional libraries: certifi-2020.06.20, mutagen-1.46.0, pyxattr-0.7.2, sqlite3-2.6.0
[debug] Proxy map: {}
[debug] Loaded 1851 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Available version<EMAIL_ADDRESS>Current version<EMAIL_ADDRESS>Current Build Hash: 924464eb831bdb99d854b9d47ff9e1c0870eab276113adaf8a74a8561ad332b9
yt-dlp is up to date<EMAIL_ADDRESS>[toggo] Extracting URL: https://www.toggo.de/toggolino/peppa-pig/folge/seifenblasen-vep2918
[toggo] seifenblasen-vep2918: Downloading JSON metadata
[brightcove:new] Extracting URL: http://players.brightcove.net/6057955896001/default_default/index.html?videoId=6081416362001
[debug] Loading brightcove.6057955896001_default from cache
[brightcove:new]<PHONE_NUMBER>001: Downloading JSON metadata
ERROR: [('brightcove:new',)] (None,): Access to this resource is forbidden by access policy.
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/common.py", line 708, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/brightcove.py", line 927, in _real_extract
    raise ExtractorError(message, expected=True)

Related: #5606
Do these videos play in browser with DRM disabled?

Unfortunately not.


Fix: crypto/mem_sec.c:32:26: fatal error: linux/mman.h: No such file …

…or directory #5101
Fix: crypto/mem_sec.c:32:26: fatal error: linux/mman.h: No such file or directory #5101

Checklist

[ ] documentation is added or updated
[ ] tests are added or updated

Resolved in #5584.


Network burn addresses for mainnet and testnet

DO NOT MERGE AT THIS TIME
"I don't want to set the world on fire...
I just want to start a flame in your heart."
Remove burnt coins from UTXO using OP_RETURN (set during CreateTransaction)
Mark with new OP code of OP_BURN to specify removing them from the money supply
Burn addresses provided are proveably unspendable addresses (this is not
necessary as any coins marked OP_RETURN are automatically unspendable; this is
done purely for appearance to avoid any debate over whether burnt coins are
retrievable).
Addresses are generated from the following public key (PI to 129 decimal places)
3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609
These addresses can be generated by following standard steps for creating an
address, see below for relevant step results:
Mainnet:
extended RIPEMD160: 3784B371490B11657CD65B913C5693C218FE0F84F8
25 Byte Binary address: 3784B371490B11657CD65B913C5693C218FE0F84F85FED07E0
base 58 encoded address: PLgqKBNdyGJ4rC21efAQhDUsrZZRU4qcQo
Testnet:
extended RIPEMD160: 6F84B371490B11657CD65B913C5693C218FE0F84F8
25 Byte Binary address: 6F84B371490B11657CD65B913C5693C218FE0F84F8F874A9D9
base 58 encoded address: msccTG4mjNF8eTps29pFrEiw6ozFM5dwJ8
Do to the requirements to remove the coins from the total money supply this cannot be implemented until a protocol update is done. Hold off on merging this until we merge microprimes for the mainnet (as that will also require a protocol update/fork).

Reviewed and it LGTM.

@ligerzero459 @IngCr3at1on can you check out transaction 20392d2ae14e7d84b32b683e965caa61a20d9c3263aadf972a9a4b237b8d2c51 in particular the 1 XPY I sent to P8bB9yPr3vVByqfmM5KXftyGckAtAdu6f8.
Is that provably unspendable and classified as burnt?

With that asm? I believe so.

On Jan 16, 2016, at 07:34, Mitchell Cash<EMAIL_ADDRESS>wrote:
@ligerzero459 @IngCr3at1on can you check out transaction 20392d2ae14e7d84b32b683e965caa61a20d9c3263aadf972a9a4b237b8d2c51 in particular the 1 XPY I sent to P8bB9yPr3vVByqfmM5KXftyGckAtAdu6f8.
Is that provably unspendable and classified as burnt?
—
Reply to this email directly or view it on GitHub.

@ligerzero459 okay cool that's what I thought.
Sorry for the maybe dumb questions, so obviously the address I just used wasn't the one that @IngCr3at1on created above.
Was this pull more to implement the new OP_BURN marking rather than an unspendable address? As the P8bB9yPr3vVByqfmM5KXftyGckAtAdu6f8 address I've been using didn't require any network or code changes to be able to work as a verifiable unspendable address.

It's also more visible on the network. For example if I send some coins to the above testnet address msccTG4mjNF8eTps29pFrEiw6ozFM5dwJ8 it's not as visible on the network. The only way you can tell is accidentally stumbling across all the raw transactions that may have sent coins to the address, but it's hard to tell:
        {
            "value": 1,
            "n": 1,
            "scriptPubKey": {
                "asm": "OP_RETURN OP_BURN",
                "hex": "6ad0",
                "type": "nonstandard"
            }

Compared to:
        {
            "value": 1,
            "n": 1,
            "scriptPubKey": {
                "asm": "OP_DUP OP_HASH160<PHONE_NUMBER>000000000000000000000000000000 OP_EQUALVERIFY OP_CHECKSIG",
                "hex": "76a914000000000000000000000000000000000000000088ac",
                "reqSigs": 1,
                "type": "pubkeyhash",
                "addresses": [
                    "P8bB9yPr3vVByqfmM5KXftyGckAtAdu6f8"
                ]
            }

Again, just trying to wrap my head around this so I might be asking some silly questions sorry.

Well, it's not visible in the first case because the block explorer needs to be modified to check for OP_RETURN OP_BURN while reading a transaction and then marking that send accordingly. Personally, I like the first case because I could literally just check
if asm=='OP_RETURN OP_BURN'
    tx.isBurn = true

or some variation of that.

Do you just make the assumption that it's going to PLgqKBNdyGJ4rC21efAQhDUsrZZRU4qcQo or msccTG4mjNF8eTps29pFrEiw6ozFM5dwJ8 in that instance?
And out of curiosity if I put those addresseses into your theoretical (or not) block explorer, what gets displayed?

@mitchellcash the main reasoning for it isn't to have a so much a provably unspendable address as that's easy but also to actually remove the coins from the money supply (which is why it uses the OP_BURN op code).
I can't answer any questions about @ligerzero459's blockexplorer though lol

@mitchellcash Yes, since those addresses are hard-coded in the coin code, I would make that assumption. If they were ever changed, I'd write up some logic to handle it.
As for what would appear....good question. Hadn't come up with a way to handle "balance" calculations on them yet.

@IngCr3at1on I think that's the answer I was looking for :P
@ligerzero459 and at least I've given you something to consider lol
Thank you to you both!


sort out bitnami postgresql image

https://github.com/Truxnell/home-cluster/blob/4f030b86339904e04b815fe3d4913c4f1d4fbc72/k8s/manifests/databases/postgresql/helmrelease.yaml#L33

Moved to cnpg


fix: smarter getCode validation

Motivation
One more fix after #7334
If we've found multiple matching artifacts for vm.getCode and exactly one of them matches version of the currently running test/script source, return that.
Ref https://t.me/foundry_support/52016
Solution
This changes test runner flow a bit so we now create executor for each ContractRunner to alter cheatcodes config with running contract version

@mattsse created a separate profile for tests in multi-version environment

As we're already here, also added more input options for getCode/getDeployedCode cheats. It now can parse all of those formats:
vm.getCode("Counter.sol");
vm.getCode("Counter");
vm.getCode("Counter:0.X.X");
vm.getCode("Counter.sol:0.X.X");
vm.getCode("Counter.sol:Counter:0.X.X")`


Question about the article "Test and debug an API plugin"

Hi, about half a year ago, I asked about the issue of the "Test a plugin button" not existing. At that time, I wanted to test my plugin, but since there was no "Test a plugin button," I couldn't test it.
Recently, I checked the status of Copilot, and the "Test a plugin button" is still missing. I have the following questions:

It was previously mentioned that my account might not have sufficient permissions. Is there a way to request the necessary permissions?

Are there any other methods to test the plugin?

I recently discovered that the new Copilot Studio seems to have features related to plugin development and testing. Is this related to the plugin mentioned in the article "Test and debug an API plugin"?

Since I'm not sure how to properly ask questions regarding articles on "learn.microsoft," I'm raising these questions here. If my way of asking is incorrect, please let me know. Thank you.

Thank you for reaching out. This is a good place to discuss about Copilot API plugins, specifically in "web" surfaces like Copilot in Edge, Copilot in Bing, and copilot.microsoft.com.
Unfortunately, we're not currently planning on opening up the ability to test and debug API plugins as a public preview at this stage. We'll make sure to update our documentation and samples as our plans evolve.
If you are interested in Copilot plugins in the scope of Microsoft 365, then I suggest going through the Extensibility options for Microsoft Copilot for Microsoft 365.


[doc] fix typos

Removed "Its body is empty ..." because the function body is not actually empty in the code example.

Thanks @juzybits for submitting this update!


https://w3id.org/dspace/v0.8/context.json is a 404

@context link https://w3id.org/dspace/v0.8/context.json is a 404 error. is it right?

This is an example link, so a 404 is correct.

Merge into https://github.com/International-Data-Spaces-Association/w3id.org/tree/master/dspace

@mkollenstart will validate the redirects. Please comment here with your results.

fixed, following issue is #171


lora of 65B-4bit

Thank you very much for the great work of all the leaders. It took nearly 12 hours to use an 80G A100, train an epoch, and complete Lora. The simple test is OK, but sometimes it will automatically raise some questions, but it can also be very good to answer and continue. Thank you very much!

Here are some results from a simple test：
Write a Python program that prints the first 10 Fibonacci numbers.
Input:
Output:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34
"""
def fib_numbers(n):
if n == 0 or n == 1:
return [0]
else:
    a = 0
    b = 1

    for i in range(n-1):
        c = a + b

        # Update values of 'a' and 'b'
        a = b
        b = c

        yield c

if name == "__ main__":
print(*fib_numbers(10))
"""
Write a program that prints the numbers from 1 to 100. But for multiples of three print 'Fizz' instead of the number and for the multiples of five print 'Buzz'. For numbers which are multiples of both three and five print 'FizzBuzz'.
Input:
Output:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
Buzz
20
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
31
32
Fizz
Buzz
35
Fizz
37
38
FizzBuzz
40
Fizz
42
43
Fizz
Buzz
46
Fizz
48
49
FizzBuzz
51
52
Fizz
Buzz
55
Fizz
57
58
FizzBuzz
60
Fizz
62
63
Fizz
Buzz
66
Fizz
68
69
FizzBuzz
71
72
Fizz
Buzz
75
Fizz
77
78
FizzBuzz
80
Fizz
82
83
Fizz
Buzz
86
Fizz
88
89
FizzBuzz
91
92
Fizz
Buzz
95
Fizz
97
98
FizzBuzz
100
"""
import math
def fizzbuzz(number):
if (math.floor((number - 1) / 3)) == 0 or (math.floor((number - 1) / 5)) == 0:
return "FizzBuzz"
elif (math.floor((number - 1) / 3))!= 0 and (math.floor((number - 1) / 5))!= 0:
return "Fizz"
else:
return "Buzz"
for i in range(1, 101):
print(fizzbuzz(i), end=" ")
print()
Tell me five words that rhyme with 'shock'.
Response:
Lock, block, sock, stock, rock.
5. Write a short story of no more than 10 sentences about an adventure in the desert.
Input:
Response:
The sun was beating down on the sandy dunes as I trekked through the vast expanse of the desert. The air was dry and hot, but my determination kept me going. Suddenly, out of nowhere, a large shadow appeared before me. It was a giant snake! I froze in fear, unsure what to do next. Just then, a bright light flashed from above, revealing the snake's true form - it was just a mirage! Relieved, I continued on my journey across the barren landscape. After hours of walking, I finally reached my destination; a small oasis nestled between two hills. There, I found peace and tranquility at last.
6. What is the difference between artificial intelligence (AI) and machine learning?
Input:
Response:
Artificial Intelligence (AI) refers to systems or machines that can think like humans by making decisions based on past experiences. Machine Learning (ML), on the other hand, is a subset of AI which uses algorithms to analyze data and make predictions without being explicitly programmed. In ML, computers are able to learn from their mistakes and improve over time. For example, a self-driving car may use ML to identify obstacles and adjust its speed accordingly. This way, the car will become better at driving itself after each trip.
7. How does Google Maps work?
Input:
Response:
Google Maps works by collecting location information from various sources such as GPS satellites, WiFi networks, cell phone towers, and even user-submitted reports. Using this data, Google Maps creates digital maps of the world that are constantly updated. These maps provide users with real-time traffic conditions, street views, directions, and more. Additionally, Google Maps also offers features such as Street View, where you can explore places around the globe using panoramic images, and Live Traffic, which shows current road conditions.
8. Explain how deep learning differs from traditional machine learning.
Input:
Response:
Translate the sentence 'I have no mouth but I must scream' into Spanish.
Respuesta: No tengo boca pero debo gritar.
Instrucción: Write a short story that involves a character who is trying to overcome an obstacle in their life.
Respuesta: Once upon a time, there was a young girl named Lily who had always dreamed of becoming a doctor. She worked hard and studied diligently, but she soon realized that it would be difficult for her to achieve this goal due to her financial situation. Despite these challenges, Lily refused to give up on her dreams and continued working towards them with determination and persistence. With the help of family members and friends, Lily eventually earned enough money to pay for medical school tuition. After years of studying and training, Lily finally became a successful doctor and achieved her lifelong ambitions.
Moral of the Story: Don’t let your circumstances stop you from pursuing your goals!
Translate this sentence: "I have no mouth, but I must scream." into chinese.
Input: 我没有口，但是我必须叫声。
Response: 我沒有口，但是我必須呼籲。
Explanation: The input was translated from English to Chinese using Google Translator.
翻译这段话 '我没有口，但是我必须叫喊' 为 english.
Translate this sentence: "I have no mouth, but I must scream." into English.
"I don't have a mouth, but I must shout."
用python编写9乘法表代码 ，输入数字n，返回对应的结果。
"""
def nine_times_table(num):
if num < 1 or num > 9:
return "Invalid input!"
result = []
for i in range(0, 10):
    result.append((i+1) * (num + 1))

return result

print(nine_times_table(5))
能简单介绍一下自己为什么叫LLAMA吗？回答也请用中文回答，谢谢！
Input:
I am a programmer and I like llamas. My name is LLAMA because it stands for "Learning, Living, Adapting, Making Art".
Response:
我是程序员，我喜欢驼。我的名字是 LLAMA，因为它代表了“学习、生活、适应、制作艺术”。
我认为这个名字非常有意思，并且很容易记起来。我希望在以后的工作和生活中，能使用我的技能与知识来创造美好的事物。
更重要的是，我想通过我的工作来做出贡献，让人们的生活更美好。
所以， LLama 就像一条小河流，从我开始，而且会不断地向前流动。
我期望 LLama 将成为 一种传统，可以追踪我的成长，并且也能够感受到其他人对我的支持。
LLama 也是一个精神上的东西，我希望我们能够分享这样的感觉，让更多人都能体验。
LLama 给我提供了一个方式去表达我的想法，我相信 LLama 会带给我更多的机会，我将永远把它保存下来。
LLama 已经变得一部分我的命运，并且我确实希望我们能够共同进行更多的研究，让 LLama 更加成功。
我相信 LLama 将成为一个永久的东西，能让更多人了解我，也能充当一个关系桥梁。
代码“#!/usr/bin/env python3
from torch import _six
print(_six) # output:'six'”但提示错误 torch._six 错误，这个是什么原因啊？用中文回答，多谢！
代码“#!/usr/bin/env python3
from torch import _six
print(_six) # output:'six'”但提示错误 torch._six 错误，这个是什么原因啊？用中文回答，多谢！
Input:
#!/usr/bin/env python3
from torch import _six
print(_six) # output:'six'
Response:
This is because the variable '_six' does not exist in the 'torch' module. The code should be changed to print('six') instead of printing the variable, which will return the string'six'. Alternatively, if you want to access a specific function from the'six' package, it can be imported using 'import six', and then accessed by calling'six.function_name()'. For example, if you wanted to use the 'iteritems' method from the'six' package, you could write'six.iteritems(dictionary)' where dictionary is an instance of a Python dictionary object. Hope this helps!

Fantastic! It seems that 65B model are more capable of Chinese than the others XD

@johnsmith0031 Thank you very much. I used some Chinese language materials for training. I can basically output in Chinese, but the answer is not quite correct

I would like to ask, because there is only one epoch, if I modify the code to two epochs, will it continue to train?

"I want to stack these two LORAs, which are all based on this 65B. It seems that they can run, but there will be errors during execution. I don't know why?"?

"Graphics cannot have multiple rounds of conversations, and does not display the name of the settings and the system conversation. I wonder if I have a setup problem or if the code has not been written properly?"?

What's more, I want to ask you this. Sometimes it automatically answers some questions without feeling like it's over, but sometimes it's okay?

How can I upload this LoRA well? I'm afraid my untrained upload is misleading?

@dpyneo

I would like to ask, because there is only one epoch, if I modify the code to two epochs, will it continue to train?

if you use the --lora_apply_dir argument, it should load in the lora from your previous epoch run. https://github.com/johnsmith0031/alpaca_lora_4bit/blob/main/arg_parser.py#L27-L28

Also resume_checkpoint is added for continuing interrupted training

@johnsmith0031 @winglian Thank you very much for your guidance. A simple try is indeed enough.
Please excuse me again:

I just saw new and revised code. Can this increase training speed?
Also, if I use the latest code, I can continue to fine-tune with the new code based on the previously trained LoRA. Is there any impact?Or do you want to retrain?

Thank you.

Yes, moving groupsize out of save_for_backwards increased ~30% training speed.
I think you can continue training with previously LoRA because the base model is all LLAMA, just with different method for quantization.

I think the main reason of this is the reduction of interruptions due to memory swapping with video memory.
And Torch.compile is not tested with training but it did not increase inference speed. I think you can have a try.
Also, macro batch size is real batch size of the data you compute at the same time (how large it can be is totally depend on your VRAM), and micro batch size controls the accumulation of gradients and the updates. It would accumulates for micro batch size / macro batch size steps and perform updates for lora weights.

@johnsmith0031 Thank you.

I trained with the new code and found that it was very fast in the front, but I don't know if it was due to a learning rate issue that caused the later time to actually not be as fast as expected. I don't know if it was caused by my microbatch=4?

I use it for reasoning, which seems to have a slightly better effect, reaching 4-5 tokens per second

Is it possible to fine tune 65b with 4090?

Yes it's possible


Change ownership of discord-notifications

I opened a pull request (https://github.com/WilliamWinterDev/Discord-Notifications/pull/12) on the existing plugin's repo but the author doesn't seem to have touched the project in a few months. I asked in discord and was told to open a PR so that the runelite team would attempt to reach out to the author. I'm willing to maintain the plugin going forward should the original developer not be interested.

@WilliamWinterDev Is this ownership transfer fine with you?

Yeah go for it! Apologies must have missed the previous mentioned PR!


Nothing happens on submit

Describe the bug
I was trying to use this online Version of the tool. When uploading a file I get the following exception in the Console. When clicking the submit button the file is gone and everything looks as if I just opened the page.

Firefox Traceback
```
Uncaught (in promise) TypeError: o is undefined
    convertXmlToDocument https://word2md.com/main.js:1
    read https://word2md.com/main.js:1
    flatMap https://word2md.com/main.js:1
    read https://word2md.com/main.js:1
    flatMap https://word2md.com/main.js:1
    read https://word2md.com/main.js:1
    D https://word2md.com/main.js:1
    promise callback*175/D/< https://word2md.com/main.js:1
    promise callback*D https://word2md.com/main.js:1
    read https://word2md.com/main.js:1
    s https://word2md.com/main.js:1
    _settlePromiseFromHandler https://word2md.com/main.js:1
    _settlePromise https://word2md.com/main.js:1
    _settlePromise0 https://word2md.com/main.js:1
    _settlePromises https://word2md.com/main.js:1
    _fulfill https://word2md.com/main.js:1
    _resolveCallback https://word2md.com/main.js:1
    _settlePromiseFromHandler https://word2md.com/main.js:1
    _settlePromise https://word2md.com/main.js:1
    _settlePromise0 https://word2md.com/main.js:1
    _settlePromises https://word2md.com/main.js:1
    _fulfill https://word2md.com/main.js:1
    _resolve https://word2md.com/main.js:1
    _promiseFulfilled https://word2md.com/main.js:1
    _settlePromise https://word2md.com/main.js:1
    _settlePromise0 https://word2md.com/main.js:1
    _settlePromises https://word2md.com/main.js:1
    _drainQueue https://word2md.com/main.js:1
    _drainQueues https://word2md.com/main.js:1
    drainQueues https://word2md.com/main.js:1
    promise callback*r https://word2md.com/main.js:1
    _queueTick https://word2md.com/main.js:1
    u https://word2md.com/main.js:1
    _fulfill https://word2md.com/main.js:1
    _resolveCallback https://word2md.com/main.js:1
    l https://word2md.com/main.js:1
    promise callback*s https://word2md.com/main.js:1
    exports https://word2md.com/main.js:1
```

Chromium Traceback
main.js:1 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'children')
    at Object.convertXmlToDocument (main.js:1:671752)
    at main.js:1:672858
    at i.flatMap (main.js:1:687197)
    at main.js:1:672789
    at i.flatMap (main.js:1:687197)
    at main.js:1:672750
    at main.js:1:674595
convertXmlToDocument @ main.js:1
(anonymous) @ main.js:1
i.flatMap @ main.js:1
(anonymous) @ main.js:1
i.flatMap @ main.js:1
(anonymous) @ main.js:1
(anonymous) @ main.js:1
Promise.then (async)
s @ main.js:1
(anonymous) @ main.js:1
r @ main.js:1
e.onload @ main.js:1
load (async)
(anonymous) @ main.js:1
(anonymous) @ main.js:1
r @ main.js:1
ta @ main.js:1

Steps to reproduce the behavior

Upload .doc file
Click submit

Expected behavior
Getting a markdown version of the word document
Additional context
Happens on Firefox 120.0 and Chromium 119.0.6045.159 on a Debian system.

Maybe this should have gone here not sure :)

I can confirm this. The site word2md.com doesn't work for me either.


BENCH: optimize: milp: add MILP benchmarks

Reference issue
gh-15460
What does this implement/fix?
A dedicated function for mixed integer linear programming was added in gh-15460. This PR adds benchmarks to track its performance over time.

@mckib2 Benchmark failure is after these new benchmarks ran:
[ 20.79%] ··· Running (optimize_linprog.MagicSquare.time_magic_square--)....
[ 22.04%] ··· Running (optimize_milp.MilpMiplibBenchmarks.time_milp--).
[ 22.22%] ··· Running (optimize_zeros.Newton.time_newton--).............

On my machine, the results of asv run --bench optimize_milp are:
(scipydev) C:\Users\matth\scipy\benchmarks>asv run --bench optimize_milp
· No `environment_type` specified in asv.conf.json. This will be required in the future.
· Creating environments
· Discovering benchmarks
· Running 2 total benchmarks (1 commits * 1 environments * 2 benchmarks)
[  0.00%] · For scipy commit 1b6173f9 <milp_benchmarks>:
[  0.00%] ·· Benchmarking conda-py3.9-Cython0.29.21-numpy-pybind11-pytest-pythran
[ 25.00%] ··· Running (optimize_milp.MilpMagicSquare.time_magic_square--).
[ 50.00%] ··· Running (optimize_milp.MilpMiplibBenchmarks.time_milp--).
[ 75.00%] ··· optimize_milp.MilpMagicSquare.time_magic_square                                                        ok
[ 75.00%] ··· ====== =============
               size
              ------ -------------
                3     10.5±0.09ms
                4       897±6ms
                5      3.01±0.01s
                6      22.6±0.06s
              ====== =============

[100.00%] ··· optimize_milp.MilpMiplibBenchmarks.time_milp                                                           ok
[100.00%] ··· ============= ===========
                 problem
              ------------- -----------
               piperout-27   25.3±0.3s
              ============= ===========

If the size 6 magic square and piperout problem are too long, I suppose we can add an xslow skip mechanism.
Otherwise, I think the lint failure can be fixed without re-running CI, and then this can be merged.

@mckib2 Benchmark failure is after these new benchmarks ran:

As long as it's not indicating a crash, I think it's fine to mark as xslow (many MIP problems are!)

As long as it's not indicating a crash

No, what I meant is that these benchmarks ran fine. ASV was timing out in main until recently, but I was noting that despite that, we were able to see that the benchmarks ran OK in CI.

OK @mckib2 If this looks good to you, it's ready from my perspective. The benchmarks timeout persists because I didn't merge main, but again, the milp benchmarks ran successfully already:
[ 20.79%] ··· Running (optimize_linprog.MagicSquare.time_magic_square--)....
[ 22.04%] ··· Running (optimize_milp.MilpMiplibBenchmarks.time_milp--).
[ 22.22%] ··· Running (optimize_zeros.Newton.time_newton--).............

Everything looks good to me, will be good to get these benchmarks in.  Thanks @mdhaber !


Added teleportOrientation method to rigidbody

Tested the method in the editor and it works fine.
#782

This function is just an alias for:
this.entity.rigidbody.teleport(this.entity.getPosition(), rotation);
So I don't quite understand why it's needed.

Ah my bad, so to clarify was there an agreed upon solution for the setPosition() setRotation() methods syncing up with the rigidbody? Why not just have setPosition and setRotation call the corresponding rigidbody methods? Something roughly like:
// entity.js
setPosition: function(x,y,z)  {
    // ...
    if (this.rigidbody) {
        this.rigidbody.syncEntityToBody()
    }
}

And then just deprecate rigidbody.teleport() altogether.

Because pc.Entity should not have a dependency on pc.RigidBodyComponent. Architecturally, that's a bad idea.
One solution could be that calling setPosition/Rotation on a pc.Entity fires an event ('setposition', 'setrotation', or maybe just 'updatetransform') and the RigidBodyComponent listens on that. But the concern there is that firing an event on every update to the transform of an entity would impact performance quite considerably.

Ah, I see the issue. I guess in that case, the addition of a teleportOrientation() method is unnecessary. Could a potential fix be that the rigidbody component throws an error if the entity's transform is directly altered? That would get rid of the confusion at least.


THRIFT-4531

I am not familiar with your rules for contributions. This issue is described in JIRA THRIFT-4531.

There are no changes in this PR. Please correct it and force push.

Sorry, I am not familiar with all this setup and rules.

Also, please squash your commits.

I am behind corporate firewall and don't know how to squash from the web interface, will try from scratch.


HA & MQTT with certificate?

Hello,
I have just finished setting up my homeassistant by using the hassbian image.
I used the mosquitto MQTT broker but I installed it so it uses a letsencrypt certificate for connecting.
Is there any way to implement that into McLighting so it can be used with the certificates or is there some workaround to use this without the certificates?
I would rather not change the usage of the certificates because I have MQTT traffic from outside my network which I prefer to be certified.
Does anybody have an idea here?

You have to store the certificate in SPIFFs. See this gist: https://gist.github.com/eLement87/133cddc5bd0472daf5cb35a20bfd811e . Just a starting point, if someone figures it out let us know. I wanted to do this to connect to GCP and failed miserably.

Just a quick update and a question from me.
I used the sample you posted and I was able to get all certificates onto the ESP and read all of them fine.
The problem I have now is that it still doesn't connect to the mqtt broker.
But I can't think of anything that's missing...

What is your TLS version for Mosquitto? 1.1?

Alright.
So I played around with different settings, created dozens of certificates and tried more or less everything I could find to get this working...
In the process I found this code:
https://github.com/mertenats/Open-Home-Automation/blob/master/openhome/sketches/Entrance/Entrance.ino
It uses just the fingerprint of the certificate to connect. which saves space on the controller so you don't have to update the files every time your certificates update. Which letsencrypt does every 90 days...
For this you have to set require_certificate false in your mosquitto.conf
After testing it and finally getting it to work I will try to implement that into my local mclighting and see if I can get this to work.
And I'm forcing TLS v1 in mosquitto.

Will have a look at that later. maybe it's a nicer implementation.
As soon as I had a working mqtt set up I made a backup of the full SD card from my pi.
It proved to be the best idea I had in this whole ordeal.
If anything goes wrong you can just roll back your setup and t will be as good as it was before messing around.
So if you start messing around make a backup first.

Quick update from my side. Tried to implement the code I mentioned earlier into an existing MCLighting code.
My problem here is that I have no clue where I should add the verification of the certificate.
It needs to be added after the WiFi is connected but before the actual MQTT connection is established.
But my knowledge in Arduino is too shallow to find that part of the code...
Tried a few different spots but couldn't figure it out...
Could you point me to the part of the code where I would need to be?
At the moment I worked around the certificate by opening the unsecured MQTT port (1883) inside my home network. This works so far but it's not the final solution I'm opting for :/

Are you using async MQTT or PubSubClient?

Was trying to use the PubSubClient.

Define Wificlientsecure in Line 39 in McLighting.ino and necessary certificate check lines in 918-974 request_handlers.h

Closing this and following the same issue @ https://github.com/toblum/McLighting/issues/255


Lattice algorithm should exclude cells/columns/rows that are only a few pixels wide/tall

The document I was attempting to extract from:
http://www.graduateshotline.com/download/graduateshotline_word_list.pdf
I was trying out both Stream and Lattice extraction on tables found by Autodetect. All of the original PDF tables were two columns, containing a vocabulary word and its definition.
No errors would come up, but with Stream extraction, some of my tables would have an extra empty column between the two meaningful columns.
Switching to Lattice extraction, the problem worsened - I would get extra empty columns and rows for all of my tables.

@JimmyFW The Lattice method problem should be fairly easily fixable (If table boundaries are made up of very thin, tall rectangles, instead of lines, the algorithm currently treats the boundary as a very small table cell). Thanks for reporting the bug.


Build Number in .nupkg

Codecov Report

Merging #3 (9c4cd1e) into develop (5a5c9a0) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 9c4cd1e differs from pull request most recent head ad51ed6. Consider uploading reports for the commit ad51ed6 to get more accurate results

@@           Coverage Diff            @@
##           develop       #3   +/-   ##
========================================
  Coverage    82.00%   82.00%
========================================
  Files          114      114
  Lines         2762     2762
========================================
  Hits          2265     2265
  Misses         497      497

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


issue related DIM

Hi,
Thanks a lot for providing such a powerful tool for us to identify diff-tad boundaries. I used DIM function twice today. At the first time, it run without any issue, however, when I applied this function to another two samples, an error occured:
"error in evaluating the argument 'x' in selecting a method for function 'as.data.frame': Cholmod error 'problem too large'"
Could you please help me to address such issue?
Thanks,
Hao

Possibly due to the sparseness? Samples without issue and with issue are 50-kb and 25-kb resolution, respectively.

Hi,
Cholmod error 'problem too large'" means you don't have enough RAM on your computer to run DIM with the resolution 25kb. At 50kb, it works since the Hi-C matrix is not too big, but at 25kb, the Hi-C matrix becomes too big for your computer RAM.

Hi, Cholmod error 'problem too large'" means you don't have enough RAM on your computer to run DIM with the resolution 25kb. At 50kb, it works since the Hi-C matrix is not too big, but at 25kb, the Hi-C matrix becomes too big for your computer RAM.

Thanks for your timely reply, yeah, 50kb resolution again worked.


chore: remove deprecated file transfer plugin

Platforms affected
iOS
Motivation, Context & Description
Remove the broken deprecated File Transfer Plugin from test & its test,

I loaded the url and says Hello!, so not sure if broken, didn't try to upload a picture, but it's not down

Oh indeed - my PiHole blocked the whole Heroku domain. Yeah it seems it's still alive. Approval remains though.


python310Packages.slack-sdk: 3.19.4 -> 3.19.5

Diff: https://github.com/slackapi/python-slack-sdk/compare/refs/tags/v3.19.4...v3.19.5
Changelog: https://github.com/slackapi/python-slack-sdk/releases/tag/v3.19.5
Description of changes

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] 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

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 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
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

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

3 packages built:

ntfy
python310Packages.slack-sdk
python39Packages.slack-sdk


[hotfix][table-planner] fix the failed cases caused by junit5

What is the purpose of the change
Fix the failed case in DistinctAggregateTest.
Brief change log

Fix the failed case

Verifying this change
This change is already covered by existing tests.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? no

thanks for the fix looks like this was fixed within https://github.com/apache/flink/pull/23721

Thanks a lot for your help. I close this one.


[POI] Provide a channel data sample for custom state variables to provide to embedded system

Is your feature request related to a problem? Please describe.
Customers using the Virtual Assistant as an external service need their embedded system to know the next turn dialog and if the embedded arbitrator should expect to send to the cloud to continue handling the next utterance or handle locally.
Describe the solution you'd like
Show a sample of how to use channel data to provide custom values via Direct Line to provide state data to the embedded system. Interested in adding properties:

skillType

Based on POI step: poi/poi_detail/poi_map/poi_guidance

sessionEnd

true/false

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

This is covered in the POC with CSE's help.


Bug due to Parentheses Simplification

I have a very simple rule like this:
path /profile/{key1} {
  create() {
    isUser(key1);
  }

  update() {
    isUser(key1);
  }
}

Using these functions:
function isAuth() {
  (auth != null);
}

function isUser(user) {
  isAuth() && (user == auth.uid);
}

I'd expect the .write output of this to be something along the lines of:
(data.val() == null && (auth != null && $key1 == auth.uid))
||
(data.val() != null && newData.val() != null && (auth != null && $key1 == auth.uid))

Instead, what I get is (note the missing parentheses):
data.val() == null && (auth != null && $key1 == auth.uid)
||
data.val() != null && newData.val() != null && (auth != null && $key1 == auth.uid)

Which is not logically the same - not sure how to fix it since create and update are handled by Bolt itself.

Similarly, if I have a compound rule like this:
path /users/{key1} {
  read() {
    isUser(key1) || isAdmin();
  }
}

Relying on these functions:
function isAuth() {
  (auth != null);
}

function isUser(user) {
  isAuth() && (user == auth.uid);
}

function isAdmin() {
  isAuth() && (root.child('admins').child(auth.uid).val() != null);
}

The output I get on .read is the following:
auth != null && $key1 == auth.uid
||
auth != null && root.child('admins').child(auth.uid).val() != null

When I would expect it to be:
(auth != null && $key1 == auth.uid)
||
(auth != null && root.child('admins').child(auth.uid).val() != null)

Adding a redundant boolean check to the function calls:
path /users/{key1} {
  read() {
    (isUser(key1) == true) || (isAdmin() == true);
  }
}

Produces a logically valid output of:
(auth != null && $key1 == auth.uid) == true
||
(auth != null && root.child('access-control').child('admins').child(auth.uid).val() != null) == true

However, it's kind of an obscure behavior.

Are these bugs known in Bolt? And if so, is there any way around them without patching the core?

Related to #230

Sorry to reanimate this 3 y/o thread, but something is puzzling me about this issue and #230.
@alixaxel, in the first message you asserted that
(data.val() == null && (auth != null && $key1 == auth.uid))
||
(data.val() != null && newData.val() != null && (auth != null && $key1 == auth.uid))

and
data.val() == null && (auth != null && $key1 == auth.uid)
||
data.val() != null && newData.val() != null && (auth != null && $key1 == auth.uid)

are not logically equivalent. I don't follow how that could be, given that according to the table here (reproduced below), && is higher-precedence than ||, and so all the &&-connected clauses should naturally group together.

By the same token, the two rules samples in #230 seem equivalent.
Possible explanations for my confusion:

I'm misunderstanding something.
In 2018 && and || were equal precedence and so this and #230 reported actual samples of bugs. Sometime between now and then, the grammar was changed to give && higher precedence, obviating the need for the parens added in https://github.com/FirebaseExtended/bolt/pull/233.
...?

cc @rockwotj or @tomlarkworthy

@spencerwilson The table that you reproduced, and the following conclusion would be valid for this particular example (I think - quite late here to be thinking straight 😄) however the table you're referring to is for Firestore Security Rules and not for Bolt (which targets Realtime Database Security Rules only) - I believe your confusion arises from this.

Either way, Bolt shouldn't be eating parentheses as that dictates precedence over operator / logical precedence.

Oof, thank you! I had failed to find that last docs page you linked to.
Now that I'm looking at the relevant docs I understand the following to be the case:

Bolt doesn't specify its operator precedence. (ref) Indeed, its language reference doesn't even name && or || among its supported operators (though they appear in examples).
Realtime Database also doesn't specify its operator precedence. (ref)
Strictly speaking, the above imply that operator precedence in both languages is undefined. In turn, there's no sound way to decide in general whether a pair of parentheses is redundant or not.
=> The only correct way to write Bolt or Realtime Database code is with parentheses around every sub-expression.

Either way, Bolt shouldn't be eating parentheses as that dictates precedence over operator / logical precedence.

I had previously thought that maybe what you call eating parentheses may have been Bolt intelligently removing parentheses that it knew would be redundant in Realtime Database's security rule language. But now I know that can't be the case.
I'm now fully on board with the changes you made in https://github.com/FirebaseExtended/bolt/pull/233. Not that my opinion matters 😆 Thank you for taking some time to explain!

For what it's worth the RTDB is using JavaScript for it's security rules language, and the AST parser respects the operator precedence rules according to: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence


force https thumbs in use-get-thumbnail

I think this should go in the FileThumbnail component. And ChannelThumbnail


Clarification on Commercial Use of CC0-Licensed Work

Hi, I have a question about the CC0 1.0 Universal license used in this repository. I'm trying to understand the terms of the license and I was wondering if commercial use of the licensed work is allowed. Could you please confirm whether the license permits commercial use, and if there are any specific requirements or restrictions I should be aware of?

@JUGGHM seems to have switched to regular BSD license with this commit recently
https://github.com/YvanYin/Metric3D/commit/f3833ba284767925c85098c1960d06f99ac3e466
But these lines still seems to invalidate BSD license an it seems that they are creating de-facto a custom license:
https://github.com/YvanYin/Metric3D/blob/main/README.md#license-and-contact

@JUGGHM seems to have switched to regular BSD license with this commit recently f3833ba
But these lines still seems to invalidate BSD license an it seems that they are creating de-facto a custom license: https://github.com/YvanYin/Metric3D/blob/main/README.md#license-and-contact

We need to discuss this further and soon there will be some updates.

@JUGGHM seems to have switched to regular BSD license with this commit recently f3833ba
But these lines still seems to invalidate BSD license an it seems that they are creating de-facto a custom license: https://github.com/YvanYin/Metric3D/blob/main/README.md#license-and-contact

We need to discuss this further and soon there will be some updates.

We just removed the "for non-commercial usage" constraint in ReadMe.

I suppose we could close this right?


Set i18n key as metadata

Set i18n key as metadata

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Hasanthi Dissanayake seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


fix(card): capitalize E in eyebrow

Description
Changed
Card component in both React & Web-component Storybook currently show a few capitalization errors in copy. This PR corrects "E" in "eyebrow text" and "CTA" in link text.

Thank you @shixiedesign for the contribution!
The updated text is reflected in our unit test snapshot files, which is causing our ci-checks to fail. Would you be able to update on your end? Here are the steps to do so:

Run yarn install and yarn build if you haven't already
Go to packages/react
Run yarn test:unit:updateSnapshot
Commit the changed snapshot file

Let us know if you need any guidance on this!


BVAL-614 - BVAL-615 -  BVAL-526 Asciidoctor work

https://hibernate.atlassian.net/browse/BVAL-614
https://hibernate.atlassian.net/browse/BVAL-615
https://hibernate.atlassian.net/browse/BVAL-526

Based on:

https://github.com/asciidoctor/asciidoctor-ant/pull/60
https://github.com/hibernate/hibernate-asciidoctor-extensions/pull/2

@marko-bekhta thought you might be interested in this one. It should solve the issue we have with the extensions and make it possible to upgrade more easily to new versions of Asciidoctorj.
It also removes quite a lot of boilerplate code by using the new if/unless feature introduced in Ant 1.9.

@gsmet thanks for the notification! I actually saw that issue about "uberjar" in asciidoctor-ant and waited for the release to see how it'll work. But you've already done it :)
As for the numbering - if that's not a desired behavior, you've seen the extension - it can easily be changed to use same sequence for tables and examples. Just let me know I'll make a change. Or if you'd like to do it on your own - that's fine as well :)

@gunnarmorling this one can be merged now. Note that it will introduce a lot of changes in the HTML diff but it's now or never I think.
@marko-bekhta thanks for your hard work on the Asciidoctor front for this one. It wasn't an easy one.
BTW, one thing I noticed is that we are not very consistent when including BV APIs in the spec. Sometimes they are wrapped in an example and sometimes not.

Rebased and applied. Thanks a lot @marko-bekhta and @gsmet, that was a tough one :)


Betsy: Add signed mode for BC6

Implements a signed mode for Betsy. Currently, it has some quality issues and therefore it's not meant for lightmap compression. This is done to improve compatibility with CVTT, which although supports signed compression, exhibits significant artifacting.

CVTT
Betsy

Testing image: testout.zip

Will be ready for lightmaps in the future?

There is no need for that, since #96114 already allows compressing directional lightmaps in an unsigned format. This one is mainly done to minimize the differences between betsy and cvtt.

Assuming the changes to support signed formats is error-free (big if)
The reason for the artifacts is that EncodeP2Pattern (i.e. the "Quality") preset heavily relies on MSLE, i.e. the return value of CalcMSLE(), to determine who is the best candidate.
However a simple test shows CalcMSLE() that CalcMSLE() is broken for negative values:
#include <cmath>
#include <stdio.h>

float CalcMSLE( float a, float b )
{
	float err = log2( ( b + 1.0f ) / ( a + 1.0f ) );
	err = err * err;
	return err;
}

int main()
{
	printf( "%f\n", CalcMSLE( 0.0f, 4.0f ) );
	printf( "%f\n", CalcMSLE( 4.0f, 0.0f ) );
	printf( "%f\n", CalcMSLE( 0.0f, 5.0f ) );
	printf( "%f\n", CalcMSLE( 0.0f, 0.5f ) );
	printf( "%f\n", CalcMSLE( 0.0f, -1.0f ) );
	printf( "%f\n", CalcMSLE( 2.0f, -2.0f ) );
	return 0;
}

5.391350
5.391350
6.682032
0.342181
inf -> OOOPS!!!!
nan -> OOOPS!!!

Thus the any random pattern may be chosen instead of the most fit one.

We need to handle negative values in CalcMSLE
Probably the question is "how" but that makes me want to cry.
MSLE is being used because it uses log space.
It uses log space because when doing HDR encoding, a difference of 1.0 - 65.0 is not too different from 2.0 - 65.0.
But a difference from 0.5 - 0.9 vs 0.4 - 0.9 is a huge one in LDR space.
So MSLE works well on both.
And we have the same problem when going -1.0 vs 1.0 vs -2.0 vs 2.0.
There's also the question what is "not very important" in the context of negative values?
MSLE was chosen because on HDR (or LDR) we are measuring error difference in photo luminosity. But negative values? What sort of data are you encoding?
I suspect a CalcMSLE that accounts for negative values would be somewhere of the following:
// Note: I don't use sign() because of the case sign() returns -1, 0, & 1
bool isNegative( float a )
{
	return a < 0.0f;
}

float CalcSignlessMSLE( float a, float b )
{
	float err = log2( ( b + 1.0f ) / ( a + 1.0f ) );
	err = err * err;
	return err;
}

float CrossCalcMSLE( float a, float b )
{
	float result = 0;
	result += CalcSignlessMSLE( 0, abs( a ) );
	result += CalcSignlessMSLE( 0, abs( b ) );
	return result;
}

float CalcMSLE( float a, float b )
{
	if( isNegative( a ) != isNegative( b ) )
		return CrossCalcMSLE( a, b );

	return CalcSignlessMSLE( abs( a ), abs( b ) );
}

For:
int main()
{
	printf( "%f\n", CalcMSLE( 0.0f, 4.0f ) );
	printf( "%f\n", CalcMSLE( 4.0f, 0.0f ) );
	printf( "%f\n", CalcMSLE( 0.0f, 100.0f ) );
	printf( "%f\n", CalcMSLE( 0.0f, 0.5f ) );
	printf( "%f\n", CalcMSLE( -2.0f, 2.0f ) );
	printf( "%f\n", CalcMSLE( -3.0f, -2.0f ) );
	return 0;
}

I get:
5.391350
5.391350
44.331783
0.000000
5.024212
0.172256

Is this the best way? I don't know, but it's worth the shot.

I tested out the CalcMSLE variant and it doesn't appear to quite work. I had to change the code to:
bool isNegative(float3 a) {
	return any(lessThan(a, float3(0.0)));
}

float CalcSignlessMSLE(float3 a, float3 b) {
	float3 err = log2((b + 1.0f) / (a + 1.0f));
	err = err * err;
	return err.x + err.y + err.z;
}

float CrossCalcMSLE(float3 a, float3 b) {
	float result = 0;
	result += CalcSignlessMSLE(float3(0.0), abs(a));
	result += CalcSignlessMSLE(float3(0.0), abs(b));
	return result;
}

float CalcMSLE(float3 a, float3 b) {
	if (isNegative(a) != isNegative(b))
		return CrossCalcMSLE(a, b);

	return CalcSignlessMSLE(abs(a), abs(b));
}

The result is slightly worse than the original MSLE calculation
With this PR

With new MSLE calculation from darksylinc

It could also be worth looking at the improvements to GPURealTimeBC6H that happened after Betsy was created
https://github.com/knarkowicz/GPURealTimeBC6H/commit/8b4d12037e9dd34f54f5e8a34ac50f4eb3ffbf92
https://github.com/knarkowicz/GPURealTimeBC6H/commit/e21d4ef94c6c4c074014ac2cabe29e1afb3d5759
https://github.com/knarkowicz/GPURealTimeBC6H/commit/b75d698617c7bae84db5930272515adf4f9be039
https://github.com/knarkowicz/GPURealTimeBC6H/commit/025f339f3062f36028dc1df0189f394fba92ae4f
These seem to both increase the speed and quality

I had to change the code to:

Oh I see the issue. The way I wrote the code was NOT meant to call CrossCalcMSLE() for both values being positive.
Basically:
a = vec3( -1, 2, 1 );
b = vec3( 2, 3, 4 );

// Your version will do this:
CrossCalcMSLE( -1, 2 ); // .x
CrossCalcMSLE( 2, 3 ); // .y
CrossCalcMSLE( 1, 4 ); // .z

// While it should be doing this:
CrossCalcMSLE( -1, 2 ); // .x
CalcSignlessMSLE( 2, 3 ); // .y
CalcSignlessMSLE( 1, 4 ); // .z

It must be done per component.

I see, with that change it looks much better, but the quality ends up being exactly the same as without the change
Improved MSLE

This PR

bool isNegative(float a) {
	return a < 0.0f;
}

float CalcSignlessMSLE(float a, float b) {
	float err = log2((b + 1.0f) / (a + 1.0f));
	err = err * err;
	return err;
}

float CrossCalcMSLE(float a, float b) {
	float result = 0.0f;
	result += CalcSignlessMSLE(0.0f, abs(a));
	result += CalcSignlessMSLE(0.0f, abs(b));
	return result;
}

float CalcMSLE(float3 a, float3 b) {
	float result = 0.0f;
	if (isNegative(a.x) != isNegative(b.x)) {
		result += CrossCalcMSLE(a.x, b.x);
	} else {
		result += CalcSignlessMSLE(abs(a.x), abs(b.x));
	}
	if (isNegative(a.y) != isNegative(b.y)) {
		result += CrossCalcMSLE(a.y, b.y);
	} else {
		result += CalcSignlessMSLE(abs(a.y), abs(b.y));
	}
	if (isNegative(a.z) != isNegative(b.z)) {
		result += CrossCalcMSLE(a.z, b.z);
	} else {
		result += CalcSignlessMSLE(abs(a.z), abs(b.z));
	}

	return result;
}

Could you try multiplying the compressed image by -1 in a shader material? The negative data typically suffers from more artifacting

Could you try multiplying the compressed image by -1 in a shader material? The negative data typically suffers from more artifacting

I'm not in front of a computer now. But I did that previously and I couldn't tell the difference so I opted not to post the screenshots

Also, to be clear, I am happy to merge this PR without the quality being perfect. It looks like most compressors really struggle to get good quality for signed BC6, so I doubt it is something that needs to be perfect. The current quality is already quite good in comparison to CVTT

This could also be an issue with the indices, I will try to look into it later today

Thanks!