Clean up frontend code to use permission-check logic that matches the logic of the rust backend (ie. based on access-policies consistently, rather than just is-user-creator-or-mod checks)

Background: Debate Map is designed where all permission checks are confirmed on the server side -- naturally, in order to ensure the caller cannot bypass permission checks by modifying the frontend code. However, the frontend also wants to be doing (at least some of) these checks itself, so that, eg. it can gray-out (or hide) actions that the user does not have permission to execute anyway. The problem is that currently these frontend checks are not the same as the backend checks for quite a few actions.
Task, basic idea: Update the frontend's permission checks to match with the backend's.
Implementation of this task might take some design thought though, as there is not a formal organization atm for how to keep the permission-checks in-sync between the frontend and backend. For example, the backend has permission-check asserts that are interspersed with the code that actually applies a given command. Someday I might come across a nice design that will allow the permission-checks to actually use the same code on both frontend and backend (eg. by compiling the rust permission-checks to WebAssembly, that can then be called from the frontend locally), but that's probably out of scope for now.
So for now, re-implementation of the backend's checks on the frontend is probably most practical. However, there may still be some implementation pattern / convention that could be followed to make it easier to ensure the logic remains in sync.
So far I've done a bit of work in this direction by using a comment notation of "sync:rs" or "sync:js" to at least signal that a given function has an implementation in the other codebase that should be kept in sync. Example:
// sync:rs
export const IsRootNode = CreateAccessor((node: NodeL1)=>{
	if (node.type != NodeType.category) return false;
	const parents = GetNodeLinks(undefined, node.id);
	if (parents.length != 0) return false;
	return true;
});

// sync:js
pub async fn is_root_node(ctx: &AccessorContext<'_>, node: &Node) -> Result<bool, Error> {
	if node.r#type != NodeType::category {
		return Ok(false);
	}
	let parents = get_node_links(ctx, None, Some(node.id.as_str())).await?;
	if parents.len() != 0 {
		return Ok(false);
	}
	Ok(true)
}

However, for the case of permission-checks specifically, we probably want a more formal "1 to 1" organization for keeping them in-sync between the frontend and backend.
You can find the server-side core permission checks all defined in this file: https://github.com/debate-map/app/blob/main/Packages/app-server/src/db/_shared/table_permissions.rs#L170
So the frontend should probably have a single file named "TablePermissions.ts", which tries to match the format used in the rust equivalent as much as possible. (and the two files can have an explicit comment at the top mentioning how these two files should be kept in sync)

