Automatic creation of releases.

Can a beta release be created twice a day.
It goes by this format
year.month.number (number increments by 1 every beta)

Is it time to copy Ninetails?

You should learn Github Actions, it's quite fun. You can just setup-node with node 16, setup the git author, then make a script to get the date and npm version, then git push --follow-tags.

You should learn Github Actions, it's quite fun. You can just setup-node with node 16, then make a script to get the date and npm version, then EndBug/add-and-commit with the git flag --follow-tags. I can set this up for you if you would like, but then can you first move the repo to the organisation?

If I have to do it know it won't be happening, or it'll just suck.
Update not doing it, closing.

@webdev03 refused to do it, he's the only contributor. Closing.

I can do it! But it should be in a separate repo.

.number will be hard to do, so I'll just make it the current day and -beta.

@webdev03 alright!

Look, I made it so you and I can manually trigger it, it makes the tag. I don't know how to automate publishing it, though.

Edit, also, it says something about a PAT (personal access token) for the repo if we want the automatic releaser (the one that builds binaries) to work.

@webdev03 make it all one action.

What about stable builds?

@webdev03 stable builds are released manually.

Yes, I know. But the problem is that it won't trigger the action. I'll do that in.. checks about 10 minutes (sorry got distracted)

Yes, I know. But the problem is that it won't trigger the action. I'll do that in.. checks about 10 minutes (sorry got distracted)

since beta builds will be automatic, you can have an action for beta builds, then one for manually created releases.

I think it should build now, but I don't think we can make them "un-draft" automatically without doing something to the Forge configuration.

I can finish the creation I just need it at least semi-automatic

Ok, semi automatic testing initiated.

It seems to have worked, but only on the last test I did an hour ago. I am checking the docs.

2022.1.0-beta?
No its 22.1.100
*the numbers at the end start at 100

if you want to use the old dev method of 22.1.daynumber

I told you that I don't know how to increment with Actions (maybe by a file in the repo?) so you can change the code in https://github.com/The-Catalyst-Browser-Project/ci-auto-release/blob/main/auto.js to do whatever you want.

I told you that I don't know how to increment with Actions (maybe by a file in the repo?) so you can change the code in https://github.com/The-Catalyst-Browser-Project/ci-auto-release/blob/main/auto.js to do whatever you want.

you can use day at the end and just update the script every month.
since it is
year.month.day it should be fairly easy right?

Y.M.D is already there. You mean by removing first two digits?

yeah so its 22 instead of 2022
**It was at this time I thought that this would be a mistake, this would make the script not Y3K compliant, it would... break in the year 3000. **

Not Y3K. You mean to say, 2100.

oh...

well, including the first 2 digits should be fine til 2.1k

@webdev03
if you could add "(Tabby Beta)" at the end of the name of every release BEFORE 1.0 NOT INCLUDING PRE-RELEASES
add it to the end of the name of every tabby beta

Can you give me an example of what to put "Tabby beta" and what to not?

i have to go soon but pretty much
21.12.100 all the way to the last beta BEFORE 1.0 (not releases with the -prerel or -prerelease ending)
Correct caps
(Tabby Beta)

DONT mess this up, if you are still confused DONT TRY to do it at all.

I understand.

Actually, I don't understand. I'll undo my change.

@JaydenDev this should be done, I tested, automation works, so I'll close this. If you have a problem with the tag names, feel free to reach out at https://github.com/The-Catalyst-Browser-Project/ci-auto-release/

@webdev03 it does work!


Flush to output to file

How can I call Flush so that my file gets written?
func WriteToFile() {
	// open output file
	fo, err := os.Create("output.txt")
	if err != nil {
		panic(err)
	}
	// close fo on exit and check for its returned error
	defer func() {
		if err := fo.Close(); err != nil {
			panic(err)
		}
	}()
	// make a write buffer
	w := bitio.NewWriter(fo)
	err = w.WriteBits(0x08, 8)
	if err != nil {
		panic(err)
	}
//????
	//w.Flush()
	err = w.Close()
	if err != nil {
		panic(err)
	}
}

There is no Flush() method as that would require writing an optionally incomplete byte.
If you do need this functionality, you may call Writer.Align() which is basically a Flush() operation. It will result in any cached bits to be written out, and the next bits will start in a new byte. When reading the stream, the client will also have to call Reader.Align() in union with the Writer.Align() call.

When I write exactly 8 bits 1 byte, Align goes directly to https://github.com/icza/bitio/blob/master/writer.go#L170.
About

Also note that Writer.Flush() only flushes the cache of the bitio.Writer, it does not flush its underlying io.Writer, that you have to do manually.

Any suggestion how to that , when these out is private?

Yes, if the internal cache is empty, by definition Writer.Align() does not have to do anything, because every bits written to it is already written to the underlying io.Writer.
And yes, the underlying io.Writer is not exposed, but you should have it already, because you have to pass it when creating bitio.Writer via bufio.NewWriter(). So you can store the underlying io.Writer, and when you want to perform a "flush", you may do it like:
var w io.Writer = ... // Your io.Writer

bw := bufio.NewWriter(w) // Create bufio.Writer
// Use bw, write bits into it

// And when you want to flush:
skipped, err := bw.Align()
// Handle err
// Flush underlying writer if it has a Flush() method:
if f, ok := w.(interface {
    Flush()
}); ok {
    f.Flush()
}

That last flushing can be written simpler if you have a Flusher interface definition:
type Flusher interface {
    Flush()
}

And then:
if f, ok := w.(Flusher); ok {
    f.Flush()
}

Or if you're using a file, then:
f, err := os.Open("data.dat")
if err != nil {
    // Handle err
    return
}
defer f.Close()

bw := bufio.NewWriter(f) // Create bufio.Writer
// Use bw, write bits into it

// And when you want to flush:
skipped, err := bw.Align()
// Handle err
err = f.Sync()
// Handle err

Thanks a lot for your detailed answer! I will try that it makes sense.
I will update here once I get it working saving to a file.

I tried this and is not working the file is empty in the end. Not sure why. Please note in all your examples you have bufio vs bitio in mine, I guess it was typo?
func WriteToFile() {
	// open output file
	fo, err := os.Create("output.txt")
	if err != nil {
		panic(err)
	}
	// close fo on exit and check for its returned error
	defer func() {
		if err := fo.Close(); err != nil {
			panic(err)
		}
	}()
	// make a write buffer

	w := bitio.NewWriter(fo)

	err = w.WriteBits(0x08, 8)
	err = w.WriteBits(0x08, 8)
	err = w.WriteBits(0x08, 8)
	err = w.WriteBits(0x08, 8)

	skipped, err := w.Align()
	fmt.Println("skipped", skipped)
	if err != nil {
		panic(err)
	}

	err = fo.Sync()

	if err != nil {
		panic(err)
	}
	err = w.Close()
	if err != nil {
		panic(err)
	}
}

This is the only way I got it working.
func WriteToFile() {
	// open output file
	fo, err := os.Create("output.txt")
	if err != nil {
		panic(err)
	}
	// close fo on exit and check for its returned error
	defer func() {
		if err := fo.Close(); err != nil {
			panic(err)
		}
	}()
	// make a write buffer
	wr := bufio.NewWriter(fo)
	w := bitio.NewWriter(wr)

	err = w.WriteBits(0x08, 8)
	err = w.WriteBits(0x08, 8)
	err = w.WriteBits(0x08, 8)
	err = w.WriteBits(0x08, 8)

	if err != nil {
		panic(err)
	}
	wr.Flush()
	//x, ok := &fo.(io.Writer)
	err = w.Close()
	if err != nil {
		panic(err)
	}
}

I am quite new with go and unsure why the fo.Sync() is not working.

You are right, all references to bufio.Writer in my previous answer were typo, and they should've been bitio.Writer. Edited - fixed.
You are also right, there was an error in the implementation which did not flush the internal bufio.Writer if one was used. Fixed this, and your examples now work.
Moreover note that the Writer.Align() call in your example is not even required, as you write multiple of 8 bits, so that is always a full byte, but in the general case, Aligh() might be needed if you intend to write further data. Calling Writer.Close() will write everything to the underlying writer regardless if you called Aligh() prior or not.
The following simplified example now works as expected:
// open output file
fo, err := os.Create("output.txt")
if err != nil {
	panic(err)
}
// close fo on exit and check for its returned error
defer func() {
	if err := fo.Close(); err != nil {
		panic(err)
	}
}()

w := bitio.NewWriter(fo)

err = w.WriteBits(0x08, 8)
err = w.WriteBits(0x08, 8)
err = w.WriteBits(0x08, 8)
err = w.WriteBits(0x08, 8)

// No need to call w.Align() in this special case, but it is required in general
// (if you remove this, it will still work)
skipped, err := w.Align()
fmt.Println("skipped", skipped)
if err != nil {
	panic(err)
}

// No need to call fo.Sync() if you close the file,
// that is only needed if you intend to write more.

err = w.Close()
if err != nil {
	panic(err)
}


fix spelling mistakes & remove unnecessary pull stops

Description
What does your pull request fix/improve?
Related Issue
If this pull request is related to an issue, state it.
Motivation and Context
What inspired you to to make these improvements? How will your changes improve the project?
Testing Procedure
The commits should be well tested before creating a pull request. How did you test this pull request?
 They merely take less than a minute, but still, people don't always describe their PRs.


Detect Spring Boot 3 Jakarta Sevlet (Fixes #334)

Summary

Fixes paketo-buildpacks/spring-boot#334
The current spring-boot buildpack can not detect newer Spring Boot 3.0.X web application as is just checks for the javax.servlet.Servlet. This needed some adjustments.
Use Cases

Detects jakarta.servlet.Servlet
Resolves a Servlet application type if the following combinations are present:

jakarta.servlet.Servlet and org.springframework.web.context.ConfigurableWebApplicationContext
javax.servlet.Servlet and org.springframework.web.context.ConfigurableWebApplicationContext

Checklist

[ ] I have viewed, signed, and submitted the Contributor License Agreement.
[x] I have linked issue(s) that this PR should close using keywords or the Github UI (See docs)
[x] I have added an integration test, if necessary.
[x] I have reviewed the styleguide for guidance on my code quality.
[x] I'm happy with the commit history on this PR (I have rebased/squashed as needed).

I didn't find the Contributor License Agreement can you link me to the source where I can find it? Then I can sign it.
Also feel free to comment/adjust this PR :)

Looks great! Thanks for the PR.


Hotels: disable swipe gesture when gallery modal is open

closes #781

I could no reproduce the bug in the iOS emulator so I could not test whether this fixes the issue or not.


Publish to maven central

[x] Requested link from https://bintray.com/asynkronit/protoactor-kotlin to jCenter and OJO
https://bintray.com/asynkronit/protoactor-kotlin/proto-actor
[ ] Generate docs
[ ] Sign package in bintray

The packages a published on when a commit is tagged and published to:
https://bintray.com/asynkronit/protoactor-kotlin
The packages are also linked to jcenter
repositories {
    jcenter()
}

Given the current state and adoption of the project, I'll guess that jcenter and bintray will do for now?