In terms of finding the existing permission-check logic on the frontend to update, basically just do a global search in VSCode for the string IsUserCreatorOrMod(. Basically, the old permission model was very simple in that you are able to edit/delete if you are the owner OR if you are a moderator -- otherwise you can't make any changes.
The new permission model extends the basic logic above, by ALSO allowing edit/delete/etc if...

The "access policy" attached to the target object has base permissions that allows anyone to edit/delete it, OR...
The policy has a user-specific override that gives the acting user permission to edit/delete.

(see the table_permissions.rs file linked above for full details)
Note that the file above only contains the permission checks; there are of course some other checks that are specific to some commands that verify other sorts of things (eg. even if you have "permission" to delete a node, you cannot actually do so unless all its children are unlinked or deleted, to prevent node "orphaning"). While someday we want the frontend to fully match the backend for both permission and integrity checks, this task is focused only on getting the permission-checks inline between the two codebases. (anyway, most of the integrity checks are already synchronized)

Closed by PR #344.


Terminal: wrong output under tmux

Description
On macOS, if both Alacritty and iTerm2 are installed, and you run tmux in your Alacritty window, neofetch will report Terminal as being iTerm2.
Neofetch version
[!] Neofetch version: 6.0.0
Screenshot

Output of echo $TERM_PROGRAM in each window.

A verbose log (as required for issues) would be helpful too.

Empty in plain alacritty, iTerm.app in tmux. Odd 🤔 tmux.conf doesn't contain anything that would refer to iTerm.
Logs for both:
https://gist.github.com/Walther/a63455aefab6d04f8593be5842fa2602

I don't think this is a Neofetch issue then. For some reason your system is setting the environment variable to an incorrect value.

Possibly related: https://github.com/jwilm/alacritty/issues/781

This could be an issue with your ZSH configuration. Have you tried disabling your ZSH config?

Ahh, figured it out - sorry, my bad! I had another tmux session running from a previous iTerm, launching tmux from Alacritty ended up just adding & drawing a new window - and in that session, the $TERM_PROGRAM env var had been populated by iTerm.
Classic PEBKAC, sorry!


Can't claim drops automatically

You can run the program normally and get the drops, but you can't claim it automatically, you need to manually log in to twitch to claim it

With the updates on new headless Chromium, drops can now be claimed automatically.


vlc: fix headphones mode; libspatialaudio: init at 0.3.0

Motivation for this change
The binauralizer aout filter is currently missing, causing menu option "Audio -> Stereo Mode -> Headphones" to log an error and fall back to original audio. It depends on libspatialaudio which is added in this commit, and a "Head-Related Transfer Function" file that's skipped by make install.
Things done

Built on platform(s)

[x] 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

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

[x] Fits CONTRIBUTING.md.

There are some trivial suggestions.

Thanks, I'll fix it.

I successfully built vlc but not sure how to test it. I only have these modes in Audio -> Stereo Mode.

Seems that's what the menu looks like if you don't open material with surround sound. You should see all the available modes in Settings under Audio -> Stereo audio output mode after selecting showing All settings. Here are some files to test with.

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

4 packages marked as broken and skipped:

libsForQt512.elisa
libsForQt512.phonon-backend-vlc
libsForQt514.elisa
libsForQt514.phonon-backend-vlc

1 package failed to build:

obs-studio-plugins.obs-ndi

28 packages built:

arcan.all-wrapped
arcan.arcan
arcan.arcan-wrapped
arcan.durden-wrapped
arcan.pipeworld-wrapped
arcan.prio-wrapped
arcan.xarcan
kaffeine
libsForQt5.elisa (libsForQt515.elisa ,plasma5Packages.elisa)
libsForQt5.phonon-backend-vlc (libsForQt515.phonon-backend-vlc ,plasma5Packages.phonon-backend-vlc)
libspatialaudio
libvlc
megaglest
minitube
obs-studio
obs-studio-plugins.looking-glass-obs
obs-studio-plugins.obs-gstreamer
obs-studio-plugins.obs-move-transition
obs-studio-plugins.obs-multi-rtmp
obs-studio-plugins.obs-nvfbc
obs-studio-plugins.obs-websocket
obs-studio-plugins.wlrobs
pympress
python38Packages.python-vlc
python39Packages.python-vlc
reaper
strawberry
vlc (vlc_qt5)


Make sure nodes don't hammer each other even when reserved

Right now, when node A has node B as reserved, node A will try really hard to open a substream to node B.
Even if node B refuses the substream, node A will almost immediately try again. This results in a spam of substream open attempts, which unnecessarily uses bandwidth and CPU.
If we have a lot of reserved nodes, for example because of the collation and validation substreams in Polkadot, and most of them refuse the substream, this spam can be considerable. They're not supposed to refuse the substream in normal situations, but with our recent revert to 0.8.30, they do in practice.
This PR adds a 10 seconds "ban" during which we don't try to re-open a substream after it has failed to open, even if the node is reserved.

Indeed, I changed it to a random 5 to 10 seconds interval. We actually use randomness everywhere else already.

bot merge

Why a fixed or random back off instead of a progressively larger one?

I foresee this potentially causing some issues with collator networking. If a validator initially refuses a connection from a collator due to a race in when they see the next relay chain block, then the collator won't attempt to connect for 10 seconds. That may lead to unnecessary gaps in the parachain.

@burdges, @rphmeier, as I see both or your suggestions can be fixed with an exponential backoff starting from, e.g. a rand 1-2s, insreasing by a multiplier of 2^N?

If a validator initially refuses a connection from a collator due to a race in when they see the next relay chain block

Validators never refuse substream from collators unless they're full.
They could accept the substream and then immediately close it, but that's a different code path.

Ok, that is true. The way that @Lldenaurois is designing the collator protocol is to maintain a peer-set which is larger than the actual reservoir of peers we accept. As we add PreVF logic we'd need to maintain that guarantee, so we don't reject connections outright.


Help needed with Multipart upload

I have been using OAuthSwift for some time successfully to read data from meetup.com.  I can also do some simple .POST (eg comments upload).....but I am stuck on how to do Photo Upload.
Can you show some sample code for the MultiPart upload  and/or give any tips/suggestion for how to use OAuthSwift for this endpoint:  https://www.meetup.com/meetup_api/docs/2/member_photo/#create
OAuth Provider (Twitter, Github, ..):  meetup.com
OAuth Version:

[ XX] Version 2

OS (Please fill the version) :

[x] iOS :

Installation method:

[X ] CocoaPods

Library version:

[X ] head

Xcode version:

[X ] 8.0 (Swift 3.0)

I am sure how to achieve this, I don't use this functionality.
let fileData = OAuthSwiftMultipartData(name: "photo", data: data, fileName: fileName, mimeType: mimeType)
let multiparts = [fileData]
client.postMultiPartRequest(urlString, method: .post, multiparts: multiparts)

data is `Data' from file
if you can find mime type, put nil
I don't know if you can pass other parameters using parameters dictionary
For other parameters, try to put it in query

Thanks!  That is what I needed.  The answer was staring me in the face!  The error message that I was getting was that field "photo" was required....but I could not think where to put it and then I realised that this is what the "name" parameter should be.   All working fine.  Thanks again


display author per post

Hey :)
I have the following configuration in my posts:
---
title: "TITLE"
author: "AUTHOR"
date: 2024-08-26T15:46:53+02:00
draft: false
---

**foo**

Our blog has multiple authors. Currently the author's name (AUTHOR) is not rendered.

How can I fix this?
Thanks!

Rendering author is not supported currently. I'll add such support.

I add configuration for showing author (see https://github.com/tomowang/hugo-theme-tailwind/blob/main/exampleSite/config/_default/params.toml#L11). This is default set to false.
You can set global author in site params as (name will be used)
[author]
  name = "Xiaoliang Wang"
  email =<EMAIL_ADDRESS>
and author in post will overwrite the global one.


bencrypt.py only supports python 3.8+

The module py_everything.bencrypt.py supports only python 3.8+ whereas the module supports python 3.6+.

The module used in bencrypt.py now supports python version 3.6 too

Great!


Update Configure-EnterpriseCA.ps1

Update Configure-EnterpriseCA.ps1
There are wrong characters in the first five parameters of the Install-AdcsCertificationAuthority cmdlet. Instead of the dash character we have a diamond with a question mark in VS Code and Notepad++.
Also when I hit edit in GitHub to propose the changes, the following message appeared:  We’ve detected the file encoding as windows-1252. When you commit changes we will transcode it to UTF-8.
The character displayed in GitHub's edit more is '–' instead '-'. I fixed it and proposing the change to be incorporated in this branch.
With regards

@arwidmark this looks like the conversion of characters may happen when the file is synced to the GitHub repository, depending the rules set.


broken on WAB 2.9 and up

This tool holds great promise. WAB can be very slow to load on older machines due to its complexity and I've heard of great results from this tool.
However:
-Does not work with a WAB DE 2.9 or 2.10 app  (esri TS confirmed)

Does not work with WAB 2.9 and env.js set to use API version 3.26.  I need to use 3.26 with the WAB 2.9 because of a serious bug I noted in WAB 2.9 that was fixed with API 3.26.  https://community.esri.com/thread/220202-bug-feature-popup-outline-is-mis-shapen-in-arcgis-online

Can it be updated to work with 2.9+ and to work with 2.9 on 3.26 API?
I even suggested on Esri forum they incorporate your script here officially. https://community.esri.com/ideas/15669-build-for-wab-doesnt-work-not-official-product-from-esri
Thank you!
Kevin

Thanks @kevinsagis ! I'm glad to hear of the feedback.   I have a couple of colleagues that have gotten the tool working at 2.9 and am going to look at rolling their code into master over the next couple of weeks.  It would be great if you could help us testing at the later versions!
We will be tracking any updates and notes on Issue #55 .

Hi George,
Thanks!!! Would love to help test.  Thank you again for releasing such a great tool and providing very thorough documentation.
Most important is I’ll have to use 3.26 API as noted, to correct for the severe popup bug I found in 3.25 / they fixed at 3.26. Do you think it will work with env.js set to one version ahead of the WAB?
Best,
Kevin
From: George Bochenek<EMAIL_ADDRESS>Sent: Thursday, October 18, 2018 10:07 AM
To: gbochenek/esri-wab-build<EMAIL_ADDRESS>Cc: Kevin MacLeod<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [gbochenek/esri-wab-build] broken on WAB 2.9 and up (#58)
Thanks @kevinsagishttps://github.com/kevinsagis ! I'm glad to hear of the feedback. I have a couple of colleagues that have gotten the tool working at 2.9 and am going to look at rolling their code into master over the next couple of weeks. It would be great if you could help us testing at the later versions!
We will be tracking any updates and notes on Issue #55https://github.com/gbochenek/esri-wab-build/issues/55 .
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/gbochenek/esri-wab-build/issues/58#issuecomment-431022442, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ADIH2MP6LPkdlo69C98CEL1UuqzXfcJ1ks5umIrtgaJpZM4Xop4c.

No guarantees on everything working with the version dump, but the build tool grabs the API version from env.js, so its worth a shot.


⚠ Bofrost.lu has degraded performance

In c9b75d1, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2298 ms

Resolved: Bofrost.lu performance has improved in be8e33c after 17 minutes.


issue 814 - Add binary content mode for NATS and JetStream protocols

Our team would like to use NATS jetstream with the cloud event-SDK. Currently binary mode is not implemented for the NATS jetstream protocol (https://github.com/cloudevents/sdk-go/issues/814).
This PR is an enhancement to support binary-mode in the NATS jetstream protocol.
Using a binary message writer implementing MessageMetadataWriter and BinaryWriter interfaces, the cloud event headers are passed as NATS headers.  The cloud event data is pass as NATS data.
Message implements the MessageMetadataReader interface.  Also the ReadBinary() method has been implemented.
One caveat:
Due to https://github.com/cloudevents/sdk-go/blob/main/v2/binding/write.go#L91, the default now would be Binary when the context is not set due to the third if statement.
Before adding this change, there was no binaryWriter defined, so the default would be Structured in the fourth if statement.
This can easily be controlled with WithForceBinary, WithForceStructured, WithSkipDirectStructuredEncoding, WithSkipDirectBinaryEncoding.
However, if no context was defined, then the default behavior is different.
I could check to see if the context is defined, but the context types are not exported in the binding package.
Let me know how to proceed if this change in behavior needs to be addressed differently.

rebase needed

One caveat:
Due to https://github.com/cloudevents/sdk-go/blob/main/v2/binding/write.go#L91, the default now would be Binary when the context is not set due to the third if statement.
Before adding this change, there was no binaryWriter defined, so the default would be Structured in the fourth if statement.

Is this still accurate when looking at this code?
// NewMessage wraps an *nats.Msg in a binding.Message.
// The returned message *can* be read several times safely
func NewMessage(msg *nats.Msg) *Message {
	encoding := binding.EncodingStructured
	if msg.Header != nil {
		if msg.Header.Get(contentTypeHeader) == cloudevents.ApplicationCloudEventsJSON {
			encoding = binding.EncodingStructured
		} else if msg.Header.Get(specs.PrefixedSpecVersionName()) != "" {
			encoding = binding.EncodingBinary
		}
	}
	return &Message{Msg: msg, encoding: encoding}
}

One caveat:
Due to https://github.com/cloudevents/sdk-go/blob/main/v2/binding/write.go#L91, the default now would be Binary when the context is not set due to the third if statement.
Before adding this change, there was no binaryWriter defined, so the default would be Structured in the fourth if statement.

Is this still accurate when looking at this code?
// NewMessage wraps an *nats.Msg in a binding.Message.
// The returned message *can* be read several times safely
func NewMessage(msg *nats.Msg) *Message {
	encoding := binding.EncodingStructured
	if msg.Header != nil {
		if msg.Header.Get(contentTypeHeader) == cloudevents.ApplicationCloudEventsJSON {
			encoding = binding.EncodingStructured
		} else if msg.Header.Get(specs.PrefixedSpecVersionName()) != "" {
			encoding = binding.EncodingBinary
		}
	}
	return &Message{Msg: msg, encoding: encoding}
}

The issue is not on the receive.  The issue is on the send.  The sender without the context explicitly set would send a structured message before this change.  Now the sender without a context set would send a binary message.  This is based on the behavior set forth in the binding struct.  It is easily controlled via the context.

@embano1 , I added an integration test for nats_jetstream because there didn't seem to have any.  I patterned it after the nats integration test, but added binary and structured messages.

@stephen-totty-hpe we are not using Go 1.18 w/ Generics yet. Can you please revert the mod related changes to dependencies not using Generics? Might have to use an older version of Go (1.17) to do that. Reason being that we state 1.17 as supported version/compatibility in this SDK for users.

@stephen-totty-hpe looks like we're good here :)
Just to confirm: are these the new integration tests you added? Can't really tell from the test names in the logs vs your _test names and wasn't sure what's causing these differences (perhaps coming from the test package used in this repo) https://github.com/cloudevents/sdk-go/actions/runs/6150446762/job/16689282592#step:5:454 (and ff)

Yes, there were no jetstream integration tests before this PR.  Now you should see:
--- PASS: TestSendReceiveStructuredAndBinary (0.18s)
AND
ok  	github.com/cloudevents/sdk-go/test/integration/nats_jetstream	0.216s	coverage: [no statements]
The NATS tests run the combination of:
Regular VS Queued
Structured VS Binary
Full Event VS Min Event
Version 0.3 vs Version 1.0
So you should see that 1 master test spawn 16 subtests.

Yeah, I think I'm seeing that
2023-09-11T19:14:50.0342500Z === RUN   TestSendReceiveStructuredAndBinary
2023-09-11T19:14:50.0343349Z === RUN   TestSendReceiveStructuredAndBinary/regular_subscriber_-_structured
2023-09-11T19:14:50.0344999Z === RUN   TestSendReceiveStructuredAndBinary/regular_subscriber_-_structured/Event{"specversion":"1.0","id":"full-event-0","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","dataschema":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exbool":true,"exint":42,"exstring":"exstring","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z"}
2023-09-11T19:14:50.0347027Z === RUN   TestSendReceiveStructuredAndBinary/regular_subscriber_-_structured/Event{"specversion":"0.3","id":"full-event-1","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","schemaurl":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","extime":"2020-03-21T12:34:56.78Z","exbool":true,"exint":42,"exstring":"exstring","exbinary":"AAECAw==","exurl":"http://example.com/source"}
2023-09-11T19:14:50.0348755Z === RUN   TestSendReceiveStructuredAndBinary/regular_subscriber_-_structured/Event{"specversion":"1.0","id":"min-event-2","source":"http://example.com/source","type":"com.example.MinEvent"}
2023-09-11T19:14:50.0349849Z === RUN   TestSendReceiveStructuredAndBinary/regular_subscriber_-_structured/Event{"specversion":"0.3","id":"min-event-3","source":"http://example.com/source","type":"com.example.MinEvent"}
2023-09-11T19:14:50.0350583Z === RUN   TestSendReceiveStructuredAndBinary/queue_subscriber_-_structured
2023-09-11T19:14:50.0352103Z === RUN   TestSendReceiveStructuredAndBinary/queue_subscriber_-_structured/Event{"specversion":"1.0","id":"full-event-0","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","dataschema":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z","exbool":true,"exint":42,"exstring":"exstring"}
2023-09-11T19:14:50.0354127Z === RUN   TestSendReceiveStructuredAndBinary/queue_subscriber_-_structured/Event{"specversion":"0.3","id":"full-event-1","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","schemaurl":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z","exbool":true,"exint":42,"exstring":"exstring"}
2023-09-11T19:14:50.0355450Z === RUN   TestSendReceiveStructuredAndBinary/queue_subscriber_-_structured/Event{"specversion":"1.0","id":"min-event-2","source":"http://example.com/source","type":"com.example.MinEvent"}
2023-09-11T19:14:50.0356468Z === RUN   TestSendReceiveStructuredAndBinary/queue_subscriber_-_structured/Event{"specversion":"0.3","id":"min-event-3","source":"http://example.com/source","type":"com.example.MinEvent"}
2023-09-11T19:14:50.0357196Z === RUN   TestSendReceiveStructuredAndBinary/regular_subscriber_-_binary
2023-09-11T19:14:50.0358703Z === RUN   TestSendReceiveStructuredAndBinary/regular_subscriber_-_binary/Event{"specversion":"1.0","id":"full-event-0","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","dataschema":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exstring":"exstring","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z","exbool":true,"exint":42}
2023-09-11T19:14:50.0360869Z === RUN   TestSendReceiveStructuredAndBinary/regular_subscriber_-_binary/Event{"specversion":"0.3","id":"full-event-1","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","schemaurl":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z","exbool":true,"exint":42,"exstring":"exstring"}
2023-09-11T19:14:50.0362491Z === RUN   TestSendReceiveStructuredAndBinary/regular_subscriber_-_binary/Event{"specversion":"1.0","id":"min-event-2","source":"http://example.com/source","type":"com.example.MinEvent"}
2023-09-11T19:14:50.0866915Z === RUN   TestSendReceiveStructuredAndBinary/regular_subscriber_-_binary/Event{"specversion":"0.3","id":"min-event-3","source":"http://example.com/source","type":"com.example.MinEvent"}
2023-09-11T19:14:50.0867729Z === RUN   TestSendReceiveStructuredAndBinary/queue_subscriber_-_binary
2023-09-11T19:14:50.0874197Z === RUN   TestSendReceiveStructuredAndBinary/queue_subscriber_-_binary/Event{"specversion":"1.0","id":"full-event-0","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","dataschema":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exbool":true,"exint":42,"exstring":"exstring","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z"}
2023-09-11T19:14:50.0876693Z === RUN   TestSendReceiveStructuredAndBinary/queue_subscriber_-_binary/Event{"specversion":"0.3","id":"full-event-1","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","schemaurl":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exint":42,"exstring":"exstring","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z","exbool":true}
2023-09-11T19:14:50.0878084Z === RUN   TestSendReceiveStructuredAndBinary/queue_subscriber_-_binary/Event{"specversion":"1.0","id":"min-event-2","source":"http://example.com/source","type":"com.example.MinEvent"}
2023-09-11T19:14:50.0879085Z === RUN   TestSendReceiveStructuredAndBinary/queue_subscriber_-_binary/Event{"specversion":"0.3","id":"min-event-3","source":"http://example.com/source","type":"com.example.MinEvent"}
2023-09-11T19:14:50.0880066Z --- PASS: TestSendReceiveStructuredAndBinary (0.18s)
2023-09-11T19:14:50.0880828Z     --- PASS: TestSendReceiveStructuredAndBinary/regular_subscriber_-_structured (0.05s)
2023-09-11T19:14:50.0883489Z         --- PASS: TestSendReceiveStructuredAndBinary/regular_subscriber_-_structured/Event{"specversion":"1.0","id":"full-event-0","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","dataschema":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exbool":true,"exint":42,"exstring":"exstring","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z"} (0.01s)
2023-09-11T19:14:50.0887367Z         --- PASS: TestSendReceiveStructuredAndBinary/regular_subscriber_-_structured/Event{"specversion":"0.3","id":"full-event-1","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","schemaurl":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","extime":"2020-03-21T12:34:56.78Z","exbool":true,"exint":42,"exstring":"exstring","exbinary":"AAECAw==","exurl":"http://example.com/source"} (0.01s)
2023-09-11T19:14:50.0889370Z         --- PASS: TestSendReceiveStructuredAndBinary/regular_subscriber_-_structured/Event{"specversion":"1.0","id":"min-event-2","source":"http://example.com/source","type":"com.example.MinEvent"} (0.01s)
2023-09-11T19:14:50.0891062Z         --- PASS: TestSendReceiveStructuredAndBinary/regular_subscriber_-_structured/Event{"specversion":"0.3","id":"min-event-3","source":"http://example.com/source","type":"com.example.MinEvent"} (0.01s)
2023-09-11T19:14:50.0891971Z     --- PASS: TestSendReceiveStructuredAndBinary/queue_subscriber_-_structured (0.04s)
2023-09-11T19:14:50.0894597Z         --- PASS: TestSendReceiveStructuredAndBinary/queue_subscriber_-_structured/Event{"specversion":"1.0","id":"full-event-0","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","dataschema":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z","exbool":true,"exint":42,"exstring":"exstring"} (0.01s)
2023-09-11T19:14:50.0898005Z         --- PASS: TestSendReceiveStructuredAndBinary/queue_subscriber_-_structured/Event{"specversion":"0.3","id":"full-event-1","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","schemaurl":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z","exbool":true,"exint":42,"exstring":"exstring"} (0.01s)
2023-09-11T19:14:50.1146773Z         --- PASS: TestSendReceiveStructuredAndBinary/queue_subscriber_-_structured/Event{"specversion":"1.0","id":"min-event-2","source":"http://example.com/source","type":"com.example.MinEvent"} (0.01s)
2023-09-11T19:14:50.1148451Z         --- PASS: TestSendReceiveStructuredAndBinary/queue_subscriber_-_structured/Event{"specversion":"0.3","id":"min-event-3","source":"http://example.com/source","type":"com.example.MinEvent"} (0.01s)
2023-09-11T19:14:50.1149697Z     --- PASS: TestSendReceiveStructuredAndBinary/regular_subscriber_-_binary (0.04s)
2023-09-11T19:14:50.1152432Z         --- PASS: TestSendReceiveStructuredAndBinary/regular_subscriber_-_binary/Event{"specversion":"1.0","id":"full-event-0","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","dataschema":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exstring":"exstring","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z","exbool":true,"exint":42} (0.01s)
2023-09-11T19:14:50.1155622Z         --- PASS: TestSendReceiveStructuredAndBinary/regular_subscriber_-_binary/Event{"specversion":"0.3","id":"full-event-1","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","schemaurl":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z","exbool":true,"exint":42,"exstring":"exstring"} (0.01s)
2023-09-11T19:14:50.1157529Z         --- PASS: TestSendReceiveStructuredAndBinary/regular_subscriber_-_binary/Event{"specversion":"1.0","id":"min-event-2","source":"http://example.com/source","type":"com.example.MinEvent"} (0.01s)
2023-09-11T19:14:50.1159085Z         --- PASS: TestSendReceiveStructuredAndBinary/regular_subscriber_-_binary/Event{"specversion":"0.3","id":"min-event-3","source":"http://example.com/source","type":"com.example.MinEvent"} (0.01s)
2023-09-11T19:14:50.1170014Z     --- PASS: TestSendReceiveStructuredAndBinary/queue_subscriber_-_binary (0.04s)
2023-09-11T19:14:50.1172750Z         --- PASS: TestSendReceiveStructuredAndBinary/queue_subscriber_-_binary/Event{"specversion":"1.0","id":"full-event-0","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","dataschema":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exbool":true,"exint":42,"exstring":"exstring","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z"} (0.01s)
2023-09-11T19:14:50.1175796Z         --- PASS: TestSendReceiveStructuredAndBinary/queue_subscriber_-_binary/Event{"specversion":"0.3","id":"full-event-1","source":"http://example.com/source","type":"com.example.FullEvent","subject":"topic","datacontenttype":"text/json","schemaurl":"http://example.com/schema","time":"2020-03-21T12:34:56.78Z","data":"hello","exint":42,"exstring":"exstring","exbinary":"AAECAw==","exurl":"http://example.com/source","extime":"2020-03-21T12:34:56.78Z","exbool":true} (0.01s)
2023-09-11T19:14:50.1177576Z         --- PASS: TestSendReceiveStructuredAndBinary/queue_subscriber_-_binary/Event{"specversion":"1.0","id":"min-event-2","source":"http://example.com/source","type":"com.example.MinEvent"} (0.01s)
2023-09-11T19:14:50.1179364Z         --- PASS: TestSendReceiveStructuredAndBinary/queue_subscriber_-_binary/Event{"specversion":"0.3","id":"min-event-3","source":"http://example.com/source","type":"com.example.MinEvent"} (0.01s)
2023-09-11T19:14:50.1179866Z PASS
2023-09-11T19:14:50.1180126Z coverage: [no statements]
2023-09-11T19:14:50.1180676Z ok  	github.com/cloudevents/sdk-go/test/integration/nats_jetstream	0.216s	coverage: [no statements]

Seems good to me, but I'd like @lionelvillard to give it a quick scan too.

@lionelvillard can you take a look?

Any chance this is getting merged soon?

Pinging @lionelvillard

LGTM

Merging, failing integration tests fixed in #963


msal-browser should have an option not to store access token/refresh token

Please follow the issue template below. Failure to do so will result in a delay in answering your question.
Library

[ ]<EMAIL_ADDRESS>or<EMAIL_ADDRESS>[x]<EMAIL_ADDRESS>[ ]<EMAIL_ADDRESS>[ ]<EMAIL_ADDRESS>[ ]<EMAIL_ADDRESS>
Description
If the purpose of msal-browser is only for OIDC Federated login, then access token and refresh token doesn't really have a use.
In such cases, those tokens are desirable not to be stored in any browser cache, because they are inherently vulnerable to attacks such as XSS. Maybe supporting  response_type=id_token or utility that enables us to delete certain caches help.

@ken5scal msal-browser is meant to support authentication code flow for single-page applications. If you are looking for federated login and you don't need the access token, msal-core uses the implicit flow and supports that. However, customized storage for msal-browser is something that we are looking into.

@jo-arroyo thanks for your response. I understood.


Primary keys not recognized when nested within slices

According to the docs:
https://github.com/asdine/storm/blob/5a6fe65e3993f63951c8e3f64c812536c9e23595/README.md#L97-L111
I believe the following should work
package main

import (
	"fmt"

	"github.com/asdine/storm"
)

type Inlined struct {
	foo string `storm:"id"`
}

type Schema struct {
	child Inlined `storm:"inline"`
	bar string
}

func main() {
	db, err := storm.Open("./test.db")
	if err != nil {
		fmt.Println("unable to open db:", err)
	}

	if err := db.Init(&Schema{}); err != nil {
		fmt.Println("unable to init db:", err)
	}
}

but instead I get:
$ go run ./test.go
unable to init db: missing struct tag id or ID field

I also get the same result with:
type Schema struct {
	Inlined `storm:"inline"`
	bar string
}

Did I misread the docs? Is this functionality broken? Are the docs wrong?

Actually, even the simplest example of an explicit id:
package main

import (
	"fmt"

	"github.com/asdine/storm"
)

type Schema struct {
	bar string
	foo string `storm:"id"`
}

func main() {
	db, err := storm.Open("./test.db")
	if err != nil {
		fmt.Println("unable to open db:", err)
	}

	if err := db.Init(&Schema{}); err != nil {
		fmt.Println("unable to init db:", err)
	}
}

seems to be broken:
$ go run ./test.go
unable to init db: missing struct tag id or ID field

Oops, good catch. I evidently introduced that separate error in trying to reduce this from a larger test case. That's not what I was trying to demonstrate, haha.
A more accurate test case reduction is the following:
package main

import (
	"fmt"

	"github.com/asdine/storm"
)

type Inlined struct {
	Foo string `json:"foo" storm:"id"`
}

type Schema struct {
	Child []Inlined `json:"asdf" storm:"inline"`
	Bar string
}

func main() {
	db, err := storm.Open("./test.db")
	if err != nil {
		fmt.Println("unable to open db:", err)
	}

	if err := db.Init(&Schema{}); err != nil {
		fmt.Println("unable to init db:", err)
	}
}

It seems obvious now that the issue is likely that I'm trying to put the ID within an array, and multiple primary keys per entry may violate internal invariants. Is this the case?

Yeah, seems like the case.
non-marshaled ID at the top-level works as expected:
type Schema struct {
	ID `json:"-"`
	Children []Inlined `json:"asdf"
	// ...
}

@asdine Thank you for catching my dumb mistakes :)

Same problem for pointers to structs. They really have to be only anonymous inlined structs, no indirection.

You can't have slices of inlined structs, this can't work because the tags will be repeated on every value in the slice.


Update JsFoo dates

JsFoo:

Website: https://jsfoo.in/2018/
Date: 26–27 October 2018
Venue: NIMHANS Bangalore
Description:

@mukkachaitanya Thanks for creating the PR. This has now been fixed by #97, so I'll close it.


Decouple 'popular tags' filtering on image chooser from search

Workaround for https://github.com/torchbox/wagtail/issues/278#issuecomment-157817200.
Searching by tag only works under Elasticsearch, so clicking on 'popular tags' is broken
in the default install. As a workaround, add a new 'tag' parameter to the chooser view
that allows us to filter on tags using plain SQL lookup, as a separate operation to search.

Merged in https://github.com/torchbox/wagtail/commit/635659a80fb1d6fc98aec3c87aa5c53fce8c22d2 + parent


Config class to support absolute path for config files

Currently all config files are expected to be in the folder pointed by the light config settings. Hoowever this does not work well when JVM arguments are used for setting client keystore and truststore. JVM needs to be them defined as absolute path or relative to the current folder, not to the light config. This causes  loading of the keystores and truststores to fail in light-4j if JVM arguments are used.
Config loader needs to recognize if the absolute path is used and act accoordingly.