pull latest container

I'm trying to figure out the best way to upgrade the docker containers using puppet.
Currently trying:
	docker::image { 'kohana-remove':
	  ensure  => 'absent',
	  image   => 'docker.ukwm.local:5000/ukwm/container',
	  require => Class['ukwm::packages::docker'],
	}
    ->
	docker::image { 'kohana-install':
	  ensure  => 'latest',
	  image   => 'docker.ukwm.local:5000/ukwm/container',
	  require => Class['ukwm::packages::docker'],
	}
    ->
	docker::run { 'kohana':
	  image           => 'docker.ukwm.local:5000/ukwm/container',
	  ports           => ['81:80', '2221:22'],
	  use_name        => true,
	  restart_service => true,
	  privileged      => false,
	}

Which outputs:
Error: docker rmi docker.ukwm.local:5000/ukwm/container returned 1 instead of one of [0]
Error: /Stage[main]/Stats::Backend::Kohana/Docker::Image[kohana-remove]/Exec[docker rmi docker.ukwm.local:5000/ukwm/container]/returns: change from notrun to 0 failed: docker rmi docker.ukwm.local:5000/ukwm/container returned 1 instead of one of [0]
Warning: /Stage[main]/Ukwm::Backend::Kohana/Docker::Image[kohana-install]/Exec[docker pull docker.ukwm.local:5000/ukwm/stats-kohana]: Skipping because of failed dependencies
Warning: /Stage[main]/Ukwm::Backend::Kohana/Docker::Run[kohana]/File[/etc/init/docker-kohana.conf]: Skipping because of failed dependencies
Warning: /Stage[main]/Ukwm::Backend::Kohana/Docker::Run[kohana]/Service[docker-kohana]: Skipping because of failed dependencies

So maybe an option of force docker rm -f <container>
What would be nicer, is if could notify run that the image has been update. Then it could stop, remove, and restart container.
This would be the command I'd use.
	docker::image { 'kohana-install':
	  ensure  => 'latest',
	  image   => 'docker.ukwm.local:5000/ukwm/container',
	  require => Class['ukwm::packages::docker'],
	}

	docker::run { 'kohana':
	  image           => 'docker.ukwm.local:5000/ukwm/container',
	  ports           => ['81:80', '2221:22'],
	  use_name        => true,
	  restart_service => true,
	  privileged      => false,
	}

docker run --rm could be added to accomplish some of that.

Not a complete puppet-based solution, but my PR at https://github.com/garethr/garethr-docker/pull/209 provides a way to stop and restart the container with the newest image via the init script on the machine.
You'd simply run /etc/init.d/docker-YOURNAME cleanRestart
That will stop the container, remove the file in /var/run/docker-YOURNAME.cid, then restart the container with a fresh 'docker pull'.     Note that you could 'docker pull' before running the init command to speed that up so that the current image is already on the machine.

After much back and forth and great work by @solarkennedy this should now be resolved. Thanks all https://github.com/garethr/garethr-docker/pull/222/files


Android Add-On Google Platform 6.0 API 23 (Maps and USB)  FAILURE

Trying to install here the v1.2.6 cloned from git, but can't figure out what package is this still missing:
[INFO] Reactor Summary:
[INFO]
[INFO] Maven Android SDK Deployer ........................ SUCCESS [0.646s]
[INFO] Android Platforms ................................. SUCCESS [0.006s]
[INFO] Android Platform 6.0 API 23 ....................... SUCCESS [1.710s]
[INFO] Android Add-Ons ................................... SUCCESS [0.008s]
[INFO] Android Add-On Google Platform 6.0 API 23 (Maps and USB)  FAILURE [0.007s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.944s
[INFO] Finished at: Sun Jun 03 13:11:01 CEST 2018
[INFO] Final Memory: 11M/247M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:properties-maven-plugin:1.0.0:read-project-properties (default) on project google-apis-23: Properties could not be loaded from File: /home/user/android/sdk/add-ons/addon-google_apis-google-23/source.properties -> [Help 1]

Android SDK packages (command line tools):
  add-ons;addon-google_apis-google-23  | 1       | Google APIs                                | add-ons/addon-google_apis-google-23/
  emulator                             | 27.2.9  | Android Emulator                           | emulator/
  extras;android;m2repository          | 47.0.0  | Android Support Repository                 | extras/android/m2repository/
  extras;google;google_play_services   | 49      | Google Play services                       | extras/google/google_play_services/
  extras;google;m2repository           | 58      | Google Repository                          | extras/google/m2repository/
  patcher;v4                           | 1       | SDK Patch Applier v4                       | patcher/v4/
  platform-tools                       | 27.0.1  | Android SDK Platform-Tools                 | platform-tools/
  platforms;android-23                 | 3       | Android SDK Platform 23                    | platforms/android-23/
  sources;android-23                   | 1       | Sources for Android 23                     | sources/android-23/
  tools                                | 26.1.1  | Android SDK Tools                          | tools/

Maven -version:
Apache Maven 3.1.1<PHONE_NUMBER>757ffbf44136acec0402957f723d9a; 2013-09-17 17:22:22+0200)
Maven home: /usr/local/maven
Java version: 1.8.0_171, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.16.0-4-amd64", arch: "amd64", family: "unix"

Some help would be appreciated, cause i find no answers on google and have no more idea which package to install.

Accidentally i've found online a source.properties file for the addon-google_apis-google-23 and pasted into the folder. So far it works now, hopefully stays like this.
Just in case anyone else have the same issue, here is the content of that source.properties file i was used:
### Android Tool: Source of this archive.
#Fri Aug 19 04:03:37 CEST 2016
Addon.NameDisplay=Google APIs
Addon.NameId=google_apis
Addon.VendorDisplay=Google Inc.
Addon.VendorId=google
AndroidVersion.ApiLevel=23
Pkg.Desc=Android + Google APIs
Pkg.License=Terms and Conditions.... (here was licence but I removed it because it was too big)
Pkg.LicenseRef=android-sdk-license
Pkg.Revision=1
Pkg.SourceUrl=https\://dl.google.com/android/repository/addon.xml


FR: Is there a way to seperate MQTT client from ESP-Now controller?

I was wondering if there is already a way implemented to seperate MQTT client from ESP-Now controller, so that I can build the gateway from two seperate esp's. That way the ESP-Now network can use it's own channel.
I searched the code but could not find it.

At this moment the Esp-Now channel (WiFi) is already selected when configuring the gateway so you can use a different channel than your WiFi, I do not know if that is your question.
On the other hand in examples you have "GatewayDummy" in which you could implement for example an output to serial port, (in the first version 0.5 two esp8266 communicated per serial port were used one for Esp-Now and another for WiFi / mqtt).
An implementation with serial port output would be very good, I would connect it directly to my raspberry, removing load to mqtt (tasmota, zigbee2mqtt ...)

Problem is that the wifi channel can change. In that case the esp-now channel has to follow. I know a node will search for the controller if it can't connect on the old channel, but there will be a down-time. Also, with a lot of nodes the esp-now network will interfere with your wifi if it's using the same channel.
Why was that changed after 0.5?

I forked the repo and I'll see if I have time to create a two-step gateway option.

I have not tried it with EnigmaIOT but did successfully test it with other esp-now test runs. You may use serial communication (may be softserial as well). You send the esp-now messages or the messaages to be published to serial port, which is connected to other microcontroller or computer, wherein you run a serial listening server. Upon successful transfer of message to the port (you may optionally add CRC) you simply publish it from the MQTT client on the other system.

On earlier versions (until 0.5) EnigmaIot works whit two ESP8266, one for
EspNow, one for mqtt (WiFi) connected by serial port.
Maybe you were referring to this
El sáb, 15 jun 2024, 21:02, rajtan @.***> escribió:

I have not tried it with EnigmaIOT but did successfully test it with other
esp-now test runs. You may use serial communication (may be softserial as
well). You send the esp-now messages or the messaages to be published to
serial port, which is connected to other microcontroller or computer,
wherein you run a serial listening server. Upon successful transfer of
message to the port (you may optionally add CRC) you simply publish it from
the MQTT client on the other system.
—
Reply to this email directly, view it on GitHub
https://github.com/gmag11/EnigmaIOT/issues/51#issuecomment-2170533187,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD7NRUMGDRRH655UKZGHZRTZHSFVZAVCNFSM6AAAAABJL5CF7WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNZQGUZTGMJYG4
.
You are receiving this because you commented.Message ID:
@.***>


ERROR ON CREATE GROUP

I got this error while trying create a group:
window.WAPI.createGroup("testando123",'55xxxxxxxxxxx@c.us');

what i am doing wrong?

I got this error while trying create a group: window.WAPI.createGroup("testando123",'55xxxxxxxxxxx@c.us');

what i am doing wrong?

up. Fix this error?


Make runner output results separately and link into plan

As the runner likely won't be the final stage of the tester (I forgot that there'd be a filtering/aggregating stage performed on the directing machine!), it should be more in line with the previous stages of the tester, in that it should:

output its results in a directory structure (so, like, /obs/test_0_0.json);
output a plan file linking to each result;
store the status in the plan file.

This has been done.


add daihocyhanoi