Problem is that current code assumes that file which was specified in JVM argument is assumed to be relative to the light config folder, when in fact it is an absolute path. See my fix in the associated PR


Request: menu-bar-only app

I'm looking at the code in Xcode; perhaps I'll be able to contribute to this. However, wanted to put this out there.
My favorite note-taking app is Notefile by JuneCloud, except of course for the fact that it doesn't allow me to own my own content.The handy bit about it is that it sits in the menu bar, so that it's always immediately accessible. It's otherwise very simple (which I consider a feature). But it's that menu bar feature that keeps me using Notefile, even though I've been making it a point to put things into Owncloud Notes.
As I'm looking through the CloudNotes project, I'm also looking at https://nsrover.wordpress.com/2014/10/10/creating-a-os-x-menubar-only-app/ which makes it appear (relatively) straightforward to add this feature. So hopefully not something with prohibitive development hurdles.
Side note: today I installed Fluid and added the OwnCloud web interface for Notes into my menu bar. That has scratched my itch for the moment, but of course a native app would be superior.

I think it would be great if you can add the menu bar functionality to CloudNotes.

Well, this is a totally different kind of development than that which I do, but i'll give a stab at it. Expect I might have a question or three.


A little confuse about the code.

Hi, thanks for your great work. I am little confuse about the inference implement code. The code part are as follow
def evaluate_network(files, args):
	# GPU: active speaker detection by pretrained model
	s 			= ASD()
	s.loadParameters(args.pretrainModel)
	sys.stderr.write("Model %s loaded from previous state! \r\n"%args.pretrainModel)
	s.eval()
	allScores   = []
	# durationSet = {1,2,4,6} # To make the result more reliable
	durationSet = {1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6} # Use this line can get more reliable result
	# 所有的trackers
	for file in tqdm.tqdm(files, total = len(files)):
		fileName 	 = os.path.splitext(file.split('/')[-1])[0] # Load audio and video
		_, audio	 = wavfile.read(os.path.join(args.pycropPath, fileName + '.wav'))
		# 整个音频的特征
		# (NUMFRAMES, numcep)
		# 16KHZ-->0.025*16000=400(samples)
		# NUMFRAMES=[audio_length - winlen] / win_step
		# 1s aduio--> 16000 samples-->NUMFRAMES = (1 - 0.025)/0.01 + 1=98
		# audio_length = 1s= 25fps =（NumFrames-1)/100 + 0.025
		audioFeature = python_speech_features.mfcc(audio, 16000, numcep = 13, winlen = 0.025, winstep = 0.010)
		video 		 = cv2.VideoCapture(os.path.join(args.pycropPath, fileName + '.avi'))
		videoFeature = []
		while video.isOpened():
			ret, frames = video.read()
			if ret == True:
				face = cv2.cvtColor(frames, cv2.COLOR_BGR2GRAY)
				face = cv2.resize(face, (224,224))
				face = face[int(112- (112/2)) : int(112 + (112/2)), int(112 - (112/2)) : int(112 + (112/2))]
				videoFeature.append(face)
			else:
				break
		video.release()
		videoFeature = numpy.array(videoFeature)
		length 		 = min((audioFeature.shape[0] - audioFeature.shape[0] % 4) / 100, videoFeature.shape[0])
		audioFeature = audioFeature[:int(round(length * 100)), :]
		videoFeature = videoFeature[:int(round(length * 25)),: ,:]
		allScore = []
		for duration in durationSet:
			batchSize = int(math.ceil(length / duration))
			print(batchSize)
			scores = []
			with torch.no_grad():
				for i in range(batchSize):
					inputA = torch.FloatTensor(audioFeature[i * duration * 100: (i+1) * duration * 100,:]).unsqueeze(0).cuda()
					inputV = torch.FloatTensor(videoFeature[i * duration * 25: (i+1) * duration * 25,:,:]).unsqueeze(0).cuda()
					embedA = s.model.forward_audio_frontend(inputA)
					embedV = s.model.forward_visual_frontend(inputV)
					out    = s.model.forward_audio_visual_backend(embedA, embedV)
					score  = s.lossAV.forward(out, labels = None)
					scores.extend(score)
			allScore.append(scores)
		allScore = numpy.round((numpy.mean(numpy.array(allScore), axis = 0)), 1).astype(float)
		allScores.append(allScore)
	return allScores

1.The length choice between the audioFeature and videoFeature , The python_speech_features.mfcc return the feature vector of shape (NUMFRAMES, numcep)  refer from the source. The videoFeature's first dim is representing the num of cropped video clip frames. For example, 1s to 25fps, while the audioFeature's first dim can be calculated by [audio_length - winlen] / win_step.
.So, the same as 1s audio to 98 audio frames. Why we need calculate this (audioFeature.shape[0] - audioFeature.shape[0] % 4) / 100, this result is the length of audio clip , but why compare with the video frames min((audioFeature.shape[0] - audioFeature.shape[0] % 4) / 100, videoFeature.shape[0])?
2.The explaination of duationSet, why Use this line can get more reliable result ?
Any help you provide will be greatly appreciated!  Looking forward your response!

Hi, I read the code carefully. I guess that the code line min((audioFeature.shape[0] - audioFeature.shape[0] % 4) / 100, videoFeature.shape[0]) is intented to compare the audio and video feature time length. The videoFeature.shape[0] maybe videoFeature.shape[0]/25.
Besides, the relationship between the audio feature and timeline I think it's 98(feature vector )/s. For example, 1s audio, (1-0.025)/0.01=98. I wonder if I missing something related to the result. Looking forward for  your response!


is it possible to expose the "stream position"

Is it possible to enhance ExcelDataReader to expose stream positions?
like being able to set the stream positions?...
I'm guessing NOT as it has to be read as type of file which doesn't expose this, in away which is understandably (does that sentence even make sense)?
So my understanding is, that you can not simply SKIP and TAKE in the file,
as it reads "line by line"..... otherwise it would have to parse the entire file first which is counter to what streaming is.
is it possible to add functionality to set the stream position.
aka...
open file, "read line" several times, get seek position of say 33rd read line, close file.
open same file, and say set position of 33rd "read line".
This would allow for much faster traversing through the file.

Hi @Seabizkit,
Could you please explain a bit more about your use case, how large files? How many files? XLS or XLSX? How long does it take, how much time is spent on seeking? Perhaps attach a big workbook to repro and benchmark ourselves
If your workbooks are big and using AsDataSet, try to set UseColumnDataType = false in the configuration (which halves the amount of processing). Also,  if performance is important, you should generally use the reader methods instead of AsDataSet as there is some overhead there.
(technically exposing the stream position wouldn't be useful, as it would only point at the end of some buffer, and can't be reversed back to an actual row. An alternative is some kind of SeekToRow(rowIndex) but I suspect that involves more code than its worth)

I think you got what i was asking by your last paragraph, i will look into UseColumnDataType.
Large file say 500 k rows, either xls or xlsx. I am currently using  AsDataSet, and using option to specify whether to include row or not, to act like a sort of skip and take.
(but the issue with this is, it still iterates over all rows, would be nice if there was a nicer way of skipping and taking rows, without having to read the entire file rows or iterating over rows to ignore)

Because of how both the binary and xml formats work we have to read it all or we might miss rows and cells. If we could be sure the binary files are up to spec we wouldn't have to but there are so many broken .xls files out there that we have to assume they are broken.

thanks


Zeros function not correctly determining shape.

I want to have dynamic batch sizes so I defined my input tensors as follows.
input_tensor = tf.placeholder(tf.float32, (None, TIME_STEPS, 128), 'input_tensor')
I then calculate the batch size.
batch_size = tf.shape(input_tensor)[0]
I can use this to determine the initial state for my RNNs as follows...
initial_state = state = tf.zeros((batch_size, encoder_multi_rnn.state_size), tf.float32)
...
forward_outputs[t], state = encoder_multi_rnn(getTimeStep(input_tensor, t), state)

This seems to work fine when I evaluate tf.shape(initial_state) in my sess.run() it prints what appears to be the correct value.  However, when do the following it prints (?, ?).  I think the second dimension should not be a ?
    state = tf.zeros((batch_size, encoder_multi_rnn.state_size), tf.float32)
    print(state.get_shape())

This is not causing an issue and my code compiles fine.  However this is causing an issue when I try to feed the output of the last time step of my sequence generating decoder back into the input of the MultiRNN.  On the first time step I feed it zeros since no output has yet to be produced.
    rnn_input = tf.reduce_sum(w * decoder_input, 1)
    last_out = decoder_outputs[t - 1] if t else tf.zeros((batch_size, 128))
    rnn_input = tf.concat(1, (rnn_input, last_out))

I get this error when concat is called.  ValueError: Linear expects shape[1] of arguments: [[None, None], [None, 1024]]
When I print last_out.get_shape() I get (?, ?) again.  In this case I think it should be (?, 128) since the last dimension is clearly defined.