@L1nhonest I am sorry, the domain daihocyhanoi.edu.vn is removed from our trusted domains list because it was abused in the past. If you are the student of this school, please enroll to GitHub Student Developer Program. Then apply for JetBrains educational subscription with your GitHub account (GitHub tab at https://www.jetbrains.com/shop/eform/students).


Question install instructions.

It seem like set omnifunc=syntaxcomplete#Complete is needed, or nothing works fro me.  Is that expected ?
Still it does not work perfectly C-x-C-o delete the start of the line before the token being completed. Am I doing something wrong ? Thanks.

It seem like set omnifunc=syntaxcomplete#Complete is needed, or nothing works fro me. Is that expected ?

You don't have to set the omnifunc.
vim-racer's omnifunc is set automatically.

You don't have to set the omnifunc.
vim-racer's omnifunc is set automatically.

Hum, I cleaned my vim/folder and reinstall all plugin, you are right, it might have been a conflict with something else.
Though It does not fix the fact that it erase the beginning of the line. I'm not sure why.

I'm experiencing the same with autocompletion
I type
String::

then hit
CTRL-x CTRL+o
the buffer shows me the function list of String, but when I select the function I wanted, it just deletes the whole line and put the function name

I have the same issue. The project

I have the same line deletion issue. The project https://github.com/ebfe/vim-racer works well.

@ivanceras @bluss @Carreau The problem seems be already fixed.
If another problem is occurred, please create new issue.

I confirm that I need set omnifunc=syntaxcomplete#Complete to get autocompletion with vim 7.4.1707 on osx 10.11.
Here is my .vimrc:
set nocompatible
if has('nvim')
  call plug#begin('~/.config/nvim/bundle')
else
  call plug#begin('~/.vim/bundle')
endif
Plug 'racer-rust/vim-racer'
Plug 'jiangmiao/auto-pairs'
" Plug 'rust-lang/rust.vim'
Plug 'scrooloose/nerdcommenter'
Plug 'tpope/vim-fugitive'
Plug 'int3/vim-extradite'
Plug 'ebfe/vim-racer'
call plug#end()

set hidden
"let g:racer_cmd = "/Users/kaiyin/.multirust/toolchains/nightly/cargo/bin/racer"
let $RUST_SRC_PATH="/Users/kaiyin/rust_source/rust/src"
set omnifunc=syntaxcomplete#Complete
setlocal tags=./rusty-tags.vi;/,$RUST_SRC_PATH/rusty-tags.vi

@kindlychung Your vim-racer is the latest version?
The omnifunc is set by the below line.
https://github.com/racer-rust/vim-racer/blob/master/plugin/racer.vim#L213
You can check it by :autocmd FileType rust.

Yes, it's set there, but not taking effect. Or maybe RacerComplete is not working.

It is same with https://github.com/racer-rust/vim-racer/issues/39.


Thin screen hides buttons

Using my smartphone to browse CodeWars can be a little hard.
If the screen isn't wide enough to display a button, the button just doesn't appear at all.

As you can see in the above pictures, the Discourse button only appears in landscape view. Meanwhile buttons like Edit Kata never appear at all.
Kata in the picture: Highest and Lowest

This will be tracked in #939


Update regex package to 1.5.5

https://rustsec.org/advisories/RUSTSEC-2022-0013
regex prior to 1.5.5 has a security issue listed above.
Update it.
Not sure what's the purpose of the thread_local feature, which no longer exists. Removed it.

/land


Support writing ticks and climbs to Aurora

PUT /v1/ascents/
Data fields:
["uuid", "climb_uuid", "angle", "is_mirror", "user_id", "attempt_id", "bid_count", "quality", "difficulty", "is_benchmark", "comment", "climbed_at"]

PUT /v2/climbs/
"uuid", "layout_id", "setter_id", "name", "description", "is_draft", "frames_count", "frames_pace", "frames"

Need to determine how UUIDs for both ascents and climbs are generated.

I believe the UUIDs are just UUID v4 without the hyphens. From looking at a few of them, they are 32 character hex digits and the 13th digit is 4.

I believe the UUIDs are just UUID v4 without the hyphens. From looking at a few of them, they are 32 character hex digits and the 13th digit is 4.

Thanks! I came to the same conclusion. I have a work in progress PR for this, was able to get these working locally but went on a trip and haven't gone back to finish this up. I'll aim to release something soon.


Fix EphemeralKeyTest

Fixes #<issue_number_goes_here>

It's a good idea to open an issue first for discussion.

[ ] Tests pass
[ ] Appropriate changes to README are included in PR

A small change to the initial counter values to pass the test. Btw, why not start the counters at 0 instead?

@googlebot I signed it!

Sorry for the delay. Looks good. Thanks.


getting gh actions working

This broke when I switched everything to a src directory and it stopped finding the installed  package

well that was easy


Improve submit speed in test script

Replace requests with grequests in utility.py to achieve async submit.
Multiple client support if possible. Note that dir name should be configurable to avoid rewriting.

@duzhen1996

Already done. Issue closed.
Thanks to @duzhen1996


Add Request ID to all incoming requests

Adding a unique request id to each incoming API request, and sending it back in the response payload to help debug incidents and know which host handled a specific request.  We can start with UUID as a request id assigned on the server side, and then explore extending and enriching the request id with data that can be decoded to know more about the request without having to grep the logs, similar to S3 extended request id

The extended request id can hold the following info:

timestamp
nodeID (might be too large. Using nodeIP might be more space efficient)
clientID (or clientIP for the same previous reason)
...

doesn't opentracing give us this already?

If opentracing already assigns a unique identifier per request, then we might just reuse that and include it in the response payload. Today we are not returning any request identifier to the client, which makes debugging failed requests very challenging


Unable to test mocked function using fun or mocked

Hello,
I have been trying to mock my 3rd party functions in a fresh handler and I have used createHandlerContext test my handler.
I am able to get back fields such as params and status as expected but the value are not what I would expect and I think there is a missing step in my test setup.
Take this example here:
describe("Flags Page", () => {
  const viewPageUrl = `http://localhost:8000/flags/view`;

  it("return a status of 200 via GET method", async () => {
    const req = new Request(viewPageUrl);
    const ctx = createHandlerContext(req, { manifest });
    const res = await handler.GET!(req, ctx);

    assertEquals(ctx.params, {});
    assertEquals(res.status, 200);
  });
});

Here the status will not return 200 because in the handler is a auth check. I want to mock out that auth check as its a 3rd party auth. So I am now adding this:
    const mockedGetSessionId = mocked(getSessionId)
    mockedGetSessionId.mockReturnValue("fake-session-id");

Therefore I would expect it to now work and be a 200 but it doesn't work. I think there is a missing step where in the jest world I would have to mock out the module in order for the mock function to work as expected, example:
  jest.mock('kv_oauth', () => {
    // would require actual here then mock out the function or have a hoist function that I can change per test
    getSessionId: jest.fn().mockReturnValue("fake-session-id")
  });

but Jest doesn't support ES Modules and even with jest.unstable_mockModule it won't work as it would require the Jest runner to run the test and then the Jest setup object too.
Am I missing something here or am I right in thinking there needs to be a jest.unstable_mockModule available?
Many thanks for the library and I hope you the above makes sense!

Can you point to a repo that includes the code-under-test and your test code including the imports?

@Elliot-Evans-95 Thanks for reporting the issue! There may be several workarounds for it.
1. Use spyOn() to stub KV OAuth's helpers
First, prepare a module that exposes helpers:
// kv_oauth_helpers.ts
import {
  createGitHubOAuthConfig,
  createHelpers,
} from "kv_oauth";

export const helpers = createHelpers(
  createGitHubOAuthConfig(),
);

In the handler code, use helpers via the above module:
// routes/some_route.ts
import { helpers } from "./path/to/kv_oauth_helpers.ts";
import { Handlers } from "$fresh/server.ts";

export const handler: Handlers = {
  async GET(req, ctx) {
    const maybeSessionId = await helpers.getSessionId(req);
    if (maybeSessionId) {
      // ..
    } else {
      // ...
    }
  },
};

Then the test code can stub getSessionId() with spyOn() as follows:
import { spyOn } from "$fresh-testing-library/expect.ts";
import { afterAll } from "$std/testing/bdd.ts"
import { helpers } from "./path/to/kv_oauth_helpers.ts";
import { handler } from "./path/to/routes/some_route.ts";

describe("Flags Page", () => {
  const viewPageUrl = `http://localhost:8000/flags/view`;
  const mockedGetSessionId = spyOn(helpers, "getSessionId").mockReturnValue("fake-session-id");
  afterAll(() => mockedGetSessionId.mockRestore());

  it("return a status of 200 via GET method", async () => {
    // ...
  });
});

2. Use KV OAuth's helpers via ctx.state
If you want to test without mocking/stubbing, you can also use helpers via fresh's ctx.state. First, prepare a middleware that configures ctx.state:
// routes/_middleware.ts
import { MiddlewareHandlerContext } from "$fresh/server.ts";
import {
  createGitHubOAuthConfig,
  createHelpers,
} from "kv_oauth";

export const helpers = createHelpers(
  createGitHubOAuthConfig(),
);

export interface State {
  oauth: typeof helpers;
}

export async function handler(
  req: Request,
  ctx: MiddlewareHandlerContext<State>,
) {
  ctx.state.oauth = helpers;
  const resp = await ctx.next();
  return resp;
}

In the handler code, You can call getSessionId() via ctx.state:
// routes/some_route.ts
import { helpers } from "./path/to/kv_oauth_helpers.ts";
import { Handlers } from "$fresh/server.ts";
import type { State } from "./_middleware.ts";

export const handler: Handlers<void, State> = {
  async GET(req, ctx) {
    const maybeSessionId = await ctx.state.oauth.getSessionId(req);
    if (maybeSessionId) {
      // ..
    } else {
      // ...
    }
  },
};

In the test code, ctx.state can be set using state option of createHandlerContext:
import type { State } from "./path/to/routes/_middleware.ts";
import { handler } from "./path/to/routes/some_route.ts";

describe("Flags Page", () => {
  const viewPageUrl = `http://localhost:8000/flags/view`;

  it("return a status of 200 via GET method", async () => {
    const req = new Request(viewPageUrl);
    const state: State = { oauth: createFakeKvOAuthHelpers() };
    const ctx = createHandlerContext<void, State>(req, { manifest, state });
    const res = await handler.GET!(req, ctx);

    assertEquals(ctx.params, {});
    assertEquals(res.status, 200);
  });
});

Hello gents, sorry for the late response.
@cdoremus - the repo is private at the moment but I could look to extract it out so there is a public copy.
@uki00a - I will try out those suggestions and respond on here once I have tried them out 😄

Hello @uki00a
Wonderful news, using your example of spyOn() as a springboard I was able to get this working.
The big difference is the package versions:
"kv_oauth" - from "0.9.1" to "0.10.0"
"fresh-testing-library" - from "0.11.1" to "0.12.0"
After the above changes I am able to use this:
const mockedGetSessionId = spyOn(oauth2Client, "getSessionId").mockResolvedValue("fake-session-id");

The example from the docs helps to better understand how to use the createHelpers from your example:
https://deno.land/x/deno_kv_oauth@v0.10.0/lib/create_helpers.ts?source

In addition apologies for the late response, happy for this to be closed 👍

I'm glad to hear it worked well :+1:


Aggregate To EpiWeekly Table

More or less similar to the below. Necessary for the completion of #1 and depends on #7

Given a set of daily timeseries / time trajectories in tidy long-form format (i.e. with one row per day per trajectory, with a .draws or other trajectory id column), aggregate it to the scale of epiweeks.

Closed via #10


Default meta not set

I'm submitting a ...  (check one with "x")
[x] bug report => check the README and search github for a similar issue or PR before submitting
[ ] support request => check the README and search github for a similar issue or PR before submitting
[ ] feature request

Current behavior
I've copied
MetaModule.forRoot({
    provide: MetaLoader,
    useFactory: (metaFactory)
})

metaFactory function as well from readme.  Meta/title is not set, only if I change it via MetaService. Is it a bug or am I doing something wrong ?
Expected/desired behavior

Minimal reproduction of the problem with instructions

What is the motivation / use case for changing the behavior?

Please tell us about your environment:

Angular version: 4.1.3

Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]

Language: [all | TypeScript X.X | ES6/7 | ES5]

Node (for AoT issues): node --version =

@stefan-krajnik could you please post here your app.config and the component class where you use the MetaService - so that I can have a better look and suggest you what to do.


Backtracking Broken?

Is the backtracking broken? I mean you would think that if a valid derivation was not initially found, the parser would backtrack until such a derivation was found. But that doesn't seem to be the case.

Chevrotain is an (LL(K))[https://en.wikipedia.org/wiki/LL_parser] this means it uses up to K tokens of lookahead to decide what is the next derivation, this decision is taken before entering the derivation.
There is support for backtracking in a single grammar derivation, which means: instead of looking K tokens ahead, actually trying to parse the whole derivation instead of looking at a fixed K tokens ahead to decide which derivation to take.
This is meant to help handle grammar ambiguities that can't be resolved in any other way.
But not to be used always and everywhere as this will greatly slow down the parser.
and means the grammar is highly ambiguous.
If a valid a derivation is not found, this normally means an error.
If error recovery is enabled, the parser will attempt to recovery using error recovery heuristics.
But there is no reason to try other derivations because they have all been eliminated by using K tokens lookahead decision.

But it still doesn't find valid derivation even when I increase value of K, so something is clearly wrong with the parser.

It is possible you have found a bug. I would be very pleased to find and squash all bugs in Chevrotain.
This however will require a reproduce-able example which you were unable to provide in past issues...
It is also possible there is no value of K for which the grammar is LL(K).
Example:
topRule
   : nestedRule1 | nestedRule2

nestedRule1
   : fqn "?"

nestedRule2
   : fqn "!"

fqn
   : INDENT ("." INDENT)*

In this example because fqn is not bound by any number of tokens ("a.b.c.d.e.f.g.....").
The parser will not be able to decide between nestedRule1 and nestedRule2
because for any K exists T > K such that fqn will consume T tokens.
and we need to finish parsing the fqn rule before we can reach the "?" or "!" which distinguish
these two alternatives.
This can be solved by using backtracking as shown in the example I linked to above.
But it is best to avoid this if possible, as using backtracking is slow, prevents error recovery capabilities
and is generally a sign of a not very well designed grammar...
If you can create a reproduce-able example I can have a deeper look, but at this point this is all
theory and ideas, I don't think I can help farther except perhaps creating an document explaining
common ambiguities issues, although those are not Chevrotain issues but general issue with LL(K) parsers.

I can start by showing you my grammar:
A —> B C
B —> S D E | (A)
E —> F | B
C —> L A | ε
F —> G H
G —> S | [F]
H —> L F | ε
S —> Terminal
L —> Terminal
D —> Terminal

And the parser cannot parse input like this:
satguav

O.k. I converted this to a Chevrotain Grammar.
You can copy and paste this in the playground:

(function jsonExample() {
    // ----------------- Lexer -----------------
    var extendToken = chevrotain.extendToken;
    var Lexer = chevrotain.Lexer;

    var a = extendToken("a", /a/);
    var b = extendToken("b", /b/);
    var c = extendToken("c", /c/);
    var d = extendToken("d", /d/);
    var e = extendToken("e", /e/);
    var f = extendToken("f", /f/);
    var g = extendToken("g", /g/);
    var h = extendToken("h", /h/);
    var s = extendToken("s", /s/);
    var t = extendToken("t", /t/);
    var u = extendToken("u", /u/);
    var v = extendToken("v", /v/);
    var w = extendToken("w", /w/);
    var x = extendToken("x", /x/);
    var y = extendToken("y", /y/);
    var z = extendToken("z", /z/);
    var LParen = extendToken("LParen", /\(/);
    var RParen = extendToken("RParen", /\)/);
    var LSquare = extendToken("LSquare", /\[/);
    var RSquare = extendToken("RSquare", /]/);

    var allTokens = [a, b, c, d, e, f, s, t, u, v, w, x, y, z, g, h, LParen, RParen, LSquare, RSquare];

    var myLexer = new Lexer(allTokens, true);

    // ----------------- parser -----------------
    var Parser = chevrotain.Parser;

    function MyParser(input) {
        Parser.call(this, input, allTokens, {recoveryEnabled: true, maxLookahead:2});
        var $ = this;

        this.A = this.RULE("A", function () {
            // @formatter:off
            $.OR([
                { ALT: function () { $.SUBRULE($.B) }},
                { ALT: function () { $.SUBRULE($.C) }}
            ]);
            // @formatter:on
        });

        this.B = this.RULE("B", function () {
            // @formatter:off
            $.OR([
                { ALT: function () {
                    $.SUBRULE($.S)
                    $.SUBRULE($.D)
                    $.SUBRULE($.E)
                }},
                { ALT: function () {
                    $.CONSUME(LParen)
                    $.SUBRULE($.A)
                    $.CONSUME(RParen)
                }}
            ]);
            // @formatter:on
        });

        this.E = this.RULE("E", function () {
            // @formatter:off
            $.OR([
                { ALT: function () { $.SUBRULE($.F)}},
                { ALT: function () { $.SUBRULE($.B)}}
            ]);
            // @formatter:on
        });

        this.C = this.RULE("C", function () {
            // @formatter:off
            $.OR([
                { ALT: function () {
                    $.SUBRULE($.L)
                    $.SUBRULE($.A)
                }},
                { ALT: function () { /* empty alt */}}
            ]);
            // @formatter:on
        });

        this.F = this.RULE("F", function () {
            $.SUBRULE($.G)
            $.SUBRULE($.H)
        });

        this.G = this.RULE("G", function () {
            // @formatter:off
            $.OR([
                { ALT: function () {
                   $.SUBRULE($.S)
                }},
                { ALT: function () {
                    $.CONSUME(LSquare)
                    $.SUBRULE($.F)
                    $.CONSUME(RSquare)
                }}
            ]);
            // @formatter:on
        });

        this.H = this.RULE("H", function () {
            // @formatter:off
            $.OR([
                { ALT: function () {
                    $.SUBRULE($.L)
                    $.SUBRULE($.F)
                }},
                { ALT: function () { /* empty alt */}}
            ]);
            // @formatter:on
        });

        this.S = this.RULE("S", function () {
            // @formatter:off
            $.OR([
                { ALT: function () { $.CONSUME(s) }},
                { ALT: function () { $.CONSUME(t) }},
                { ALT: function () { $.CONSUME(u) }},
                { ALT: function () { $.CONSUME(v) }},
                { ALT: function () { $.CONSUME(w) }},
                { ALT: function () { $.CONSUME(x) }},
                { ALT: function () { $.CONSUME(y) }},
                { ALT: function () { $.CONSUME(z) }}
            ]);
            // @formatter:on
        });

        this.L = this.RULE("L", function () {
            // @formatter:off
            $.OR([
                { ALT: function () { $.CONSUME(g) }},
                { ALT: function () { $.CONSUME(h) }}
            ]);
            // @formatter:on
        });

        this.D = this.RULE("D", function () {
            // @formatter:off
            $.OR([
                { ALT: function () { $.CONSUME(a) }},
                { ALT: function () { $.CONSUME(b) }},
                { ALT: function () { $.CONSUME(c) }},
                { ALT: function () { $.CONSUME(d) }},
                { ALT: function () { $.CONSUME(e) }},
                { ALT: function () { $.CONSUME(f) }}
            ]);
            // @formatter:on
        });

        Parser.performSelfAnalysis(this);
    }

    MyParser.prototype = Object.create(Parser.prototype);
    MyParser.prototype.constructor = MyParser;

    // for the playground to work the returned object must contain these fields
    return {
        lexer: myLexer,
        parser: MyParser,
        defaultRule: "A"
    };
})()

The error for the input satguav is:
{
				"name": "NotAllInputParsedException",
				"message": "Redundant input, expecting EOF but found: a",
				"token": {
					"image": "a",
					"startOffset": 5,
					"startLine": 1,
					"startColumn": 6,
					"endLine": 1,
					"endColumn": 6,
					"isInsertedInRecovery": false
				},
				"resyncedTokens": []
			}

And this seems to be the expected behavior:
Parse flow for input: "satguav" would be:
A -> B
B -> S D E
S -> "s"
D -> "a"
E -> F
F -> G H
G -> S
S -> "t"
H -> L F
L -> "g"
F -> G H
G -> S
S -> "u"
H -> ε
but this means the final "av" will not be parsed, thus we get a redundant input error.
Do you think this input should have been parsed differently ?
If so what would be the flow you expect?

Yes, I would have expected this:
A -> B C
B -> S D E
S -> "s"
D -> "a"
E -> F
F -> G H
G -> S
S -> "t"
H -> ε
C -> L A
L -> "g"
A -> B C
B -> S D E
C -> ε
S -> "u"
D -> "a"
E -> F
F -> G H
G -> S
S -> "v"
H -> ε

I fixed the grammar I provided above as there was a mistake in the top rule (A).
This does not change the discussion though.

O.k.
What about the input "satgu" that would have had to use the other Parse Tree.
How should the parser decide ?
Theory
Is this actually ambiguous ? in a CFG grammar it could be as there is no precedence order between alternatives, in a PEG grammar the first alternative to match is defined to be the chosen one.
so there would be no ambiguity. This is all semantics.
Is what you want even a Context Free Grammar? the decision which parse tree to take depends on the input after the current rule has completed parsing. wont this additional input be counted as context?
In practice
actual parser implementations would normally chose the first alternative to match, this is because it is the simplest and easiest to understand way to deal with a CFG grammar's undefined behavior for multiple matching alternatives.
Chevrotain supports some mechanisms to handle "tougher" grammars, such as backtracking in a single branching point for non LL(k) decisions. predicates to support context on branching alternatives(OPTION/OR). But it does not support the kind of backtracking you are looking for. As you require support multiple parse trees and deciding on paths to take by the input after the current rule.
I have some backlog items in mind to improve ambiguity detection, but I doubt I will ever
Try to support the use case you have demonstrated here.
If you want a parsing library the supports more ambiguous grammars you could try using
Nearley It is based on the earley algorithim. And has some kind of support for multiple parse trees.
The problem is that by being less restrictive and using a more general algorithm Nearley may be
fast in theory, but in practice it is at least one order of magnitude slower for a simple grammar.
http://sap.github.io/chevrotain/performance/
I won't be surprised if for a more complex ambiguous grammars you will encounter several orders of magnitude performance degradation.
This is why many programing languages are designed to be LL(1). As that makes them simple (and fast) to parse, even those languages which are not LL(1) are often 99% LL(1) except a few edge cases.
Another option is to refactor your grammar to meet with the constraints of the tool used.
But I'm not quite sure how to help in that case.

Well for satgu the parser would only have one choice, which is the parse flow you gave above. It wouldn't be able to use the rule C -> L A | ε  for "gu" because that eventually reduces to this:
C -> L A | ε
L -> "g"
A -> B C
B -> S D E
S -> "u"
D -> ? (Error: end of input)
So the parser needs to "know" ahead of time whether to take C rule or H rule.
The grammar is ambiguous to a certain extent, but if the parser can look ahead far enough, it should know which flow to take.

As you can see, the ambiguity is only at the first 2 steps (choosing which rule to take for ε, g, or h). In the last 2 steps, the parser only has once choice because it can either choose S or [ (for G) or S D or ( (for B).

The problem is the context used to decide on those "first 2 steps".
Lets try to simplify the grammar and the problem definition, perhaps it will help the discussion.
top
   : (A | B) C

A
   : something

B
   : someOtherThing

C
   : someSuffix |  ε

From what I understand: you want to decide while in topRule between A and B based on the existence of some suffix input that can match C "later".
Some prefix of this input could match both A or B
And the decision relies of some other suffix of the input (which may later be matched in C).
Chevrotain can look some fixed number of tokens ahead or even unlimited number (backtracking)
but that is within the context of an branching alternative, which does not include what comes "after".
The problem with backtracking in this use case is that the "redundant input" error is only thrown when existing the topRule. So using backtracking will still succeed in both alternatives and the first one will be taken which is not what you are looking for.
The reason the redundant input is only thrown in the topRule is because only then the parser knows
there are no more rules in the parse flow so that extra input is indeed redundant.
Possible Workarounds:

If possible, refactor the grammar to have the common prefix before the alternation.
so your two alternatives cannot both match the same common prefix and thus create the ambiguity.

You have two alternatives that can match some prefix, can you always prefer one over the other?   If so place that alternative first.

Extend Chevrotain's backtracking capabilities:
Chevrotain's backtracking is implemented using its predicates feature.  A predicate is just a gate function which enables/disables a branching alternative (OPTION/OR/MANY) so in theory you could implement such a function using the building blocks already available in chevrotain to additionally check information about the remaining input and not just whether or not some grammar rule can be parsed given the following input (which is what backtracking currently does)

I would not recommend this last option, and will most definitively not be worried about supporting it :smile:  this would be your own private hack...
What I am interested in which may make me reconsider investigating this for the purpose of better built-in support in chevrotain:

Can you find such a grammar use case in a well known grammar (programing language / data format  / ... )?
Can you find a parsing library / generator that actually supports this use case ? if so which?

Thanks.

I am now using nearley parser as it can handle the ambiguity in my grammar. Thank you for suggesting this.


Use eslint-config-stripes

Switches to using shared FOLIO eslint config: https://github.com/folio-org/eslint-config-stripes

i'm down with this 👍

Need to merge https://github.com/thefrontside/ui-eholdings/pull/79 first.


@conda-forge-admin, please update for conda-build 3

Hi! This is the friendly automated conda-forge-webservice.
I just wanted to let you know that I updated the recipe for conda-build 3 in conda-forge/r-alakazam-feedstock#5.

@conda-forge-admin, please update circle

Hi! This is the friendly automated conda-forge-webservice.
I just wanted to let you know that I updated the circle-ci deploy key and followed the project.


Update jtool to latest

After making all changes to the cask:

[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} left no offenses.
[x] The commit message includes the cask’s name and version.

Jonathan no longer updates or bundles the man page.


Try a colour layer to show how the designspace has been distorted

First attempt using RGB mixing did not work very well.
Second attempt (43f13fdffaff5f9dd1c01375982fbffab7f3bef9) using HSL mixing worked very well, where we blend a hue from the angle that the transformed location makes in its quadrant (thus the colours are symmetrical about the x-axis and about the y-axis). We’re using the following values for normalized values of x and y.
Hue: When y=0 we want hue=0, when x=0 we want hue=180. When both x and y are non-zero we want x and y to have hue = atan2(y, x) * 180 / pi * 2. (The the *2 factor transforms [0,90] to [0,180], which gives a wide spread of colours.)
Saturation: We’re using max(x, y).
Lightness: We use 50%.
In the screenshots below, the first shows two untransformed quadrants; the second has a "fenced" rectangle made with 5 mappings. Note that the vertical line defined by the two left markers effectively smears its values all the way to the right. Note also that wdth (the y-axis value) can still vary, as is shown by the vertical gradient within the rectangular zone.

Very nice article on colour saved here for reference: Color Formats in CSS by Joshua Comeau.


The logo of the matrix was without the attribute alt.

Description

It is an important attribute used specifies an alternate text for an image that cannot be displayed.
The project has the option switch language, so I took advantage of the opportunity to add the option at alt in English/Portuguese.
How to test?

Switch language and logo inspect.
Expected behavior

Check down:
Version En
Version PT-BR

Hey @silvanavlima, Thanks for your contribution!
Can you make a rebase based in develop branch?


iplot_qsphere 'local phase angle' subplot does not resize and is barely readible.

Informations

Qiskit Terra version: master
Python version: 3.7
Operating system: OSX

What is the current behavior?
The subplot for 'local phase angle' does not resize, leaving a barely readable figure, even when resizing as in #1356.
Steps to reproduce the problem
What is the expected behavior?
Suggested solutions

@filemaster

The 'local phase angle' image is only a legend, so it will not be resized with the graph. I you think it is small we could make it bigger or add a parameter to allow the user to define its size. Anyway it is not a bug.

I would call a visualization that you cannot read a bug.  I would just make it large enough to read if it can not be resized.

See: #1358

Now visible


Show most current N events rather than N table rows

Some events occupy multiple rows. Do not count those rows as events.

Looks like this has been deployed on the external site but it's not working 😢

Hm, I tested it with local override in my Chrome browser. Let me check.
On I see the problem! Only the first continuation line has a _999 suffix. The next one has _998 and so on. One sec, that's an easy fix.


[BUG] CRC failed to restart when use virtualbox

CRC failed to restart when use virtualbox on MacOS. When run crc start for the first time, it works, but after I run crc down then start, it failed at the step verifying validity of the cluster certificates, with below error message:
ERRO Error occurred: Error getting the IP: Could not find matching IP for MAC address 08002746a861
General information

OS: macOS
Hypervisor: VirtualBox
Did you run crc setup before starting it (Yes)?

CRC version
# Put `crc version` output here
version: 1.0.0-rc.0+34371d3
OpenShift version: 4.2.0-0.nightly-2019-09-26-192831 (embedded in binary)

CRC status
# Put `crc status` output here
ERRO Error occurred: The connection to the server api.crc.testing:6443 was refused - did you specify the right host or port?
 - exit status 1

CRC config
# Put `crc config view` output here
- cpus                                  : 4
- memory                                : 8192

Host Operating System
# put the output of `sw_vers` in case of Mac
ProductName:	Mac OS X
ProductVersion:	10.13.6
BuildVersion:	17G3025

Steps to reproduce

crc setup
crc start --vm-driver virtualbox --bundle crc_virtualbox_4.2.0-0.nightly-2019-09-26-192831.crcbundle
crc stop
crc start --vm-driver virtualbox --bundle crc_virtualbox_4.2.0-0.nightly-2019-09-26-192831.crcbundle

INFO Checking if running as non-root
INFO Checking if oc binary is cached
INFO Checking if VirtualBox is Installed
INFO Checking file permissions for /etc/resolver/testing
INFO Checking file permissions for /etc/hosts
INFO Starting CodeReady Containers VM for OpenShift 4.2.0-0.nightly-2019-09-26-192831...
INFO Verifying validity of the cluster certificates ...
ERRO Error occurred: Error getting the IP: Could not find matching IP for MAC address 08002746a861

Expected
Restart success
Actual
Restart fail after run crc stop, then crc start
Logs
https://gist.github.com/morningspace/af11f1af69c75001472a58a6eabe1ed2

Virtualbox is not a supported hypervisor. We offer a driver in case an alternative solution is needed. At te moment we can not assign bandwidth to work on issues related to this driver. If you can help pinpointing where this happens, that would be really helpful.

I tried a workaround for this a it works for me:
crc stop
cd ~/.crc/cache/*
mv id_rsa_crc id_rsa_crc.ori
cp -p ../../machines/crc/id_rsa ./id_rsa_crc
now you can restart
crc start -d virtualbox -b

Aha, we have dealt with the shared ssh key, which now on start gets replaced, and this might not have been handled (at all or incorrectly) in the vbox driver.
@praveenkumar WDYT?

this might be related to the following change: https://github.com/code-ready/machine/commit/f976ca771389098ad50d005b2f41808c9ebd3f3c

Just quick update... I've verified the workaround mentioned above did work... thanks @milan496
I will try to read the code and see if it's easy to fix when I have time :-)

With #838 VirtualBox support will be removed


rgbcct

Where are you using pytradfri (eg stand-alone, Home Assistant etc)
diyhue
Version of pytradfri
latest
Expected behaviour
white leds turn on when i change the temputure.
Actual behaviour
only the rgb replicates the color tempetures

I'm not quite following here, is diyhue using pytradfri? I couldn't find any references to it in that lib.

Closing issue as it seems to be placed in the wrong repo.


Handle when search has both show_only_matches and show_only_matches_children

PR to resolve #177

@QueroBartK

Not properly tested yet...

Extended the search test file. @QuertoBartK, please take a look at that file (tests/search-test.html), see if this resolves it, and we can merge it in.

Testing this I've actually come across a problem I hadn't noticed before. Namely that there seems to be a small problem with getting the data for the column if the nodes haven't been opened before the search.
What I mean with that is that when we begin in this situation (and don't open any nodes):

If we now search for "strange" (which should only find the leaf node) we'll see that the tree that should show everything didn't load the column nodes. If you open the nodes before searching than this problem is solved. see image:

if we search for "up" (which should result in the internal node) then we see the same problem as above. We'll see that for tree that has both shows_only_matches and the shows_only_matches_children on true will initially have the result node closed (with the option to open it). If you do open it then you miss the columns for these children.

So the problem seems to have something to do with opening a node for the first time while searching. I'm not quite sure how to fix it yet but will look into it.

I see the behaviour. That is odd. it certainly confirms the need for the test case!
There are several issues intermingled here. Can we list each separately?

Search with show_only_matches=false and do not open a node. Whether the search matches the tree node or one of the grid cells, if the node was closed when matched, it will not render the grid, only the node.
Search with show_only_matches=true and show_only_matches_children=true and do not open a node. When the node is matched, open children. They will not render the grid, only the node.

Correct?

Had to rebase...

@deitch yes that is correct

The problem is that when a node is drawn via a search, we block _prepare_grid for that node, because we are handling it via search.jstree event handler.
We have to use the search.jstree event so that we can handle removing nodes that should be hidden and only redrawing the relevant ones.
We could put som=true in search.jstree and som=false in redraw_node, but that feels messy. On the other hand, if we do not, we need to redraw every relevant node in search.jstree, which is seriously problematic.
I see no alternative to splitting it.

I think the first issue is resolved with the latest push. Please check.

Any suggestion for the second issue? The problem is that it redraws the node - which is how we capture it and prepare the grid - but show_only_matches=true, so we ignore it. If we don't, we will show too many nodes.
If we could do everything in redraw_node, then it would be easy, but it doesn't issue the relevant events.

Now I think we got it. Take a look @QueroBartK , like to pull this in and close it.

@deitch sorry I was on vacation last week and I had hoped to spend some time looking this over but didn't find a moment to do so. Anyway, I've now spent some time looking over the changes you made. For the most part they seem fine but at the moment I'm wondering how the function is_hidden works that you use here
Where is this function defined? I think I did saw the function in the source code of jstree but I'm not sure if it is in a scope that is accessible for us. I'll test this later today.

Ok, I've been able to test. so the function is_hidden is indeed the one from jstree and it is accessible to us. I've not encountered any more errors while testing this so 👍

It took a while to figure it out, but I did have a discussion with Ivan from jstree, and it is the right way to go. So we are good!


chore: sonar code smell reduction

Refactor the code to reduce the code smells

I'll do further improvement in the future but for now this is already better


Use custom markers for start and end

Closes #124
Thanks @nrenner! Icons could probably be improved though, I used the ones from https://github.com/mpetazzoni/leaflet-gpx but I think a designer could do something even better :).

I actually end up using the same icons as for POIs:

Yes indeed I wasnt sure myself about the bookmark icon, glad you pointed it out too 😅. Will update it

Thanks! This has been one of the still missing features to become a "proper" routing client and is one more step towards a v1.0.


Update lesson-5-2-enabling-and-configuring-package-configurations.md

Fixed typo

@MagMan68Classic : Thanks for your contribution! The author, @douglaslMS, has been notified to review your proposed change.

@GitHubber17 : Thanks for your contribution! The author, @douglaslMS, has been notified to review your proposed change.

Verified editorial correction.


[compiler] Cherrypick: Resolve 0x1::vector functions to opcodes

Picks #544
The phase in the compiler which maps calls to vector functions to opcodes only catches cases like std::vector::fun. If a user has 0x1::vector::fun (which he should be free to do) no resolution to opcodes happens, and the legacy native functions in the library are called. Those functions, however, should be deactivated as they represent a further surface of concern of security and gas metering.
This PR lets the vector functions resolve to opcodes if either (a) the symbolic address name is std (b) or the address resolves to 0x1.

EDIT: put this comment on the wrong PR

Your original comment though absolutely fitting for U256 ;-) We can't lock down main by incremental implementation of this, either do in one PR, or use a branch.
Still this one here needs some attention.


Add LaunchBuilder

This PR originally started as a fix for #485. As it turns out, adding slices to Launch was already possible, albeit more complicated as it should be since there were no builder functions available for slices.
This PR adds a dedicated LaunchBuilder that allows setting all fields for Launch, removes the builder-style functions from Launch as they were inconsistent with the rest of libcnb.rs anyways. I still want to tackle #166, but this isn't the PR for that.
I also added some docs for Slice that clarify what paths actually is (and renamed it). I opted to not implement a newtype for Go standard library path globs for now as we can spend our time better in other areas. I created an issue for it as #486.
Changelog

Replace builder style functions from Launch with a dedicated LaunchBuilder to be more consistent with other builders in the library. Additionally, all fields of Launch can now be modified via the builder pattern.
Rename paths field in launch::Slice to path_globs and add docs to make it clearer that these strings are Go standard library globs.

Closes #485, GUS-W-11486542

Currently looking into a fix for the integration test failures that are triggered by us having multiple heroku/procfile buildpacks in the builder used for the integration tests. These failures are very likely not related to this PR.

A little late on the draw, but I reviewed this. Looks good.
I see that the slice and slices functions take something that implements Into Slice. I don't see where we're implementing that anywhere other than the default that any struct can be made into itself (though perhaps I missed it).
Do we have examples of building a slice or should we just manually create the struct for now https://github.com/heroku/libcnb.rs/blob/d0a35f7adbfaaf814b2c6643aeb6f463aae8d777/libcnb-data/src/launch.rs#L225-L232 ?


Add special chars to regex valiadation

update of https://github.com/RedHatInsights/insights-remediations/pull/6

@aleccohan ping :wink:

@aleccohan ok done, but why don't you just merge it using "Rebase and merge" button in GitHub?


react-scripts 3.1.1 requires babel-eslint 10.0.2, which has false positive for for..in loops

react-scripts 3.1.1 requires babel-eslint 10.0.2, which has a bug where a no-unused-vars warning is raised for some loops. For example, here's some code that loops over a map:
export const parseQueryString = qs => {
  const searchParams = new URLSearchParams(qs);
  const parsed = {};
  for (let [key, value] of searchParams) {
    const already = parsed[key];
    if (already === undefined) {
      parsed[key] = value;
    } else if (Array.isArray(already)) {
      parsed[key].push(value);
    } else {
      parsed[key] = [already, value];
    }
  }
  return parsed;
};

babel-eslint 10.0.2 will produce two warnings:
  Line 4:  'key' is defined but never used    no-unused-vars
  Line 4:  'value' is defined but never used  no-unused-vars

This was reported upstream as https://github.com/eslint/eslint/issues/12117, and fixed in babel-eslint 10.0.3, however setting this version with react-scripts 3.1.1 causes this error when running react-scripts build:
There might be a problem with the project dependency tree.
It is likely not a bug in Create React App, but something you need to fix locally.

The react-scripts package provided by Create React App requires a dependency:

  "babel-eslint": "10.0.2"

Don't try to install it manually: your package manager does it automatically.
However, a different version of babel-eslint was detected higher up in the tree:

  /app/frontend/node_modules/babel-eslint (version: 10.0.3)

Manually installing incompatible versions is known to cause hard-to-debug issues.
...

It would be nice if react-scripts required babel-eslint 10.0.3 instead.

This appears to be a duplicate of https://github.com/facebook/create-react-app/issues/7566, and https://github.com/facebook/create-react-app/pull/7594 would be my proposed solution as well.


[BUG] Worker not processing messages from mongodb broker

Describe the bug
I was trying, to get this broker working with dramatiq. The messages are added to queue on mongodb but are not consumed by the worker process.
To check if there is a fundamental issue with my code, I tried using the same with redis broker and it is processing the messages.
Steps To Reproduce
test_script.py
`import dramatiq
from dramatiq_mongodb import MongoDBBroker
from pymongo import MongoClient
from pymongo.database import Database
client = MongoClient("mongodb://localhost:27017/")
broker_db = Database(client, "events")
broker = MongoDBBroker(database=broker_db)
@dramatiq.actor(broker=broker)
def add(x, y):
print(x + y)
`
Steps to reproduce the behavior:

pip install dramatiq-mongodb
pip install dramatiq
Perform add.send(2, 3) using python console. Message will be added to queue.
Run worker: dramatiq test_script

Expected behavior
5 should be printed in worker logs.
Screenshots
Screenshot of message received on mongodb:

Worker logs:
(venv) udit_pandey@home:/data/PycharmProjects/demo$ dramatiq test_script [2022-06-12 14:27:58,813] [PID 1205555] [MainThread] [dramatiq.MainProcess] [INFO] Dramatiq '1.13.0' is booting up. [2022-06-12 14:27:58,736] [PID 1205557] [MainThread] [dramatiq.WorkerProcess(0)] [INFO] Worker process is ready for action. [2022-06-12 14:27:58,752] [PID 1205558] [MainThread] [dramatiq.WorkerProcess(1)] [INFO] Worker process is ready for action. [2022-06-12 14:27:58,739] [PID 1205559] [MainThread] [dramatiq.WorkerProcess(2)] [INFO] Worker process is ready for action. [2022-06-12 14:27:58,726] [PID 1205560] [MainThread] [dramatiq.WorkerProcess(3)] [INFO] Worker process is ready for action. [2022-06-12 14:27:58,740] [PID 1205561] [MainThread] [dramatiq.WorkerProcess(4)] [INFO] Worker process is ready for action. [2022-06-12 14:27:58,811] [PID 1205562] [MainThread] [dramatiq.WorkerProcess(5)] [INFO] Worker process is ready for action. [2022-06-12 14:27:58,727] [PID 1205563] [MainThread] [dramatiq.WorkerProcess(6)] [INFO] Worker process is ready for action. [2022-06-12 14:27:58,793] [PID 1205564] [MainThread] [dramatiq.WorkerProcess(7)] [INFO] Worker process is ready for action. [2022-06-12 14:27:58,813] [PID 1205682] [MainThread] [dramatiq.ForkProcess(0)] [INFO] Fork process 'dramatiq.middleware.prometheus:_run_exposition_server' is ready for action.
Enviroment

OS: Ubuntu 20.04
Python Version:  3.8.10
dramatiq-mongodb Version: 0.6.0
dramatiq Version: 1.13.0

Priority
CRITICAL

Fantastic bug report! Look into this now.


How about add 'To the Top' Button on user's display

As everyone knows, there is a 'back to top' Button
on the very footer of original KLAS.
And I want it to follow user's display.
Because now the scroll is too long to go all the way up and
sometimes I want to right go to the global menu in the middle of page.
So by fixing it on the lower right side of browser it's gonna be more useful than now.

I think that's a good idea.

$('.btnup').css({
	position: "fixed",
	right: "30px",
	bottom: "30px"
});

적당히 요런 코드를 window.onload 안에 넣으면 될 거 같습니다.

Thanks to @joyfuI for the solution! I've updated it. Please check it and close the issue.


Create nx_version.txt

[First task] Install networkx on your computer and create a PR to this repository.

thanks @mmbogajemimah


Don’t pass --enable-test-discovery when building on non-Darwin

Test discovery is enabled by default since Swift 5.4 and the flag has recently been removed.

@swift-ci Please test

@swift-ci Please test macOS

@swift-ci Please test macOS


Proxy headersAllow headers to be passed to proxy

Adding a header field to proxies will pass any headers to the proxy connection.

Hi @zulrang, thanks for trying to help move this issue forward. Unfortunately, I don't think we'll be likely to take this approach. Adding a special cased "headers" entry to proxies is going to cause weird behaviour. Both because it's not a proxy, and because this is a hard thing to document and get people to use properly.
As Lukasa said in the original issue, I'm not sure if there's a clean interim solution right now. We can work towards implementing a fix in 3.0 but I don't think we want to implement a hacky solution that needs to be maintained until then.


How to build a custom dataset for the graph2seq model?

❓ Questions and Help
I want to use the graph2seq model that would encode an input source code AST as a graph and would decode to a target sequence.
So far I am building the graph model using the GraphData API to build source code AST as a graph. However, how would I feed the sequence data to the decoder?
I don’t find one complete example showing the whole flow. Can anyone point me in the right direction?

Can you please give a more concrete description?
Does the step of customizing your dataset trouble you or how to do the decoding when you finished GNN computing?

I am using the NMT example from graph4nlp.
INPUT:

OUTPUT: i< array.length
I started following class IWSLT14Dataset which inherited Text2TextDataset in that example.
I converted the INPUT graph in the picture into a GraphData object. However, the steps are not clear to me and I don’t find a complete example showing the whole flow for feeding custom data. Can anyone point me in the right direction?

@AlanSwift any feedback is well come.

Sorry for the late reply. I think you don't know how to convert your raw inputs to GraphData.
An example is the dependency graph which converts the dependency parsing tree to GraphData. Please refer to https://github.com/graph4ai/graph4nlp/blob/master/graph4nlp/pytorch/modules/graph_construction/dependency_graph_construction.py.

@AlanSwift I have already parsed my file and converted that raw input into GraphData. Just to clarify, an example with hard coded data for illustration:
   def AST2Graph():

        g = GraphData()

        # add leaf nodes (blue squares T)
        g.add_nodes(36)

        # add leaf nodes attributes
        g.node_attributes[0]['node_attr'] = 'T1:String'
        g.node_attributes[1]['node_attr'] = 'T2:basicIfElseMethod'
        g.node_attributes[2]['node_attr'] = 'T3:int'
        g.node_attributes[3]['node_attr'] = 'T4:hour'
        ......

        # add non-terminals nodes
        g.add_nodes(32)

        # add attributes to the node terminals
        g.node_attributes[36]['node_attr'] = 'NT1:MethodDeclaration (lineNumber=2)'
        g.node_attributes[37]['node_attr'] = 'NT2:SimpleType (lineNumber=2)'
        g.node_attributes[38]['node_attr'] = 'NT3:SingleVariableDeclaration (lineNumber=2)'
      ....

        # add the relationships non-terminal (parent) and terminal nodes (leafs/child)- the first 36 relationships
        g.add_edges(
            [36,37,38,39,42,43,43,44,45,45,45,48,48,50,50,51,51,52,53,53,53,56,56,58,58, 59, 59,62, 63,63,65,66,66,66,67,67],
            [1,0,3,2,4,5,6,7,8,9,10,11,12,15,16,13,14,17,18,19,20,21,22,25,26,23,24,27,28,29,30,31,32,33,34,35])

        # add edge attribute = "child"
        for i in range(g.get_edge_num()):
            g.edge_attributes[i]['edge_attr'] = 'child'

        # add the rest of the individual nodes V's, S's
        g.add_nodes(7)

        g.node_attributes[68]['node_attr'] = 'S6:println'
        g.node_attributes[69]['node_attr'] = 'S2:hour'
        g.node_attributes[70]['node_attr'] = 'S7:prefix'
        g.node_attributes[71]['node_attr'] = 'S3:time'
        g.node_attributes[72]['node_attr'] = 'S1:basicIfElseMethod'
        g.node_attributes[73]['node_attr'] = 'S4:System'
        g.node_attributes[74]['node_attr'] = 'S5:out'
        ...

        return g

So far my attempt has been to write a parser called AST2TextDataSet in the similar spirit of Text2TextDataSet.
But from you it sounds like I should write a class like ASTBasedGraphConstruction  following DependencyBasedGraphConstruction  and overwrite the following methods:

parsing
_construct_static_graph

Is this understanding correct?

R1: The only need is you have to implement the topology function since this API is called during the pipeline.
parsing is only an independent "raw string to parsing results" procedure.
_construct_static_graph is following parsing, which takes the parsing outputs and constructs the graph.
These two APIs are called in topology. And the dataset will only call the topology API.
add_vocab is a deprecated API and will not be used. So you can ignore this feature.
R2: Explanation of _graph_connect: We assume the raw inputs are a paragraph consisting of two sentences: "sentence A. sentence B." We will firstly separate sentences and construct a sub-graph for each sentence: sentence A --> subgraph A, sentence B --> subgraph B. Then we will call the _graph_connect and connect these two disjoint subgraphs to one big graph. Currently, we simply add the edges between the tail node of A and the head node of graph B.
Notes: batching is another technique. During batching, the separate graphs will never be connected and keep disjoint.

Thanks for your response. A couple of questions:

Q1: for my case I only have only one graph input at a time and I do not have sentence one and sentence two. So I presume I should set the merge_strategy as None and that should do it.

Q2: I have only one graph at a time i.e. no case like sentence A. sentence B. So in my case, no need to implement _graph_connect - right?

Q3: How is the vocabulary generated? Can I learn the embedding (like word2vec) as part of the training?

@AlanSwift I am reading dataset from DOT file format and building my topology that way. Would this generic implementation be of any interest to be added to the graph4nlp project?

Thanks for your response. A couple of questions:

Q1: for my case, I only have one graph input at a time i.e., I do not have sentence one and sentence two. So I presume I should set the merge_strategy as None and that should do it.
Q2: I have only one graph at a time i.e. no case like sentence A. sentence B. So in my case, no need to implement _graph_connect - right?
Q3: How is the vocabulary generated? Can I learn the embedding (like word2vec) as part of the training?

R1 & R2: Your input is a single graph and you don't need a parsing procedure. You should inherit StaticGraphConstructionBase and implement your ASTGraphConstruction. Thus merge_strategy, sequentual_link, _graph_connect can be dropped according to your need. An example is a dataset for the NER graph .
R3: Vocabulary is built in dataset. You can refer to the implement.

@AlanSwift I am reading dataset from DOT file format and building my topology that way. Would this generic implementation be of any interest to be added to the graph4nlp project?

Currently, this is not in our plan.

R1 & R2: Your input is a single graph and you don't need a parsing procedure. You should inherit StaticGraphConstructionBase and implement your ASTGraphConstruction. Thus merge_strategy, sequentual_link, _graph_connect can be dropped according to your need. An example is a dataset for the NER graph .

For my case, graph is a static dependency graph and I build the GraphData from inside topology method i.e., a simplified implementation of ASTGraphConstruction illustrated below:
class GenericGraphConstruction(StaticGraphConstructionBase):
    ….
    def topology(
            cls,
            raw_text_data,
            nlp_processor,
            processor_args,
            merge_strategy,
            edge_strategy,
            sequential_link=True,
            verbose=0,
    ):
        """
            Build graphdata From raw dot file string.
        """
        ret_graph : GraphData = build_ast_from_dot_string(raw_text_data)
        return ret_graph

But the challenge is in class Dataset(torch.utils.data.Dataset): _build_topology_process is not flexible and it always connects to stanfordcorenlp.StanfordCoreNLP which I do not need for a generic custom dataset. Fuethermore, it expects IEBasedGraphConstruction, DependencyBasedGraphConstruction or ConstituencyBasedGraphConstruction.
        if graph_type == "static":
            print("Connecting to stanfordcorenlp server...")
            processor = stanfordcorenlp.StanfordCoreNLP(
                "http://localhost", port=port, timeout=timeout
            )

            if topology_builder == IEBasedGraphConstruction:
                ...
                processor_args = [props_coref, props_openie]
            elif topology_builder == DependencyBasedGraphConstruction:
                processor_args = {
                    "annotators": "ssplit,tokenize,depparse",
                    "tokenize.options": "splitHyphenated=false,normalizeParentheses=false,"
                    "normalizeOtherBrackets=false",
                    "tokenize.whitespace": True,
                    "ssplit.isOneSentence": True,
                    "outputFormat": "json",
                }
            elif topology_builder == ConstituencyBasedGraphConstruction:
                processor_args = {
                    "annotators": "tokenize,ssplit,pos,parse",
                    "tokenize.options": "splitHyphenated=false,normalizeParentheses=false,"
                    "normalizeOtherBrackets=false",
                    "tokenize.whitespace": True,
                    "ssplit.isOneSentence": False,
                    "outputFormat": "json",
                }
            else:
                raise NotImplementedError

As a result, my custom topology builder does not get invoked. It appears to me I have to modify this section in the original graph4nlp library and incorporate my custom topology builder ASTGraphConstruction under static graph type.
However, that way it is not customizable at all. In case I am missing something, do let me know. What would be the appropriate implementation?

Yes, this is an urgent plan we are trying to fix on the plan. As a result, it will be improved in the 0.6 version.
Currently, I'm afraid you have to do it by overriding the _build_topology_process function as follows:
class YourDataset(Text2TextDataset): # I guess that the Text2TextDataset is your need

    @staticmethod
    def _build_topology_process(
        data_items,
        topology_builder,
        graph_type,
        dynamic_graph_type,
        dynamic_init_topology_builder,
        merge_strategy,
        edge_strategy,
        dynamic_init_topology_aux_args,
        lower_case,
        tokenizer,
        port,
        timeout,
    ):
   # call your topology builder to construct the AST graph

We are sorry for this inconvenience. The experience will be improved in the next two versions.

This issue will be closed. Please feel free to reopen if necessary.


⚠ Digital Ocean - https://status.digitalocean.com/ has degraded performance

In 2e2efb2, Digital Ocean - https://status.digitalocean.com/ (https://status.digitalocean.com/api/v2/status.json) experienced degraded performance:

HTTP code: 200
Response time: 176 ms

Resolved: Digital Ocean - https://status.digitalocean.com/ performance has improved in 3113bf8.


perf: attempt to slightly speed up the table querying

Pull request
Issue tracker
Fixes will automatically close the related issue
Fixes # N/A
Feature
Describe feature of pull request
Unit test

[x] Done

Manual test

[x] Done

Code Review

Unit and manual test pass
GitHub Action CI pass
At least one contributor reviews and votes
Can be merged clean without conflicts
PR will be merged by rebase upstream base

Additional Info

@ksqsf Hm, looks like I'm going in the wrong direction ......


Cannot pickle Trie

Since node uses slots and getstate is not implemented, a Trie cannot be pickled:
TypeError: a class that defines __slots__ without defining __getstate__ cannot be pickled

Sounds like a security feature to me.
Added pickling at HEAD though.


onPaginationChanged called 4 times when book opens

This issue is a Bug
Expected Behaviour
I expect the pagination changed event to only be emitted once when the book opens.
Observed behaviour
I see that it is called 4 times when the book is first opened.
Steps to reproduce

Set a breakpoint in openPageInternal, where it calls onPaginationChanged. (Or set a breakpoint within the onPaginationChanged method.)
Refresh the book and notice that when it is first loaded, this method gets called 4 times.

Product

Native application (Readium SDK C++)

Android and iOS SDK Launchers, and our hybrid apps.

Additional information
At the top you can see where I set the breakpoint in the readium-shared-js_all.js build artifact. Then you can see the 4 call stacks where the onPaginationChanged method gets called 4 times. This causes a flicker that did not formerly occur.

Sounds like the so-called "resize sensor" is kicking-in several times in a row (outside of the 100ms updatePagination debounce time window) because of font loading, media queries / CSS, etc.
Are you able to reproduce this exact event sequence for all reflowable books?
@olivierkorner
code reference:
https://github.com/readium/readium-shared-js/blob/develop/js/views/reflowable_view.js#L865

I actually am not able to reproduce this on Android, because every time I refresh from the Chrome Inspector it loses my breakpoints. Strange, it didn't do this before. I will see if I can figure that out.
In the meantime, I'm testing in iOS and finding that, yes, the ReadiumSDK.Events.PAGINATION_CHANGED event is being emitted four times.
I forget about the 100ms debounce time window you mentioned. But it doesn't seem to be working in this case, or maybe they are emitted >100ms apart.
The issue I was looking at when I found this is just why the cover image flickers when I open a book. And it seems it is flickering because of a redraw triggered by something in the initial layout of the book. (It does not flicker when navigating to a different spine item and returning.)
Curiously, the PAGINATION_CHANGED event is emitted 4 times on page load of reflowable books (I've tested 2 so far) but the one FXL book I tested only emits the PAGINATION_CHANGED event twice. And it does not flicker. Perhaps the flickering is caused by something in the columnization.
It looks like in the two reflowable books I've tested, the order is always the same in terms of the call stack (as in the image above). I can keep testing with other reflowable books if that would be useful.

Since it only occurs on book open, I can find a workaround where I, for instance, set the iframe opacity to 0.01 on READER_INITIALIZED which is called first, and then increment the counter on every PAGINATION_CHANGED event and change opacity back to 1 on the 4th event. Assuming it does happen consistently like that every time, which is something I can verify. Not the most robust solution but it may take care of this. Or just setting a timeout from READER_INITIALIZED and "hiding" the iframe (opacity 0.01 to make sure it can still be laid out in the DOM) and then setting opacity back to 1 after a certain interval of time.

@jdempcy   Any progress on this Jonah?

Just a thought: there is currently no logic in the "Resize Sensor" event handler to detect that it fires too many times (as per a predefined ceiling value) within a given time window (some kind of limit for the debouncer and/or throttler). I remember seeing an edge case in a web browser (ReadiumJS cloud reader) where the page would just keep reloading because of the webview control not settling on a stable document height (probably because of image layout passes in column-paginated reflowable mode, and there were font faces too).
Bottom line: it looks like in the end the document height settles (and consequently the Resize Sensor stops firing), but visible excessive flickering is clearly a problem.

Hiii................... I have successfully build the project. some problem i am facing. if i am adding alert message in radium-shared-js_all.js , it is automatically deleting. it is every time creating new.... Can you please help me....

PAGINATION_CHANGED is still firing 3 times for us but we have no visible flicker. This could be due to modifications from our own app, however. I have not verified with either the iOS or SDK Launcher apps to see if the flicker is still there.


${CURRENT_PACKAGES_DIR}/debug/bin/*.exe)

https://github.com/microsoft/vcpkg/blob/05392981d355f8c46fba32b21f33eeb46a8666f0/ports/pcl/portfile.cmake#L1-L78

Hi @Jaroslavaskarmazinas
Thanks for posting this issue.
Could you please help describe this issue more clearly? What's the problem? What do you want us to do?

Closing for now; please feel free to open a new issue with more details!


Unable to create new address

I was working with the binance web3js. I was using PHP so I had to look for an alternative library and I saw this one.
But somehow, I've been unable to create a wallet, this is what I primarily need to fix on my network.
Thanks. The JavaScript demo was from here : https://docs.binance.org/smart-chain/developer/create-wallet.html
But the create function doesn't work or asks for a RequestInterface as a parameter and I don't know how to pass that.

web3 php does NOT allow wallet creation yet, that is because wallets are client side, like js, but php is server side.


Updated intro sentence

Found this lib through Awesome Redux, but initially I wasn't sure exactly what it does.  After looking into it some more I got it, but I think adding 'async' makes it much clearer and mentioning the parallel option in the first sentence helps.
Perhaps consider a name change too?  The actions are not being "combined" and "combine" doesn't make me think of the serial/parallel aspect that is this lib's main point.
Perhaps redux-sequence-actions?  redux-order-actions?

Also, BTW, nice little package.  It definitely looks like something I could use!

Hi @mindjuice, thank you for your PR. I think it makes sense. Let's discuss in #5?


Creating a signal with an argument tries to link it before automatically making the function.

Tested versions
Occurred in:

v4.2.2-stable
v4.3-stable

System information
Godot v4.3.stable - Windows 10.0.19045 - GLES3 (Compatibility) - Intel(R) HD Graphics 620 (Intel Corporation; <IP_ADDRESS>1) - Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz (4 Threads)
Issue description
When creating a signal with an argument and letting it automatically create the function in the linked script it gives this error right before creating the function.
Cannot connect to 'focus_entered': the provided callable is not valid: Node2D(node_2d.gd)::_on_button_focus_entered

This occurs on any signal type.
After this error it creates the function in the script.
This error stops the signal from being created.

Upon attempting to make the signal again it wont give the error and correctly adds the signal, My guess is something is making it check if the function exists before it makes it.
Attached is a video of me recreating this bug but i forgot to record the signal creation screen, in the screen all i do is add a bool argument.
https://github.com/user-attachments/assets/678d0a19-4747-4d2a-8ded-cdba77dea08e
Steps to reproduce

Create something a signal can be added to.
Link a script to your node.
Create a signal with an argument of any kind.

Minimal reproduction project (MRP)
N/A

Please show the complete workflow, you are skipping potentially important steps

Uploading 2024-08-17 00-41-30.mp4…

You didn't upload, you need to wait until it's finished uploading

yeah i noticed, i know how to use github lol
https://github.com/user-attachments/assets/90f76449-cb55-47c6-90e8-b25371b43ec0


Title: UI improvements in TO-DO List and addition of button to mark TODO as completed

Is your feature request related to a problem? Please describe.

The buttons to edit and remove 'TODO' aren't centered horizontally inside the TODO's element.
Additionally, a separate checkbox or a button can be added to mark the TODO/task as completed.

Describe the solution you'd like.
Addition of a button and fixing the UI changes.
Describe alternatives you've considered.
UI improvements to make it look more appealing to the users.
Add any other context or screenshots about the feature request here.

@swapnilsparsh Can you please assign this issue to me under GSSoC'24 to work on this. It would be great for me to work on this.

@AtharvKasar04 All the best 👍🏻


Set the correct baseline for create tables script

We need to use the HDF-<IP_ADDRESS> branch create_tables.sql as the baseline for v001__create_tables.sql (both mysql and postgres).
Any new changes should go to new scripts. Without that the migrations from HDF-3.0 to HDF-3.1 would fail or will not apply the required changes (due to CREATE TABLE IF NOT EXISTS)
We also made minor release after 3.0.0 (https://github.com/hortonworks/streamline/tree/HDF-<IP_ADDRESS>). We also need to make sure it will work if someone migrates from that minor release to HDF-3.1.

Branch for HDF-<IP_ADDRESS> https://github.com/hortonworks/streamline/tree/HDF-<IP_ADDRESS>


[OSF-7636] Add ability to inherit tags from parent node

Purpose
Make it so users can, upon creation of a new component, choose to import all tags from the parent or no tags from the parent.
Changes
Minor changes to add component modal and node serializer.
Side effects
None that I know of.
Ticket
https://openscience.atlassian.net/browse/OSF-7636

@brianjgeiger right you are, this should work better.


OnDiskSM: Consistency check that only reached SS get applied

Fixes #156

Codecov Report

Merging #161 (57da587) into master (ca6b5ca) will decrease coverage by 0.15%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #161      +/-   ##
==========================================
- Coverage   83.95%   83.80%   -0.14%
==========================================
  Files          10       10
  Lines        3444     3444
==========================================
- Hits         2891     2886       -5
- Misses        341      343       +2
- Partials      212      215       +3

Impacted Files
Coverage Δ

engine.go
83.02% <0.00%> (-0.43%)
:arrow_down:

node.go
80.84% <0.00%> (-0.35%)
:arrow_down:

event.go
64.61% <0.00%> (ø)

request.go
91.97% <0.00%> (ø)

nodehost.go
85.65% <0.00%> (+0.12%)
:arrow_up:

Continue to review full report at Codecov.

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

Codecov Report

Merging #161 (57da587) into master (ca6b5ca) will decrease coverage by 0.15%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #161      +/-   ##
==========================================
- Coverage   83.95%   83.80%   -0.14%
==========================================
  Files          10       10
  Lines        3444     3444
==========================================
- Hits         2891     2886       -5
- Misses        341      343       +2
- Partials      212      215       +3

Impacted Files
Coverage Δ

engine.go
83.02% <0.00%> (-0.43%)
:arrow_down:

node.go
80.84% <0.00%> (-0.35%)
:arrow_down:

event.go
64.61% <0.00%> (ø)

request.go
91.97% <0.00%> (ø)

nodehost.go
85.65% <0.00%> (+0.12%)
:arrow_up:

Continue to review full report at Codecov.

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

I'll add tests as soon as the PR comes out of draft and is fine for you @lni.

I'll add tests as soon as the PR comes out of draft and is fine for you @lni.

Thanks, merged.

@stffabi all contributors are listed in this project's AUTHORS file. do you have an email address that you want to put it there as a more formal kind of identity?

@lni thanks for merging. You can put in<EMAIL_ADDRESS>for the AUTHORS file, thanks.


Problem with signing CLA after changing username/email

https://github.com/pimcore/pimcore/pull/1145 says I'd have to sign the CLA for pimcore/pimcore.
I've done that before for that repository but changed username and email address since then. Now when I try to sign again as requested on https://cla-assistant.io/pimcore/pimcore?pullRequest=1145 it reads „You have signed the CLA for pimcore/pimcore“.
I contacted GitHub support and they said that this sounds like a bug with CLA Assistant and recommended to open an issue her.

That sounds for me like a Problem with session cookies... Could you try to sign out from Github, logout from CLA assistant (https://cla-assistant.io/logout) and call the url again https://cla-assistant.io/pimcore/pimcore?pullRequest=1145. Or call this url from another browser.
If this won't help, I'll be able to look in it next week first 😄 (sorry for that)

Signing out and back in helped. Thanks!


suggestion: configure windows fonts to be available to wsl applications

I'm guessing that Windows always has a fonts folder in %SystemRoot%.
It would be good to symlink that to ~/.local/share/fonts or into /usr/share/fonts/ and run fc-cache.

I'm guessing that Windows always has a fonts folder in %SystemRoot%.

Or perhaps windir.


feat(external-router): truncate driver request and response

PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our guidelines: https://github.com/graycoreio/daffodil/blob/master/CONTRIBUTING.md#commit
[x] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

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

What is the current behavior?

External router driver do not truncate the request or response
What is the new behavior?

Magento drivers truncate the query parameters and fragments from the request
Magento drivers truncate the leading slash from the response
The testing driver truncates query params, fragments, and the leading slash from the request URL before performing the lookup in its config. If the lookup succeeds, the truncated URL is used for the response.

Does this PR introduce a breaking change?
[ ] Yes
[x] No

Other information

how do we know for sure that there won't be any fragments or query parameters in the resolvable url? Should this just truncate urls in the same way that product and category do? I.e. by a passed in function via injection token.

how do we know for sure that there won't be any fragments or query parameters in the resolvable url

In the request or response URL?

request

I do truncate the query params and fragments from the request URI though. Do you mean what if the query params and fragments are significant and we should allow app devs to pass that info to Magento if they want?

Do you mean what if the query params and fragments are significant and we should allow app devs to pass that info to Magento if they want?

yea, that one

yeah I guess I can add a config for the external router magento driver. @damienwebdev does this make sense to you?

@lderrickable after some discussion we have decided to remove truncate on the request URL for Magento 2.4.2. This is because 2.4.2 can handle query params and fragments where 2.4.1 would crash. It doesn't make sense to give 2.4.1 configurable truncation since the requirements are pretty narrow.

lgtm


[TRAVEL] Landing-page footer

Adding the "Footer" component for the Traveler template landing page. Link to component in staging:
http://metalab-travel-landing-footer-87bf.surge.sh/templates/travel/travel.amp
This component contains a gallery of images, a footer section with links and an email sign-up input, a search input, and a container for pulling in the "latest blog posts".
The blog post is not displayed on desktop. On mobile (breakpoint --breakpoint-v-md), the blog post displays, and the search input is hidden.

@gifteconomist   can you rebase this and rest of the PRs ?

@camelburrito This branch is rebased and the css/img/icon dir have been structured correctly

@gifteconomist This needs a rebase too many conflicts here