Hi @chasep255. If it's a runtime decision, you should do
last_out = tf.cond(t > 0, lambda: decode_output[t-1], lambda: tf.zeros((batch_size, 128))
Could you please give it a try and see if it works for you? If not, could you cut and paste the complete program? Thanks.

It is not a runtime decision.  t is the time step.  Here is a more complete section.  I already fixed the issue by just defining a batch size so I don't have the original code.
Here is what is looks like now.  See how t is just the loop variable.
with tf.variable_scope('decoder') as scope:
    W_attn = tf.get_variable('W_attn', (TIME_STEPS, TIME_STEPS), tf.float32, tf.truncated_normal_initializer(1.0 / TIME_STEPS, 0.01))
    W_sm = tf.get_variable('W_softmax', (decoder_gru_size, 128), tf.float32, tf.truncated_normal_initializer(0.0, 1 / np.sqrt(decoder_gru_size)))
    b_sm = tf.get_variable('b_softmax', 128, tf.float32, tf.truncated_normal_initializer(0.0, 0.01))
    decoder_outputs = [None] * TIME_STEPS
    state = tf.zeros((BATCH_SIZE, decoder_multi_rnn.state_size), tf.float32)
    for t in range(TIME_STEPS):
        w = tf.reshape(W_attn[t, :], (1, TIME_STEPS, 1))
        rnn_input = tf.reduce_sum(w * decoder_input, 1)
        last = tf.cond(is_training, lambda: getTimeStep(expected_output, t - 1), lambda: decoder_outputs[t - 1]) if t else tf.zeros((BATCH_SIZE, 128))
        rnn_input = tf.concat(1, (rnn_input, last))
        rnn_output, state = decoder_multi_rnn(rnn_input, state)
        decoder_outputs[t] = tf.nn.softmax(tf.matmul(rnn_output, W_sm) + b_sm)
        scope.reuse_variables()
    output_tensor = tf.concat(1, [tf.reshape(t, (-1, 1, 128)) for t in decoder_outputs])

Glad you managed to get it working.  I think your initial post has some confusion between the statically known shapes of ops/tensors in the graph, and the dynamically computed shapes of tensors evaluated when the graph is executed  (via session.run, feeding in placeholders) ?
e.g. The input_tensor is a placeholder with partially specified shape.  We don't know until the input is fed what the actual batch size is (and it may vary from run to run).  You then take the dynamic shape of the input (using a tf.shape op in the graph)  and slice off the first element.
input_tensor = tf.placeholder(tf.float32, (None, TIME_STEPS, 128), 'input_tensor')
shape_of_input_tensor = tf.shape(input_tensor)
batch_size = shape_of_input_tensor[0]

If we examine 'shape_of_input_tensor' we see that it is a vector whose value which cannot be computed until the input is fed into the graph.
>>> print shape_of_input_tensor
Tensor("Shape_3:0", shape=(3,), dtype=int32)

Note that batch_size is actually the output of a dynamic 'Slice' operation
>>> print batch_size
Tensor("Squeeze_2:0", shape=(), dtype=int32)
>>> print batch_size.op
name: "Squeeze"
op: "Squeeze"
input: "Slice"
attr {
  key: "T"
  value {
    type: DT_INT32
  }
}
attr {
  key: "squeeze_dims"
  value {
    list {
      i: 0
    }
  }
}

In contrast, 'state.get_shape()' is a static property of the graph and so cannot know the batch size until the placeholder is fed at runtime.  See here:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/framework/ops.py#L329
I couldn't reproduce further without know what 'encoder_multi_rnn.state_size' returns.  It clearly can't be a simple integer:
>>> STATE_SIZE=27
>>> state = tf.zeros((batch_size, STATE_SIZE), tf.float32)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/google/home/pbar/tensorflow.virtualenv/local/lib/python2.7/site-packages/tensorflow/python/ops/array_ops.py", line 622, in zeros
    shape = ops.convert_to_tensor(shape, name="shape")
  File "/usr/local/google/home/pbar/tensorflow.virtualenv/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 566, in convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "/usr/local/google/home/pbar/tensorflow.virtualenv/local/lib/python2.7/site-packages/tensorflow/python/ops/constant_op.py", line 179, in _constant_tensor_conversion_function
    return constant(v, dtype=dtype, name=name)
  File "/usr/local/google/home/pbar/tensorflow.virtualenv/local/lib/python2.7/site-packages/tensorflow/python/ops/constant_op.py", line 162, in constant
    tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape))
  File "/usr/local/google/home/pbar/tensorflow.virtualenv/local/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py", line 332, in make_tensor_proto
    _AssertCompatible(values, dtype)
  File "/usr/local/google/home/pbar/tensorflow.virtualenv/local/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py", line 269, in _AssertCompatible
    raise TypeError("List of Tensors when single Tensor expected")
TypeError: List of Tensors when single Tensor expected

Note that the args of tf.zeros are passed through tf.convert_to_tensor:
Without the entire original program, it's hard to follow why shape inference of last_shape (all the way through your encoder) was not working.
Could you provide a simple repro test case?  Failing that I propose we close this issue.

Automatically closing due to lack of recent activity. Please reopen when further information becomes available.


STM32WL LoRaWAN pinout incomplete / RFO pin not selectable

Is your enhancement proposal related to a problem? Please describe.
The STM32WL chip series has on chip LoRa and provides two input and two output pins for this. The low power output pin (RFO_LP) and the high power output pin (RFO_HP) are currently not choosable. By default the RFO_HP pin is used.
The limitation was found because of the following problem:
A custom board with STM32WLE5CC, which is optimized to only use the RFO_LP pin was configured with two different firmwares.
The first firmware is a bare metal version configured with STM32CubeMX and the second one is the lorawan class a sample from zephyr. The bare metal firmware reached and rssi of around -70 and the zephyr sample only of -110. After connecting the RFO_LP and the RFO_HP pin the zephyr sample reached an rssi of around -60.
Describe the solution you'd like
An optimal solution would be an option in the devicetree to select the preferred RFO pin.
Additional context
From the Datasheet of STM32WLE5CC

Rather looks like a pure LORA driver point.

An optimal solution would be an option in the device tree to select the preferred RFO pin.

The SX127X driver has such an option, but not the SX126X driver, as both the SX1261 and SX1262 chips only have a single RF output, respectively LP and HP. The HP and LP output seems specific to the ST implementation, and the way to switch is not documented in the STM32WL reference manual, nor in the SX126X manual.
That said it is possible to find the way to switch between the two implementation by looking at STM32Cube. It appears that it uses a modified version of the loramac-node library, and uses the bit that selects between the SX1261 and the SX1262. So you might be able to get the LP output working by changing SX1262 into SX1261 in these lines:
https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/lora/sx126x_common.h#L25-L27

Rather looks like a pure LORA driver point.

If that works it should be possible to add a property in the st,stm32wl-subghz-radio binding and use it to select the correct chip version.

The HP and LP output seems specific to the ST implementation, and the way to switch is not documented in the STM32WL reference manual,

IIUC, it's actually documented in §5.8.4:

Set_PaConfig() command:
byte 3
bits 7:1 Reserved, must be kept at reset value.
bit 0 PaSel: PA selection.
0: HP PA selected
1: LP PA selected (default)

IIUC, it's actually documented in §5.8.4:

Indeed I search too quickly through the reference manual. Apologies.

IIUC, it's actually documented in §5.8.4:

Indeed I search too quickly through the reference manual. Apologies.

Took me some time to find it :-D

Thanks, so I am adding this up from you.
According to the STM32WLE5CC RM (https://www.st.com/resource/en/reference_manual/rm0461-stm32wlex-advanced-armbased-32bit-mcus-with-subghz-radio-solution-stmicroelectronics.pdf) in §4.8.4 the Set_PaConfig(PaDutyCycle, HpMax, PaSel, 0x01) sets to LP or HP RFO.
In modules/lib/loramac-node/src/radio/sx126x/sx126x.c the function void SX126xSetTxParams( int8_t power, RadioRampTimes_t rampTime)  calls the set_PaConfig() function according to the device. This is for SX1261 a LP setting and for SX1262 a HP setting.

That said it is possible to find the way to switch between the two implementation by looking at STM32Cube. It appears that it uses a modified version of the loramac-node library, and uses the bit that selects between the SX1261 and the SX1262. So you might be able to get the LP output working by changing SX1262 into SX1261 in these lines:
https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/lora/sx126x_common.h#L25-L27

According to these lines for STM32WL the SX1262 is selected and so HP output is selected.
So I just changed line 27 from #define SX126X_DEVICE_ID SX1262 to #define SX126X_DEVICE_ID SX1261 and it seems to work. My test with the rssi (of course the RFO pins in this case NOT connected) improved from -110 to -70.

An idea for a solution in the zephyrproject discord:
https://discord.com/channels/720317445772017664/883448180950327366/1072593303729623100


Intersect: display features that have overlap with all B

I'd like to use bedtools intersect with multiple B entries. I want to report those features in A which have overlap with some feature in all B files. Is this possible currently in Bedtools? If not could this be implemented.
Example:
In the bedtools intersect example picture (http://bedtools.readthedocs.org/en/latest/content/tools/intersect.html) A1 (which overlaps with B1.1, B1.2, and B2.1) would be reported, but not A2 nor A3 which only overlap with a feature in B1 and B2 respectively.

That should be doable. Internally, in the set of hits found for a given query,  each hit has a fileId that represents which database (B file) it came from. The simplest thing to would be to check that all DBs are represented and only report it if so. A more efficient approach would be to abort the intersection when any database cache fails to show a hit.

While more cumbersome, currently you can also do this by using the groupby tool to count the number of distinct files that an interval overlapped and then restricting to the intervals whose distinct count matches the number of input files you provide.
cat a.bed
chr1	10	20	a1
chr1	30	32	a2

cat b1.bed
chr1	0	40	b1.1

cat b2.bed
chr1	15	18	b2.1

bedtools intersect -a a.bed -b b1.bed b2.bed -wa -wb
chr1	10	20	a1	1	chr1	0	40	b1.1
chr1	10	20	a1	2	chr1	15	18	b2.1
chr1	30	32	a2	1	chr1	0	40	b1.1

bedtools intersect -a a.bed -b b1.bed b2.bed -wa -wb \
| bedtools groupby -g 1-4 -c 5 -o count_distinct
chr1	10	20	a1	2
chr1	30	32	a2	1

bedtools intersect -a a.bed -b b1.bed b2.bed -wa -wb \
| bedtools groupby -g 1-4 -c 5 -o count_distinct \
| awk '$5==2'
chr1	10	20	a1	2

This is almost exactly why I need. Is there anyway to use groupby but retain the B entries? So in your example ultimately I want my output to be
hr1    10  20  a1  1   chr1    0   40  b1.1  2   chr1    15  18  b2.1
or something similar


//tests/cggi:straight_line_vectorizer.mlir.test flakes

It appears that //tests/cggi:straight_line_vectorizer.mlir.test flakily fails, I believe due to arbitrariness in the graph algorithm topo-sorting.

note sure if this is still a bug:
while [ 1 -gt 0 ];
 do
 heir-opt --straight-line-vectorize tests/cggi/straight_line_vectorizer.mlir | FileCheck tests/cggi/straight_line_vectorizer.mlir
 echo $?
 sleep 1
done

this loop continues w/o error.
However, the following shows an error from the canonicalize work I had introduced,
heir-opt --canonicalize --straight-line-vectorize tests/cggi/straight_line_vectorizer.mlir
tests/cggi/straight_line_vectorizer.mlir:41:9: error: 'cggi.lut_lincomb' op operand #0 must be variadic of A type for LWE ciphertexts, but got 'tensor<6x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>'
  %11 = cggi.lut3 %10, %extracted_5, %3 {lookup_table = 105 : ui8} : !ct_ty
        ^
tests/cggi/straight_line_vectorizer.mlir:41:9: note: see current operation: %34 = "cggi.lut_lincomb"(%31, %32, %33) <{coefficients = array<i32: 1, 2, 4>, lookup_table = 105 : ui8}> : (tensor<6x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>, tensor<6x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>, tensor<6x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>) -> tensor<6x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>
tests/cggi/straight_line_vectorizer.mlir:73:9: error: 'cggi.lut_lincomb' op operand #0 must be variadic of A type for LWE ciphertexts, but got 'tensor<6x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>'
  %r1 = cggi.lut3 %0, %1, %2 {lookup_table = 8 : ui8} : !ct_ty
        ^
tests/cggi/straight_line_vectorizer.mlir:73:9: note: see current operation: %21 = "cggi.lut_lincomb"(%18, %19, %20) <{coefficients = array<i32: 1, 2, 4>, lookup_table = 8 : ui8}> : (tensor<6x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>, tensor<6x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>, tensor<6x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>) -> tensor<6x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>
tests/cggi/straight_line_vectorizer.mlir:120:9: error: 'cggi.lut_lincomb' op operand #0 must be variadic of A type for LWE ciphertexts, but got 'tensor<4x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>'
  %r1 = cggi.lut3 %0, %1, %2 {lookup_table = 8 : ui8} : !ct_ty
        ^
tests/cggi/straight_line_vectorizer.mlir:120:9: note: see current operation: %19 = "cggi.lut_lincomb"(%16, %17, %18) <{coefficients = array<i32: 1, 2, 4>, lookup_table = 8 : ui8}> : (tensor<4x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>, tensor<4x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>, tensor<4x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>) -> tensor<4x!lwe.lwe_ciphertext<encoding = #lwe.unspecified_bit_field_encoding<cleartext_bitwidth = 3>>>

perhaps a separate issue or reopen #877 ?

Woah, nice find! I actually think that was because lut_lincomb's input specification wants Variadic<LweCiphertext> and doesn't allow tensors of LWE ciphertexts. I have a fix PR here allowing container types: https://github.com/google/heir/pull/939

Thanks for the fix!
From: asraa @.>
Date: Monday, August 26, 2024 at 6:16 AM
To: google/heir @.>
Cc: Muthu Annamalai @.>, Comment @.>
Subject: [EXTERNAL] Re: [google/heir] //tests/cggi:straight_line_vectorizer.mlir.test flakes (Issue #519)
Woah, nice find! I actually think that was because lut_lincomb's input specification wants Variadic and doesn't allow tensors of LWE ciphertexts. I have a fix PR here allowing container types: #939https://github.com/google/heir/pull/939
—
Reply to this email directly, view it on GitHubhttps://github.com/google/heir/issues/519#issuecomment-2310193658, or unsubscribehttps://github.com/notifications/unsubscribe-auth/APGLTDGEG2JHLFTA632RBG3ZTMTD7AVCNFSM6AAAAABERHH67KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJQGE4TGNRVHA.
You are receiving this because you commented.Message ID: @.***>

Current reproduction steps fail and I suspect the bug is not manifest anymore; should you consider to close it ?

I think we might want to keep it. It's true that I made a workaround so the test doesn't flake anymore (https://github.com/google/heir/blob/main/tests/cggi/straight_line_vectorizer.mlir#L93-L97), but the test isn't as robust. The straight line vectorizer is still nondeterministic.
So actually the issue really is if we want to keep straight-line-vectorizer as non-deterministic or not. The test is fixed so that it allows for that to happen. @j2kun is this issue OK to close (i.e. vectorizer is non-determinisitc is fine)?

Okay we can take a look at if some inherent STL unordered containers are leaking this non determinism as a easy source of bug and apply a fix
Get Outlook for iOShttps://aka.ms/o0ukef

From: asraa @.>
Sent: Thursday, August 29, 2024 7:49:34 AM
To: google/heir @.>
Cc: Muthu Annamalai @.>; Comment @.>
Subject: [EXTERNAL] Re: [google/heir] //tests/cggi:straight_line_vectorizer.mlir.test flakes (Issue #519)
I think we might want to keep it. It's true that I made a workaround so the test doesn't flake anymore (https://github.com/google/heir/blob/main/tests/cggi/straight_line_vectorizer.mlir#L93-L97https://github.com/google/heir/blob/main/tests/cggi/straight_line_vectorizer.mlir#L93-L97), but the test isn't as robust. The straight line vectorizer is still nondeterministic.
So actually the issue really is if we want to keep straight-line-vectorizer as non-deterministic or not. The test is fixed so that it allows for that to happen. @j2kunhttps://github.com/j2kun is this issue OK to close (i.e. vectorizer is non-determinisitc is fine)?
—
Reply to this email directly, view it on GitHubhttps://github.com/google/heir/issues/519#issuecomment-2317951220, or unsubscribehttps://github.com/notifications/unsubscribe-auth/APGLTDCRSZ5LTN2JKU3UEYDZT4YH5AVCNFSM6AAAAABERHH67KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJXHE2TCMRSGA.
You are receiving this because you commented.Message ID: @.***>

Okay we can take a look at if some inherent STL unordered containers are leaking this non determinism as a easy source of bug and apply a fix

Definitely only if it's easy! I don't think it's super high priority for this pass to be deterministic


Incompatibile with Crawl (Fabric) in the latest version

tested with only the recent files of them and essential libs, the mod turns out to be incompatibile with Crawl (Fabric): https://www.curseforge.com/minecraft/mc-mods/crawl
might not be an issue in previous versions.
entity errors occur when generating worlds.

https://github.com/fewizz/crawl


com.amazonaws.AWSCognitoIdentityErrorDomain error 10

While creating identity in AWS Identity Pool I am getting the error described in the title. Can anybody help and let me know what is the meaning of this error code 10 and why is it supposed to come?
credentialsProvider?.credentials().continueWith(block: { (task) -> Any? in             if task.isFaulted {                 print("Credential task failed with error: ",task.error?.localizedDescription ?? "")             }else if task.isCompleted {                 print("Credentials retrivel success")              }              return nil         })

Thank you @amit2908 for reporting to us. Can you provide the error message and the stack trace for further debugging?

This issue has been closed because of inactivity. Please open a new issue in https://github.com/aws/aws-sdk-ios/issues if you are still encountering problems.


[Bug]: assigning a "client_order_id" does not work on MarketOrderRequest

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
When I order a MarketOrderRequest with client_order_id, it seems to be ignored.
Im using Bracket order with stop loss and take profit
order_request = MarketOrderRequest(symbol=ticker,
            side=api_action,
            type=OrderType.STOP,
            qty=stock_quantity,
            time_in_force=TimeInForce.DAY,
            order_class=OrderClass.BRACKET,
            take_profit=take_profit_request,
            stop_loss=stop_loss_request,
            client_order_id=client_order_id)

the client_order_id that is actually assigned to the order is a default one and my client_order_id is ignored.
Expected Behavior
client_order_id is assigned as the user wishes
SDK Version I encountered this issue in
0.6.1
Steps To Reproduce
order a MarketOrderRequest with client_order_id.
Im pretty sure its not related to the stops I assigned but whatever.

Filled out the Steps to Reproduce section?

[X] I have entered valid steps to reproduce my issue or have attached a minimally reproducible case in code that shows my issue happening; and understand that without this my issue will be flagged as invalid and closed after 30 days.

Anything else?
I'm seeing it does not work in the older api as well. So do whatever you want to do with it.

I am having the same issue.
It appears that the argument typing is incorrect inside  https://github.com/alpacahq/alpaca-py/blob/master/alpaca/trading/requests.py
(type is float, should be str)
eg., line 281
client_order_id (Optional[float]): A string to identify which client submitted the order.
using class ReplaceOrderRequest may be a hack to get it to work, since it uses a str arg (line 199)

The docstrings are incorrect but the typing is correct for client_order_id. I'm not able to reproduce your issue. Can you try it on 0.7.0?

Just got around to retesting, using 0.8.0.
Works now (thank you!), but docs have a typo
https://alpaca.markets/docs/trading/getting_started/how-to-orders/#using-client-order-ids
example is : my_order = api.get_order_by_client_order_id('my_first_order')
Should be:  my_order = trading_client.get_order_by_client_id('my_first_order')


[Feature Suggest] Support for AVX instruction set

I have couple of VMs but only plain AVX instruction set not AVX2. Is this project compatible with AVX ?

From 0.10.1 version all CPUs are supported but Distributed Llama is optimized only for ARM and AVX2. AVX is within range but with a low priority.


Possible Marker Dragging Bug on IE

Hi there,
In Chrome, initializing a marker with draggable = true, then disabling dragging on mousedown, causes the marker to be undraggable (as expected) when you try and drag the marker. In IE10 (and other IEs I think), the marker is still draggable on the first mousedown event.
Here's a JSFiddle to illustrate the issue:
http://jsfiddle.net/jnswider/71dhve9e/1/
To reproduce:

Open JSFiddle with IE10
Try dragging the marker

In Chrome, the first time you try dragging the marker, it is already undraggable.
In IE10, the first time you try dragging the marker it actually drags when in my opinion the expected result is for the marker to not drag.
Any feedback is appreciated, thanks!

Any other insight on this issue?
I'm noticing that I'm still having issues disabling dragging in IE. I call marker.dragging.disable() and the marker stops getting it's drag event but the marker itself will still move.
Thanks! :)

Does the same happen on the 1.0-dev version?

I tried this with 1.0-dev and now the marker just stays draggable even in Safari and Chrome. Here's the updated fiddle.


moon2 - 2.5.0 - chrome - session failed: driver response code: 500: Internal Server Error

Hi together,
We've deployed moon2 in version 2.5 to k8s but we're having issues with manually creating a session if we select chrome or edge via the UI, firefox and opera are working.
The deployment configuration and the logs can be found below.
Chrome basically terminates with:

x-server XIO:  fatal IO error 2 (No such file or directory) on X server ":0"
session failed: driver response code: 500: Internal Server Error

helmrelease values:
  values:
    quota:
      moon:
        namespace: namespace1
    ingress:
      enabled: true
      ...
    configs:
      default:
        sessionTimeout: 10m
        containers:
          browser:
            resources:
              limits:
                cpu: "1"
                memory: 1Gi
              requests:
                cpu: 500m
                memory: 500Mi
          ca-certs:
            repository: quay.io/aerokube/ca-certs
            resources:
              limits:
                cpu: 100m
                memory: 32Mi
              requests:
                cpu: 50m
                memory: 16Mi
          proxy:
            repository: quay.io/aerokube/proxy
            resources:
              limits:
                cpu: 100m
                memory: 32Mi
              requests:
                cpu: 50m
                memory: 16Mi
          defender:
            repository: quay.io/aerokube/defender
            resources:
              limits:
                cpu: 100m
                memory: 128Mi
              requests:
                cpu: 50m
                memory: 32Mi
          video-recorder:
            repository: quay.io/aerokube/video-recorder
            resources:
              limits:
                cpu: 1000m
                memory: 2Gi
              requests:
                cpu: 250m
                memory: 1000Mi
          vnc-server:
            repository: quay.io/aerokube/vnc-server
            resources:
              limits:
                cpu: 100m
                memory: 64Mi
              requests:
                cpu: 50m
                memory: 32Mi
          x-server:
            repository: quay.io/aerokube/xvfb-server
            resources:
              limits:
                cpu: 100m
                memory: 128Mi
              requests:
                cpu: 50m
                memory: 64Mi
        # https://aerokube.com/moon/latest/#video-recording
        storage:
          bucket: "moon"
          endpoint: "https:s3.example.com"
          filename: ""
          pattern: ""
          secretRef:
            accessKey: "accessKey"
            secretKey: "secretKey"
            name: secretName1
    deployment:
      replicas: 1
      securityContext:
        runAsUser: 1000
      experimentalUI: true
      moonCPULimit: 150m
      moonCPURequest: 50m
      moonMemoryLimit: 128Mi
      moonMemoryRequest: 64Mi
      moonConfCPULimit: 100m
      moonConfCPURequest: 25m
      moonConfMemoryLimit: 64Mi
      moonConfMemoryRequest: 32Mi
      moonUICPULimit: 200m
      moonUICPURequest: 100m
      moonUIMemoryLimit: 64Mi
      moonUIMemoryRequest: 32Mi
    browsers:
      default:
        selenium:
          MicrosoftEdge:
            repository: quay.io/browser/microsoft-edge-stable
            #default: 112.0.1722.58-5
          chrome:
            repository: quay.io/browser/google-chrome-stable
            default: "112.0"
          firefox:
            repository: quay.io/browser/firefox-mozilla-build
            #default: 112.0.2-4
          opera:
            repository: quay.io/browser/opera-stable
            #default: 98.0.4759.15-6
          safari:
            repository: quay.io/browser/safari
            #default: 15.0-0
        cypress:
          electron:
            repository: quay.io/browsers/cypress-electron
          chromium:
            repository: quay.io/browsers/cypress-chromium
          chrome:
            repository: quay.io/browsers/cypress-chrome
          firefox:
            repository: quay.io/browsers/cypress-firefox
          edge:
            repository: quay.io/browsers/cypress-edge
        playwright:
          chrome:
            repository: quay.io/browser/playwright-chrome
          chromium:
            repository: quay.io/browser/playwright-chromium
          firefox:
            repository: quay.io/browser/playwright-firefox
          webkit:
            repository: quay.io/browser/playwright-webkit

chrome pod logs:
browser Starting ChromeDriver 112.0.5615.49 (bd2a7bcb881c11e8cfe3078709382934e3916914-refs/branch-heads/5615@{#936}) on port 4444
browser Only local connections are allowed.
vnc-server 12/05/2023 13:04:24 passing arg to libvncserver: -passwd
vnc-server 12/05/2023 13:04:24 passing arg to libvncserver: -rfbport
browser Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
browser ChromeDriver was started successfully.
x-server _XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
x-server Unable to revert mtime: /usr/share/fonts
defender 2023/05/12 13:04:23 headless mode: false
defender 2023/05/12 13:04:23 listening on :4545
defender 2023/05/12 13:04:23 waiting for webdriver
defender 2023/05/12 13:04:25 webdriver started in 1.520595007s
defender 2023/05/12 13:04:25 proxy POST to http://<IP_ADDRESS>:4444/session]
vnc-server 12/05/2023 13:04:24 passing arg to libvncserver: 5900
vnc-server 12/05/2023 13:04:24 x11vnc version: 0.9.16 lastmod: 2019-01-05  pid: 11
vnc-server 12/05/2023 13:04:24
vnc-server 12/05/2023 13:04:24 wait_for_client: WAIT:0
vnc-server 12/05/2023 13:04:24
vnc-server 12/05/2023 13:04:24 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/2560
vnc-server 12/05/2023 13:04:24
vnc-server 12/05/2023 13:04:24 Listening for VNC connections on TCP port 5900
vnc-server 12/05/2023 13:04:24 Listening for VNC connections on TCP6 port 5900
vnc-server 12/05/2023 13:04:24 listen6: bind: Address already in use
vnc-server 12/05/2023 13:04:24 Not listening on IPv6 interface.
vnc-server 12/05/2023 13:04:24
vnc-server
vnc-server The VNC desktop is:      chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc:0
vnc-server PORT=5900
Stream closed EOF for ... (ca-certs)
Stream closed EOF for ... (x-server-init)
defender 2023/05/12 13:04:27 received terminated (15) signal
defender 2023/05/12 13:04:27 graceful shutdown in 30s
defender 2023/05/12 13:04:27 http: Server closed
defender 2023/05/12 13:04:27 exited
vnc-server caught signal: 15
Stream closed EOF for ... (browser)
Stream closed EOF for ... (defender)
Stream closed EOF for ... (vnc-server)
x-server XIO:  fatal IO error 2 (No such file or directory) on X server ":0"
x-server       after 297 requests (297 known processed) with 7 events remaining.
Stream closed EOF for ... (x-server)

moon2 logs
moon 2023/05/12 13:04:14 moon2-77b45b8775-vs56d: browserset controller: browsers "default": updated
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: starting new session
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: creating config map
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: config map created
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: creating pod
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: pod created
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: waiting pod
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: pod is up
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: waiting driver
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: driver is up
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: session failed: driver response code: 500: Internal Server Error
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: deleting pod
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: pod deleted
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: deleting config map
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: config map deleted

Any help is appreciated!
Thanks in advance.

Hello, most probably you are using kubernetes nodes not based on Ubuntu OS,
in that case chrome requires --no-sandbox argument, you can add it via
capabilities.
пт, 12 мая 2023 г., 16:10 toby181 @.***>:

Hi together,
We've deployed moon2 in version 2.5 to k8s but we're having issues with
manually creating a session if we select chrome or edge via the UI, firefox
and opera are working.
The deployment configuration and the logs can be found below.
Chrome basically terminates with:

x-server XIO: fatal IO error 2 (No such file or directory) on X
server ":0"
session failed: driver response code: 500: Internal Server Error

helmrelease values:
values:
quota:
moon:
namespace: namespace1
ingress:
enabled: true
...
configs:
default:
sessionTimeout: 10m
containers:
browser:
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 500m
memory: 500Mi
ca-certs:
repository: quay.io/aerokube/ca-certs
resources:
limits:
cpu: 100m
memory: 32Mi
requests:
cpu: 50m
memory: 16Mi
proxy:
repository: quay.io/aerokube/proxy
resources:
limits:
cpu: 100m
memory: 32Mi
requests:
cpu: 50m
memory: 16Mi
defender:
repository: quay.io/aerokube/defender
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
video-recorder:
repository: quay.io/aerokube/video-recorder
resources:
limits:
cpu: 1000m
memory: 2Gi
requests:
cpu: 250m
memory: 1000Mi
vnc-server:
repository: quay.io/aerokube/vnc-server
resources:
limits:
cpu: 100m
memory: 64Mi
requests:
cpu: 50m
memory: 32Mi
x-server:
repository: quay.io/aerokube/xvfb-server
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 50m
memory: 64Mi
# https://aerokube.com/moon/latest/#video-recording
storage:
bucket: "moon"
endpoint: "https:s3.example.com"
filename: ""
pattern: ""
secretRef:
accessKey: "accessKey"
secretKey: "secretKey"
name: secretName1
deployment:
replicas: 1
securityContext:
runAsUser: 1000
experimentalUI: true
moonCPULimit: 150m
moonCPURequest: 50m
moonMemoryLimit: 128Mi
moonMemoryRequest: 64Mi
moonConfCPULimit: 100m
moonConfCPURequest: 25m
moonConfMemoryLimit: 64Mi
moonConfMemoryRequest: 32Mi
moonUICPULimit: 200m
moonUICPURequest: 100m
moonUIMemoryLimit: 64Mi
moonUIMemoryRequest: 32Mi
browsers:
default:
selenium:
MicrosoftEdge:
repository: quay.io/browser/microsoft-edge-stable
#default: 112.0.1722.58-5
chrome:
repository: quay.io/browser/google-chrome-stable
default: "112.0"
firefox:
repository: quay.io/browser/firefox-mozilla-build
#default: 112.0.2-4
opera:
repository: quay.io/browser/opera-stable
#default: 98.0.4759.15-6
safari:
repository: quay.io/browser/safari
#default: 15.0-0
cypress:
electron:
repository: quay.io/browsers/cypress-electron
chromium:
repository: quay.io/browsers/cypress-chromium
chrome:
repository: quay.io/browsers/cypress-chrome
firefox:
repository: quay.io/browsers/cypress-firefox
edge:
repository: quay.io/browsers/cypress-edge
playwright:
chrome:
repository: quay.io/browser/playwright-chrome
chromium:
repository: quay.io/browser/playwright-chromium
firefox:
repository: quay.io/browser/playwright-firefox
webkit:
repository: quay.io/browser/playwright-webkit
chrome pod logs:
browser Starting ChromeDriver 112.0.5615.49 (bd2a7bcb881c11e8cfe3078709382934e3916914-refs/branch-heads/5615@{#936}) on port 4444
browser Only local connections are allowed.
vnc-server 12/05/2023 13:04:24 passing arg to libvncserver: -passwd
vnc-server 12/05/2023 13:04:24 passing arg to libvncserver: -rfbport
browser Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
browser ChromeDriver was started successfully.
x-server _XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
x-server Unable to revert mtime: /usr/share/fonts
defender 2023/05/12 13:04:23 headless mode: false
defender 2023/05/12 13:04:23 listening on :4545
defender 2023/05/12 13:04:23 waiting for webdriver
defender 2023/05/12 13:04:25 webdriver started in 1.520595007s
defender 2023/05/12 13:04:25 proxy POST to http://<IP_ADDRESS>:4444/session]
vnc-server 12/05/2023 13:04:24 passing arg to libvncserver: 5900
vnc-server 12/05/2023 13:04:24 x11vnc version: 0.9.16 lastmod: 2019-01-05  pid: 11
vnc-server 12/05/2023 13:04:24
vnc-server 12/05/2023 13:04:24 wait_for_client: WAIT:0
vnc-server 12/05/2023 13:04:24
vnc-server 12/05/2023 13:04:24 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/2560
vnc-server 12/05/2023 13:04:24
vnc-server 12/05/2023 13:04:24 Listening for VNC connections on TCP port 5900
vnc-server 12/05/2023 13:04:24 Listening for VNC connections on TCP6 port 5900
vnc-server 12/05/2023 13:04:24 listen6: bind: Address already in use
vnc-server 12/05/2023 13:04:24 Not listening on IPv6 interface.
vnc-server 12/05/2023 13:04:24
vnc-server
vnc-server The VNC desktop is:      chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc:0
vnc-server PORT=5900
Stream closed EOF for ... (ca-certs)
Stream closed EOF for ... (x-server-init)
defender 2023/05/12 13:04:27 received terminated (15) signal
defender 2023/05/12 13:04:27 graceful shutdown in 30s
defender 2023/05/12 13:04:27 http: Server closed
defender 2023/05/12 13:04:27 exited
vnc-server caught signal: 15
Stream closed EOF for ... (browser)
Stream closed EOF for ... (defender)
Stream closed EOF for ... (vnc-server)
x-server XIO:  fatal IO error 2 (No such file or directory) on X server ":0"
x-server       after 297 requests (297 known processed) with 7 events remaining.
Stream closed EOF for ... (x-server)
moon2 logs
moon 2023/05/12 13:04:14 moon2-77b45b8775-vs56d: browserset controller: browsers "default": updated
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: starting new session
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: creating config map
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: config map created
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: creating pod
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: pod created
moon 2023/05/12 13:04:19 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: waiting pod
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: pod is up
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: waiting driver
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: driver is up
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: session failed: driver response code: 500: Internal Server Error
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: deleting pod
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: pod deleted
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: deleting config map
moon 2023/05/12 13:04:25 moon2-77b45b8775-vs56d: moon: chrome-112-0-f5a286a4-69ff-45a4-b79c-79174521e7dc: config map deleted
Any help is appreciated!
Thanks in advance.
—
Reply to this email directly, view it on GitHub
https://github.com/aerokube/moon/issues/377, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKY23K5U2VQW4S6VWH57PTXFYZDXANCNFSM6AAAAAAX7QMMPU
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

hey @aandryashin
We actually got Ubuntu nodes.
When I add the argument to the capabilites, it's still not working. Same error.
Capabilities:

{
  "capabilities": {
    "google:chromeOptions": {
        "args": ["--no-sandbox"]
    },
    "alwaysMatch": {
      "goog:chromeOptions": {
        "excludeSwitches": [
          "enable-automation"
        ]
      }
    }
  }
}

Hello! goog:chromeOptions should be under alaysMatch.
пн, 15 мая 2023 г., 10:52 toby181 @.***>:

hey @aandryashin https://github.com/aandryashin
We actually got Ubuntu nodes.
When I add the argument to the capabilites, it's still not working. Same
error.
Capabilities:
{
"capabilities": {
"google:chromeOptions": {
"args": ["--no-sandbox"]
},
"alwaysMatch": {
"goog:chromeOptions": {
"excludeSwitches": [
"enable-automation"
]
}
}
}
}
—
Reply to this email directly, view it on GitHub
https://github.com/aerokube/moon/issues/377#issuecomment-1547361365, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKY23OP2TQBHXMVLBSTUMLXGHODBANCNFSM6AAAAAAX7QMMPU
.
You are receiving this because you were mentioned.Message ID:
@.***>

What I did not figure out yet is how to add this argument by default on kubernetes in the browser custom resource.
My HelmRelease looks like this
...

    browsers:
      default:
        selenium:
          chrome:
            repository: quay.io/browser/google-chrome-stable
            default: "112.0"
            env:
            - name: foo
              value: "bar"
            capabilities:
              add:
              - --no-sandbox

but whenenver I try to start a manual chrome session, it immediately fails and the moon2 pod says:
moon 2023/05/22 11:31:49 moon2-77b45b8775-wc6vt: moon: chrome-112-0-09c26b74-44fc-41b1-861a-6ff682739a78: starting new session
moon 2023/05/22 11:31:49 http: panic serving <IP_ADDRESS>:57212: runtime error: invalid memory address or nil pointer dereference
moon goroutine 1114 [running]:
moon net/http.(*conn).serve.func1()
moon     /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/server.go:1854 +0xbf
moon panic({0x13b1220, 0x2167050})
moon     /opt/hostedtoolcache/go/1.20.3/x64/src/runtime/panic.go:890 +0x263
moon main.createSession.func1.3(0xc000162100, 0xc000276c90, 0xc000615d10, 0xc00046e9a0, 0xc000012288, 0xc000389d10, {0xc112f2894ee4815e?, 0x122e5f8af67?, 0x2187b60?}, {0x17ac388, ...})
moon     /home/runner/work/moon2/moon2/cmd/moon/session.go:921 +0x5dd7
moon main.createSession.func1({0x17aba70, 0xc0004f6fc0}, 0xc000162100)
moon     /home/runner/work/moon2/moon2/cmd/moon/session.go:1287 +0x605
moon net/http.HandlerFunc.ServeHTTP(0xc00046e9a0?, {0x17aba70?, 0xc0004f6fc0?}, 0x25?)
moon     /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/server.go:2122 +0x2f
moon main.withQuota.func1({0x17aba70, 0xc0004f6fc0}, 0xc000162100)
moon     /home/runner/work/moon2/moon2/cmd/moon/handlers.go:91 +0x15b
moon net/http.HandlerFunc.ServeHTTP(0x0?, {0x17aba70?, 0xc0004f6fc0?}, 0x0?)
moon     /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/server.go:2122 +0x2f
moon main.post.func1({0x17aba70, 0xc0004f6fc0}, 0xffffffffffffffff?)
moon     /home/runner/work/moon2/moon2/cmd/moon/handlers.go:101 +0x7b
moon net/http.HandlerFunc.ServeHTTP(0xc0004f6fc0?, {0x17aba70?, 0xc0004f6fc0?}, 0xc00004bbc6?)
moon     /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/server.go:2122 +0x2f
moon net/http.(*ServeMux).ServeHTTP(0x0?, {0x17aba70, 0xc0004f6fc0}, 0xc000162100)
moon     /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/server.go:2500 +0x149
moon net/http.serverHandler.ServeHTTP({0x179fc88?}, {0x17aba70, 0xc0004f6fc0}, 0xc000162100)
moon     /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/server.go:2936 +0x316
moon net/http.(*conn).serve(0xc000731680, {0x17ac3c0, 0xc00048d170})
moon     /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/server.go:1995 +0x612
moon created by net/http.(*Server).Serve
moon     /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/server.go:3089 +0x5ed

Something like that fails as well

            capabilities:
              add:
              - '"alwaysMatch": {"goog:chromeOptions": {"excludeSwitches": ["enable-automation"],"args": ["--no-sandbox"] }}'

@toby181 this is not supported in Moon settings.

hi @vania-pooh
the browsersets CRD offers a configuration option for capabilities, see https://github.com/aerokube/charts/blob/2.5.0/moon2/crds/moon.aerokube.com_browsersets.yaml#L2328.
Is that something different then?

Hello, that is not selenium capabilities, that is kubernetes container
security context capabilities. You can easily add chrome arguments on test
sie. We have decided to not add selenoum caps on the fly to avoid "magic"
behaviour. Everything should be under test control.
пн, 22 мая 2023 г., 16:43 toby181 @.***>:

hi @vania-pooh https://github.com/vania-pooh
the browsersets CRD offers a configuration option for capabilities, see
https://github.com/aerokube/charts/blob/2.5.0/moon2/crds/moon.aerokube.com_browsersets.yaml#L2328
.
Is that something different then?
—
Reply to this email directly, view it on GitHub
https://github.com/aerokube/moon/issues/377#issuecomment-1557246322, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKY23L5DUL7K7L6GG6EPK3XHNUPFANCNFSM6AAAAAAX7QMMPU
.
You are receiving this because you were mentioned.Message ID:
@.***>

got it, thank you!


Multiple LineChart components

Added LineChart.Group component
Shifted data to its own context
Moved currentY to a derived value, rather than setting it imperatively
All data under the hood now lives in a dictionary. However, you can still use an array like before. If the user passes an array as the data, then the internal data context is { [DefaultDataId]: data }
LineChart now accepts an id prop.
Zero breaking changes: even though the contexts have shifted around, the user-facing hooks (such as useLineChart) retain all the same fields

You can see the usage in the Example:
<LineChart.Group>
  <LineChart id="one">
    <LineChart.Path color="blue" />
  </LineChart>
  <LineChart id="two">
    <LineChart.Path color="red">
      <LineChart.Gradient color="black" />
      <LineChart.HorizontalLine at={{ index: 4 }} />
    </LineChart.Path>
    <LineChart.CursorCrosshair
      onActivated={invokeHaptic}
      onEnded={invokeHaptic}
    >
      <LineChart.Tooltip />
    </LineChart.CursorCrosshair>
  </LineChart>
</LineChart.Group>

And the LineChart.Provider can also receive a dictionary now.
Closes #29

This looks great to me!! Thanks so much!


Relationship between distance & similarity?

I would like to confirm the relationship between distance and similarity of molecules. When we calculate distance as below:
ENC = tm.Minhash(dim)
ENC.get_distance(map4_a, map4_b)

I guess similarity will be:
similarity = 1 - distance
I really appreciate it if you could confirm the similarity calculation.
Thank you.

Yes,
actually the approximated Jaccard distance between two MinHashed fingerprint (which is what you calculate with the encoder) can be also directly calculated in Python as:
distance = 1 - np.float(np.count_nonzero(fp1 == fp2)) / np.float(len(fp1))
Please not that If you are using the folded version, the distance should be calculated with the true Jaccard distance (or other classical distance calculations).


Deployments failing when repository mirror needs updating

Before submitting your issue, please make sure that you've checked all of the checkboxes below.

[x] You're running the latest release version of Deployer.
[x] Ensure that you're running at least PHP 5.6.4, you can check this by running php -v
[x] You've ran composer install --no-dev from the root of your installation.
[x] You've ran npm install --production from the root of your installation.
[x] You've ran rm -rf bootstrap/cache/* from the root of your installation.
[x] You have restarted the queue listener and node socket server.

To help us better understand your issue, please answer the following.
Expected behaviour
Whenever a commit is made, it triggers webhook and deployment should be made
Actual behaviour
Deployments failing with status "cancelled"
Steps to reproduce
I am using self hosted gitlab,
pushing to repo.
Environment info
Operating System:
PHP Version:
Node Version:
Database System:
Database Version:
Logs (see storage/logs/) or other output that would be helpful
(If logs are large, please upload as attachment).

I don't think its just related to that.
yesterday i updated to latest version and after that we deployed code for more than 30 times and everytime it failed.
but when ever i make deployment manually, it works properly.
so i am suspecting its related to something else
PS: i did config:clear etc ... does that have any effect?

Found the problem, fixing it now

Can you change out branch bug/323 and see if that works?

I just tried that branch,
still its same :cry:

Did you run app:update after pulling?

my bad...
after app:update its working 100% fine.
You are awesome! :sparkles: :boom:

Awesome! I'll get it merged in and released this evening

BTW, I see that you added many test cases....and i find it very interesting.
did you learn any book on it or any other sources you can recommend for writing test cases in laravel?

Not really to be honest, just learnt through doing I'm afraid


BUG: How to read local csv file

Describe the bug
Create a cluster with one supervisor and two workers on CentOS7, then connection this cluster in windows 10 and read local csv file with xorbits.pandas.read_csv, but got FileNotFoundError exception. How to read local csv file?
To Reproduce

Python 3.8.18

Xorbits 0.7.1

numpy and pandas
a. pandas 2.0.3
b. numpy 1.24.4

Full stack of the error.

Minimized code to reproduce the error.

import xorbits
import xorbits.pandas as pd

xorbits.init('http://<IP_ADDRESS>:7005')
df = pd.read_csv(r"F:\dataset\iris.csv", header=0, sep=",", encoding="utf-8")
xorbits.run(df)

FileNotFoundError, can you check if the file exists?

FileNotFoundError, can you check if the file exists?

File exists in the local computer, but not in the cluster. How to read this local csv file? Does every node require file transfers?

You need to store the file in the object store, like hdfs or oss etc, ensure the file can be seen in the cluster.

You need to store the file in the object store, like hdfs or oss etc, ensure the file can be seen in the cluster.

Got it. Thanks!