Termination grace period is not respected when the pod is killed.

Hi Team,
We started to notice weird behaviour where many locks were not released when the tf-runners were killed, even when the graceful shutdown was set to 1 hour.
After some investigation, we noticed that when the pod was restarted, the SIGKILL forcefully killed the Terraform process; therefore, it doesn’t start a graceful shutdown, which sometimes ends with the state lock not being released.
We found these related issues:
https://github.com/hashicorp/terraform-exec/pull/332
https://github.com/hashicorp/terraform-exec/pull/334
logs:
2022-11-29T21:42:10.266800268Z		Error message: workspace already locked (lock ID:
2022-11-29T21:42:10.266795895Z
2022-11-29T21:42:10.266789968Z		Error: Error acquiring the state lock
2022-11-29T21:42:10.266760286Z
2022-11-29T21:42:07.606685256Z	info	creating a plan
2022-11-29T21:42:07.587542369Z	info	mapping the Spec.VarsFrom
2022-11-29T21:42:07.587537646Z	info	mapping the Spec.Vars
2022-11-29T21:42:07.587512719Z	info	setting up the input variables
2022-11-29T21:42:07.58182462Z		Terraform has been successfully initialized!
2022-11-29T21:42:07.581792524Z
2022-11-29T21:42:07.581420214Z		you run "terraform init" in the future.
2022-11-29T21:42:07.581416395Z		so that Terraform can guarantee to make the same selections by default when
2022-11-29T21:42:07.58141258Z		selections it made above. Include this file in your version control repository
2022-11-29T21:42:07.581408747Z		Terraform has created a lock file .terraform.lock.hcl to record the provider
2022-11-29T21:42:07.581401961Z
2022-11-29T21:42:00.820815414Z		Initializing provider plugins...
2022-11-29T21:42:00.820797552Z
2022-11-29T21:42:00.481037098Z		use this backend unless the backend configuration changes.
2022-11-29T21:42:00.481032663Z		Successfully configured the backend "remote"! Terraform will automatically
2022-11-29T21:42:00.48101017Z
2022-11-29T21:42:00.198431966Z		Initializing the backend...
2022-11-29T21:41:58.413545513Z		Upgrading modules...
2022-11-29T21:41:58.386167971Z		}
2022-11-29T21:41:58.38616475Z		  "terraform_outdated": true
2022-11-29T21:41:58.386161487Z		  "provider_selections": {},
2022-11-29T21:41:58.386157733Z		  "platform": "linux_amd64",
2022-11-29T21:41:58.386153382Z		  "terraform_version": "1.1.9",
2022-11-29T21:41:58.386133029Z		{
2022-11-29T21:41:58.251028908Z	info	mapping the Spec.BackendConfigsFrom
2022-11-29T21:41:58.249567118Z	info	initializing
2022-11-29T21:41:58.245264737Z	info	getting envvars from os environments
2022-11-29T21:41:58.24525401Z	info	setting envvars
2022-11-29T21:41:58.241270762Z	info	creating new terraform
2022-11-29T21:41:58.237230706Z	info	looking for path
2022-11-29T21:41:58.229338345Z	info	processing configuration
2022-11-29T21:41:58.225878148Z	info	write config to file
2022-11-29T21:41:58.225855343Z	info	write backend config
2022-11-29T21:41:58.223764885Z	info	preparing for Upload and Extraction
2022-11-29T21:36:25.886572001Z	info	cleanup TmpDir

2022-11-29T21:36:25.88396556Z	error	error creating the plan
2022-11-29T21:36:16.127120371Z	info	creating a plan

events:
2022-11-29 21:36:26	Normal	Pod	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner	Stopping container tf-runner
2022-11-29 21:36:26	Warning	Terraform	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d	error running Plan: rpc error: code = Internal desc = signal: killed
2022-11-29 21:36:25	Warning	Terraform	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d	Plan error: rpc error: code = Internal desc = signal: killed
2022-11-29 21:35:54	Normal	Pod	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner	Started container tf-runner
2022-11-29 21:35:53	Normal	Pod	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner	Created container tf-runner
2022-11-29 21:35:53	Normal	Pod	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner	Container image "ghcr.io/weaveworks/tf-runner:v0.13.0-rc.1" already present on machine
2022-11-29 21:35:51	Normal	Pod	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner	Successfully assigned terraform-runners/env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner
2022-11-29 21:35:46	Normal	Pod	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner	Successfully assigned terraform-runners/env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner
2022-11-29 21:35:46	Normal	Pod	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner	Stopping container tf-runner
2022-11-29 21:35:46	Normal	Pod	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner	Started container tf-runner
2022-11-29 21:35:46	Normal	Pod	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner	Created container tf-runner
2022-11-29 21:35:46	Normal	Pod	env-76461b07-9216-4d60-8a43-c5a30ddfdd8d-tf-runner	Container image "ghcr.io/weaveworks/tf-runner:v0.13.0-rc.1" already present on machine

Is there something we can do to avoid this behaviour without setting force unlock to auto?
Thanks

@Nalum could you please give some advice here?

BTW @TarasLykhenko
could you please update tf-controller to v0.13.1?
the v0.13.0.rc.1 has many known issues fixed by the more recent version.

Unfortunately I'm not sure there is another way to handle this without dealing with the locked state, at least until hashicorp/terraform-exec#334 comes into play.
You don't have to use the auto value but you will need to deal with the locked state either with auto or manually by setting the required fields:
spec:
  tfstate:
    forceUnlock: "yes"
    lockIdentifier: [lock-id-here]

FYI check out my workaround from https://github.com/weaveworks/tf-controller/issues/531#issuecomment-1452292954

This is from a write-up I did analysing the problem in some depth.
When Kubernetes terminates a pod the init process is sent SIGTERM.
tf-controller uses tini https://github.com/weaveworks/tf-controller/blob/29c37473906d2d664e25db86f76eb5832ec5c7ee/runner-base.Dockerfile#L66
ENTRYPOINT [ "/sbin/tini", "--", "tf-runner" ]

tini handles receiving signals, by  signalling its child process (in this case the tf-runner).
/* There is a signal to handle here */
switch (sig.si_signo) {
case SIGCHLD:
	/* Special-cased, as we don't forward SIGCHLD. Instead, we'll
	 * fallthrough to reaping processes.
	 */
	PRINT_DEBUG("Received SIGCHLD");
	break;
default:
	PRINT_DEBUG("Passing signal: '%s'", strsignal(sig.si_signo));
	/* Forward anything else */
	if (kill(kill_process_group ? -child_pid : child_pid, sig.si_signo)) {
		if (errno == ESRCH) {
			PRINT_WARNING("Child was dead when forwarding signal");
		} else {
			PRINT_FATAL("Unexpected error when forwarding signal: '%s'", strerror(errno));
			return 1;
		}
	}
	break;

Note that tini can be configured to signal an entire process group, but see later for why this doesn't impact on the terraform process.
tf-runner sets itself up to handle signals, when the signal is received, the signal is placed on to a channel.
// catch the SIGTERM from the kubelet to gracefully terminate
sigterm := make(chan os.Signal, 1)
signal.Notify(sigterm, syscall.SIGTERM)
defer func() {
	signal.Stop(sigterm)
}()

This channel is passed through to the TerraformRunnerServer.
Within the Apply method, there is code that cancels a context upon receiving the signal.
ctx, cancel := context.WithCancel(ctx)
go func() {
	select {
	case <-r.Done:
		cancel()
	case <-ctx.Done():
	}
}()

This cancellation is significant, as the assumption here is that the tf-runner process is signalled with SIGTERM and this is resulting in the cancellation of the context.
This context is passed to github.com/hashicorp/terraform-exec through to tf-exec code which delegates executing the generated command-line to Go's exec.Command.
There are several implementations of runTerraformCmd but the Linux version is what applies here.
This code does this:
	cmd.SysProcAttr = &syscall.SysProcAttr{
		// kill children if parent is dead
		Pdeathsig: syscall.SIGKILL,
		// set process group ID
		Setpgid: true,
	}

This does two different things, Setpgid: true says that the child process should be put into a separate process group, this means that signals sent to the parent process (tf-runner) will never be automatically propagated to the child process (terraform), this is why even configuring tini to send signals to the process-group would not fix the problem we're seeing.
The other thing it does, Pdeathsig: syscall.SIGKILL is crucial because this impacts on how process termination occurs on Linux.
The runTerraformCmd code starts the child process and then waits for it to complete.
The current assumption is that the terraform process sets up similar signal handling to tf-runner and handles SIGTERM by unlocking the lock.
While the terraform process is executing, tf-runner is receiving a SIGTERM, and so it closes the context, this results in SIGKILL being sent to terraform.
This is bad!
Let's go back to the Pdeathsig configuration.
This sets an attribute on the spawned process (only on Linux) that defines the signal to be sent when the thread that started the process is terminated.
This is Go, we don't do threads...except that Goroutines are multiplexed on top of a set of threads that are managed by the Go runtime, the runtime can create and destroy threads as necessary, this describes the process really well.
So, at any point in time, the thread that starts the terraform process could be terminated which would result (because of Pdeathsig) in the spawned process being SIGKILLed.
https://github.com/golang/go/issues/27505 recommends locking the thread around this which would presumably prevent it being killed off by the runtime.
We know that switching from SIGKILL to SIGTERM as the Pdeathsig has resulted in a complete drop-off in fail-to-unlock issues, which implies that this is due to the thread dying (as to why, it could be because the parent process terminating).

We know that switching from SIGKILL to SIGTERM as the Pdeathsig has resulted in a complete drop-off in fail-to-unlock issues, which implies that this is due to the thread dying (as to why, it could be because the parent process terminating).

Additionally: since sending SIGTERM to the tf-runner process would result in the context being cancelled, and process.Kill() being called, there's at least a strong suggestion that SIGTERM is not being used. If it were, then changing Pdeathsig would not make any difference, because the terraform processes would be killed by process.Kill() both before and after the change.

Kubelet will use SIGKILL without SIGTERM and a grace period, in some circumstances: https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#hard-eviction-thresholds

Regard the kubelet and SIGKILL without SIGTERM, I actually observed this during troubleshooting where a group of tf-runner pods were evicted dude to node pressure caused by disk pressure(magefs.available.) The commonality was that all of the tf-runner pods that were scheduled on the node with disk resulted in locking issues on subsequent runs.


File having been compared is locked, cannot be cleaned up

My test downloads a PDF to a temporary local folder, then runs keyword Compare Images on that file as test_img and a reference file as reference_img.
Attempting to Empty Directory    ${download directory} on that local folder during the following test, or to delete it and all its contents with Remove Directory        ${download directory}   recursive=True during suite teardown both fail:
PermissionError: [WinError 32] Process cannot access this file because it is used by another process: ''
(Translation by me, so may be different in the English original.)
I guess that some part of the image processing is still active/has not closed the file. Any hints?

Thanks a lot for your finding Oliver, I'll look into it and check if the library keeps a lock on the document files - even though I cannot really imagine why.
One thing you could maybe try:
If you delete the temporary folder in your automated test without executing the Compare Images keyword - is the deletion successful? Just to ensure that Compare Images is really causing it

If you delete the temporary folder in your automated test without executing the Compare Images keyword

I did try exactly that, and yes it deletes without problems.

I have the same issue. Is there any progress?

After some investigation I have found two things:

This issue only seems to apply when a file comparison fails. The file is locked until the entire program exits, so any subsequent test setup/teardown are unable to manipulate the file. Neither can the file be removed from RF or externally while the program is still running.
It seems that there are some unclosed threads from the CompareImages class, which do not close when a test finishes. The program seems to hang for about 30s-1m before exiting finally after RF displays the end results of the run in the console, as if the program was waiting for some threads and then killing them after some timeout.

Thanks a lot for your additional investigation @podfran .
Damn, now I have an idea.
I use the futures.ThreadPoolExecutor multiple times in the library for multithreading.
Mostly, to parallelize processing of reference/candidate image at the same time or comparing multiple pages at once (for multi-page documents).
https://github.com/manykarim/robotframework-doctestlibrary/blob/main/DocTest/VisualTest.py#L209
What you now describe sounds like those threads are hanging.

Having a debug through the VisualTest library, the number of threads at the eand of each passing and failing paths was the same. This onlytells me that the unclosed file handle is somewhere in the main thread. Note that it is closed correctly when the comparison passes. No issues with manipulating the candidate file after compare images.
BTW, this is an issue I have tested across versions of DocTestLibrary, not only in the latest version.
Also, for clarity's sake, I'm comparing PDF files. Maybe this issue does not apply to other file formats. Haven't checked.

I have the same issue when the Compare Pdf Documents keyword fails.
This is particularly annoying because once that keyword has failed, files used as arguments can't be used anymore throughout that RF test execution, since I think there is no way to hijack and close the hanging process without killing python & RF theirself.
Are there any updates about a fix, even a workaround or temporary one?
Thank you

Thank you @ValentinoAlfano , I think I finally found something.
This issue from pymupdf sounded familiar https://github.com/pymupdf/PyMuPDF/discussions/1547
In some cases pymupdf keeps a lock on the files.
I solved it by setting the pymupdfdoc to None before the Assertion Error is thrown.
      reference_compare_image.mupdfdoc = None
      candidate_compare_image.mupdfdoc = None

I changed the following in  VisualTest.py in lines  248/249
  if (difference):
      print("The compared images are different")
      reference_compare_image.mupdfdoc = None
      candidate_compare_image.mupdfdoc = None
      raise AssertionError('The compared images are different.')

I tried locally and the .PDF files (which were locked before in failed comparisons) were released.
Can you give it a quick yourself and modify the file once and check if it also fixes the problem for you?
I will then add a fix and release it officially.
Sorry that it took so long

ok, I released a new version 0.12.0 with that fix.
Would be great if you can give it a try and let me know the outcome :)

@manykarim  thank you I just tried your suggestion into the compare_pdf_documents():
if differences_detected:
	ref_doc = None
	cand_doc = None
	raise AssertionError('The compared PDF Document Data is different.')

And I think this solved the problem there too (I performed three runs without errors on accessing the files immediately after the keyword failure).
Thank you so much!

ok, I released a new version 0.12.0 with that fix. Would be great if you can give it a try and let me know the outcome :)

I think your fix didn't affect the PdfTest.py keywords, that source file is still at a commit from July 2022.

Right, I also need to add it to the PDF document comparison. Thanks for checking that as well !!

ALright, just published 0.12.1 which also includes the fix for PdfTests

Hi @manykarim
I know this issue has been closed, but I noticed that when Compare Pdf Documents fails for FileNotFoundError (in my case reference file path was not found), candidate pdf file (first argument) is still not unlocked.

Oh, nice 🪲 @ValentinoAlfano
thank you, I will re-open the issue and fix it in the next days


NIFI-2565 - Add Elastic copyright to notice due to the use of grok patterns during test

since the patterns used during testing were originally defined here
https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns
I also added the notice to the bundle - which is sort of ironic given the patterns are scoped for test only and not bundled (Code is released under ASLv2)
Happy to close the PR if you think it is not necessary

Hey @trixpan, my understanding is that this is source (patterns) used in tests exclusively, correct?
If so, this makes this a source usage and not binary.  You would want something more along the lines of the way that Jolt is handled at https://github.com/trixpan/nifi/blob/a96a1bcab1d57295c5ac968042fca3c41309ec19/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-nar/src/main/resources/META-INF/NOTICE#L4

Epic. Will adjust

@apiri hopefully this time it looks a bit better... yes... it is a fork of a fork. :crying_cat_face:

@trixpan Thanks for fixing up.  Looking through the linked source for the logstash items, things look good.  Will get merged.


Warnings in plot5

See google group discussion here
Performing a test in a IF, ELSE of ELSE IF statement should always produce a single Boolean result.  If wake_loc is longer than 1 and tested for == 0 it will produce a vector of results. So, either avoid that wake_loc can get longer than 1 or change code such that it produces a single result for every IF, ELSE and ELSE IF statement.

hey Vincent, I made these changes, along with changing the default nnights value to c().
However, I made a mistake by pushing my branch to the GGIR master, instead of my forked version and then doing a pull request. Sorry about that.  Let me know if you want to roll it back and for me to make a pull request. I ran the testing on my machine and it worked fine.
Thanks, Matt

Thanks Matt for doing this so quickly.
No problem about the push to Master branch, these are minor changes to a function nobody else is working on.


#1053 Bugfix: Sign in from the vacancy details advert automatically starts an application

What's included?
Closes #1053
Who should test?
✅ Product owner
✅ Developers
How to test?
See bug ticket for the steps to replicate the original problem HOWEVER please also try to break sign in, sign up, apply, try to access protected pages (e.g. /applications) whilst logged out, page refresh etc. Anything you can think of to try to break the navigation.
Risk - how likely is this to impact other areas?
🟠 Medium risk - this does change code that is shared with other areas

PREVIEW:DEVELOP
can be OFF, DEVELOP or STAGING

@warrensearle Are any of these ads external ones?

@nickaddy this fix is intended to resolve the problem identified for all external adverts

Hi @nickaddy regarding this:

* When clicking on an internal ad for which i had already started the application, clicking apply and then signing in, it took me back to the start of the process, i.e. check if you meet the nat requirement - is this correct or should it take me straight to my application?

Yes currently even if the user is logged in they are taken through the eligibility and gdpr questions when they hit the Apply button. As this is existing behaviour we shouldn't change it as part of this bugfix however this is a really good spot and we may want to create a ticket to consider improving the user journey for logged in users with an existing application. e.g. change the the 'Apply' button to 'Continue Application' or 'Review submitted application' (whatever is relevant)


[SwipeableDrawer] Let's ship it 🚀

Second iteration after #9730

Stuff we can keep improving: https://trello.com/c/hGvoxmV2/709-swipeabledrawer


add missing field "labels" to createNetwork

relates to https://github.com/metal-stack/metal-api/pull/159

Codecov Report

Merging #54 (5465406) into master (9f5fd7d) will decrease coverage by 0.00%.
The diff coverage is 0.00%.

@@            Coverage Diff            @@
##           master     #54      +/-   ##
=========================================
- Coverage    4.63%   4.62%   -0.01%
=========================================
  Files           9       9
  Lines         950     951       +1
=========================================
  Hits           44      44
- Misses        900     901       +1
  Partials        6       6

Impacted Files
Coverage Δ

network.go
0.00% <0.00%> (ø)

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 9f5fd7d...5465406. Read the comment docs.

Codecov Report

Merging #54 (5465406) into master (9f5fd7d) will decrease coverage by 0.00%.
The diff coverage is 0.00%.

@@            Coverage Diff            @@
##           master     #54      +/-   ##
=========================================
- Coverage    4.63%   4.62%   -0.01%
=========================================
  Files           9       9
  Lines         950     951       +1
=========================================
  Hits           44      44
- Misses        900     901       +1
  Partials        6       6

Impacted Files
Coverage Δ

network.go
0.00% <0.00%> (ø)

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 9f5fd7d...5465406. Read the comment docs.


Add V4 and IT benchmarks

Closing and re-opening this PR so I can trigger Jenkins re-build (S3 file access permissions were not set correctly prior to commit).

Re-triggering Jenkins


Create xWRF logo

What is your issue?
It would be nice to have a minimalistic logo for the project. Does anyone have or know someone with design skills? :). This would be good for the overall branding of the project once we start advertising the project after the first release

https://github.com/ncar-xdev/xwrf/issues/51

Cc @ncar-xdev/xwrf

Here's a draft of an idea I had inspired by WRF's C grid, destaggering, and gesalt design:

This was generated with matplotlib:
from matplotlib.patches import BoxStyle, FancyBboxPatch, Polygon
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(16, 4))

gap_width = 0.095
color = "k" # cm.get_cmap('viridis')(0)
tick_color = "grey" # cm.get_cmap('viridis')(0.5)
tick_width = gap_width
tick_height = tick_width / 8
font_options = {
    "fontfamily": "Source Code Pro",
    "fontweight": "semibold",
    "fontsize": 200,
    "ha": "center",
    "va": "center_baseline",
    "c": color
}

letter_y_shift = 0.038

# Define the triangles
gap_side = gap_width / np.sqrt(2)
tri_left = np.array([
    [-0.5, 0.5 - gap_side],
    [-gap_side, 0],
    [-0.5, -0.5 + gap_side]
])
tri_right = tri_left * np.array([[-1, 1]])
tri_bottom = tri_left[:, ::-1]
tri_top = tri_right[:, ::-1]
for tri in (tri_left, tri_right, tri_top, tri_bottom):
    ax.add_patch(Polygon(tri, facecolor=color, edgecolor=None))

# Letters
for i, letter in enumerate("WRF", start=1):
    ax.text(i, letter_y_shift, letter, fontdict=font_options)

# u ticks and v ticks
for u_pos in np.arange(-0.5, 4, 1.):
    ax.add_patch(FancyBboxPatch(
        (-tick_width / 2 + u_pos, -tick_height),
        tick_width,
        tick_height,
        boxstyle=BoxStyle("Round", pad=tick_height/4),
        facecolor=tick_color,
        edgecolor=tick_color
    ))

for v_pos in np.arange(0, 4, 1.):
    for y_offset in (-0.5, 0.5):
        ax.add_patch(FancyBboxPatch(
            (-tick_height / 2 + v_pos, -tick_width / 2 + y_offset),
            tick_height,
            tick_width,
            boxstyle=BoxStyle("Round", pad=tick_height/4),
            facecolor=tick_color,
            edgecolor=tick_color
        ))

ax.set_xlim(-0.6, 3.6)
ax.set_ylim(-0.6, 0.6)
ax.axis('off')
ax.set_aspect('equal')

fig.savefig("xwrf_logo_draft_greyscale.pdf", bbox_inches='tight')

@jthielen:  Holy cow!  That's amazing!  I came up with a logo borrowing from the Xarray logo and the old WRF logo (with the globe background).  I'll share it here:

...but I frankly love your image more, @jthielen!  That's just awesome!

(Note, I shared my image only so that I could claim that I did some work.  😄   I really think @jthielen's logo is great.)

@jthielen, fantastic work!!! Is it possible to get a version of the logo for dark backgrounds as well (not sure if inverting the colors in the original logo suffices)?

Inverting the color of all the elements should work well, as long as the background color (white above) can be made alpha.  You can use the transparent=True in the savefig function to do that.  But that will save it as a PNG. It would be nice to save it as an SVG.

To be clear, I'm not sure if you can use the transparent option with SVG output.

While old, this StackOverflow question and answer suggests that you can save an SVG with the transparent option. So, that would be best.

After a lot of messing around trying to install the Source Code Pro font (only to discover that matplotlib does not support fonts with variable weight, ugh!), I was able to reproduce the logo on my machine.
I modified the color to be either w or k and I changed the savefig line to:
fig.savefig("xwrf_logo_bg{dark|light}.svg", bbox_inches='tight', transparent=True)

with dark or light depending on the value of color.  Here are the results:

and

The grey ticks are exactly 50% between w and k, so inverting them is not necessary.
What do people think?
If @jthielen's logo is the approved logo, then I think we should add the SVG logo's to the repo, and we should add a Branding page to the docs with the reproducible code snippet given above by @jthielen.  (I don't see why we shouldn't share with people how to reproduce the logo.)


Build changes

Target SDK 31
Pin Gradle SHA256
Use consistent build JVM arguments
Build with JDK 11
Set default minSdk to 26
Set android:exported true in manifest to target Android 12
Update dependencies
Dependabot, gradle wrapper verify, and build

Doubt I can work on this. I have no proper way of testing this because targeting SDK 31 requires some code changes relating to intents and possibly more. Especially since users rely on Talkback here.

If you are able to work on it, I can actively test.

I'll likely make some minor changes and PRs.


Notification sound not working correctly

Describe the bug
A clear and concise description of what the bug is.
Version of Rocket.Chat Server: 3.18.1
Operating System: Windows
Deployment Method: tar
Number of Running Instances: 4
DB Replicaset Oplog: +
NodeJS Version: v12.18.4
MongoDB Version: 4.5
Proxy: nginx
Firewalls involved: -
Rocket.Chat Electron 3.5.7 / 3.6.0 tested
To Reproduce
Steps to reproduce the behavior:

Go to 'service file rocketchat.service'
Add line DISABLE_PRESENCE_MONITOR=true
Save and restart service RocketChat
Windows App (Electron) sound when new message arrived not working (all messages silent arrived)

BUT, if you change for specific channel sound notification settings from "Default" to for example "Chime" - all works fine
In web version - chrome,mozilla, edge - all works fine
Screenshots
If applicable, add screenshots to help explain your problem.

Set ENV instance_ip resolved problem.


Sorry, you've not configured an origin remote or passed a repo_url config value

i've got this config:
{
    "app_name": "processo",
    "logo": "https://github.com/rafinskipg/git-changelog/raw/master/images/git-changelog-logo.png",
    "intro": "Projeto de controle",
    "branch" : "master",
    "repo_url": "git@xxxxxx:xxxxxx/processo.git",
    "version" : "v1.0.0",
    "file": "CHANGELOG.md",
    "sections": [
        {
            "title": "Correções de Bug",
            "grep": "(\[FIX\])|correção/i"
        },
        {
            "title": "Features",
            "grep": "\[FEATURE\]"
        },
        {
            "title": "Erro 500",
            "grep": "\[500\]"
        },
        {
            "title": "Refactoração",
            "grep": "\[REFACTOR\]"
        },
        {
            "title": "Test",
            "grep": "\[TEST\]"
        },
    ]
}

i use this command:
git changelog -r git@git.xxxxxx.com.br:xxxxxxx/processo.git

and i get this output:
Executing git changelog:
  - With URL git@git.xxxxxx.com.br:xxxxxxx/processo.git
Found changelog rc
Sorry, you've not configured an origin remote or passed a `repo_url` config value

what am i doing wrong?

Hello @jhonatanTeixeira can you print the output you get from running it with --debug ?
Adding a remote repository log without being in the current folder of the repository doesn't work.
Internally we use git log command, on the current repository.  So you must run the command in the current repository folder.
For ex:
cd myProject
git-changelog --debug

Git does not provide the functionality of retrieving the history from a repository you have not downloaded.
In order to have the feature of logging remote repositories without being in a repo folder some code has to be written.
I think in terms of functionality it should do something like this:

Whenever a user types -r REPO_URL on a folder that it's not a git repo:

Create a folder called .tmp (in the git-changelog directory?)
Go into that folder and clone the remote repo
Do the git log in that repo
Remove the folder .tmp after some time.
This will be time expensive.. but i think its a cool feature.

#68


The 2.2.x matcher no longer supports regexes that can match a slash.

With release 2.2.x, the matcher no longer supports regexes that can match a slash.
An example test case:
def test_regex_that_captures_multiple_slashes():
    map_ = r.Map(
        [
            r.Rule(r"/<regex('[^/:]+'):initial_part>/<regex('[^:]+'):remainder>", endpoint="regex"),
        ],
        converters={"regex": RegexConverter},
    )
    adapter = map_.bind("localhost")
    assert adapter.match("/asdfsa/sth") == ("regex", {'initial_part': 'asdfsa', 'remainder': 'sth'})
    assert adapter.match("/asdfsa/sth/qwer") == ("regex", {'initial_part': 'asdfsa', 'remainder': 'sth/qwer'})
    assert adapter.match("/asdfsa/sth/qwer/asdf") == ("regex", {'initial_part': 'asdfsa', 'remainder': 'sth/qwer/asdf'})

This behaviour was supported in earlier versions.
Note that, on main, the matcher currently hangs when matching against this regex - that bug is fixed with #2489.
Running this test against the branch that contains the fix results in a NoMatch() for the second and third assertions.
Environment:

Python version: 3.x
Werkzeug version: 2.2.x

Is your regex converter marked as part_isolating = False?

Thanks for the hint @pgjones - setting that attribute fixed it indeed.

Note that the regex converter is not provided by Werkzeug. You should report an issue to the library providing that converter. Also note that setting part_isolating opts out of the faster router implementation, so it should only be set if a converter actually needs to match /.


WIP: burrow light client

Signed-off-by: Gregory Hill<EMAIL_ADDRESS>

The majority of the code shift in this PR is proto, I may have the wrong version of protoc installed so I will likely force push to slim this at a later date.
TODO

[ ] Proxy Client


Update admin-scheduled-synchronization-using-the-synchronization-job-…

…queue-entries.md
changed 720 minutes to twelvve hours instead of six hours.

Thanks for your contribution! We're going to have to wait a week before we can merge the PR due to preparation for the upcoming 18.0 update. We appreciate that you identified this issue and will merge your correction as soon as we can.


Fix transparent urlbar with ATBC

fixes #16
Fixes issue of URLbar sometimes being transparent.
If you are using ATBC extension to have different theme for each website and you also use popup URLbar, then you might need this fix.
This just sets the colors, but it might not match with link suggestion box's background (I'm talking about whats under URLbar).
You would also need to set this settings in extension preferences, here is mine:

Notice that Toolbar background setting is 1 tick higher than tab bar setting.

Tested on FR 123.0.1

I noticed that --toolbar-bgcolor and did not know what it was for. I am able to adjust that using extension settings.
I will go ahead and include that as well


dependencies didn't show anything when using elasticsearch storage

hi . i'm using zipkin-2.22.1 version and found the dependencies always empty . i can see data in trace.
here is my running script java -jar zipkin-server-2.22.1-exec.jar --STORAGE_TYPE=elasticsearch --ESHOSTS=...... --KAFKA_BOOTSTRAP_SERVERS=......
and when i remove the STORAGET_TYPE and ESHOSTS . using in memory mode . i can see the dependencies

You need to setup a spark job for this https://github.com/openzipkin/zipkin-dependencies


Get media size?

Hello, is there anyway to get the media size? In "responsive" stretching, the player adjusts the size always in width, but if there's a video that's higher then wider (typically a vertical mobile phone video), then the bottom of the video is not seen because the stretching adjustes the width and it doesn't take into account the height. I'd like to know the width and height of the media to be able to calculate the size of the player to show the full media on the screen, and not only the upper part when a video is higher than wider.
Is it possible to do so on "loadedmetadata" event?
Thank you!

Hi !
did you take a look at package npm package called "get-video-dimensions" ?

Hello, thank you for your answer. I finally solved my problem using a MediaElementPlayer, setting its stretching property to 'none', and forcing the size of both the MediaElementPlayer and the MediaElementPlayer.media to the same size whenever needed.
Thank you!


Fix repeating task after timeout

Timeouts that happened with brokers that need acknowledging could have jobs that would keep retrying. This was caused due to the process being killed without sending the job back to the monitor function that would mark the job as failed and would pull the task from the broker. This wasn't an issue with brokers that automatically remove the task from the broker when it gets pulled.
I have implemented a context manager that will keep track of the time in the worker itself (so not by the guard function). It will end the running task and return a timeout error. That gets caught and then it gets pushed to the monitor to process.
It will also set the timeout to 0, so the guard can clean the process up and reincarnate a process (so we get a clean state for the next task).

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

26 of 34 (76.47%)  changed or added relevant lines in 2 files are covered.
3 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.1%) to 89.618%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

django_q/exceptions.py
19
20
95.0%

django_q/worker.py
7
14
50.0%

Files with Coverage Reduction
New Missed Lines
%

django_q/cluster.py
3
90.51%

Totals

Change from base Build<PHONE_NUMBER>:
-0.1%

Covered Lines:
3358

Relevant Lines:
3747

💛  - Coveralls

@GDay I think there could ba an issue with that implementation, according to python docs signal.SIGALRM availability is Unix only.
Also, there is the risk that the task itself redefines SIGALRM which would then interfere with the mechanism. May be this can be worked out by just documenting it.

Hmm.. thanks for the heads-up @msabatier. You are correct.
The alternative, spinning off a thread with a timer, is not something I am keen to implement for multiple reasons.
So, this is interesting, looking at how other background workers do this:
Huey doesn't support timeouts at all: https://github.com/coleifer/huey/issues/159
Django-rq doesn't support Windows
Celery doesn't support timeout in Windows: https://docs.celeryq.dev/en/latest/userguide/workers.html#time-limits
The only other option I see is making the workers class based and then having the guard (who kills the process) send the task to the monitor right before it kills the process. I will give that a go and see if that works out soon.

May be you could try to intercept the normal SIGTERM in the worker and do a clean shutdown there ?
One issue is that process.terminate() does not send SIGTERM on Windows, may be os.kill() will do the job.

Getting this one in now, so we at least have something for catching these in Unix systems. For windows users, this issue will not be solved, but that's likely a minority of users right now.
Getting tracked here: https://github.com/django-q2/django-q2/issues/198


Add gRPC tools grpcurl

Add the grpcurl packages to netshoot.

@nicolaka any problem please comment to me.


test partner success

infra: CI success for partner packages
always run CI Success
format print
x
x

yay


Not able to set different lengths for fingerprints

Describe the bug
It doesn't seem to be possible to set different lengths for fingerprints. They are all returning as 2048.
To Reproduce
Steps to reproduce the behavior:
const morganOptions = JSON.stringify({ radius: 3, len: 8192 });
const morganFingerprint = mol.get_morgan_fp(morganOptions);
run
console.log("Morgan Fingerprint Length:", morganFingerprint.length);
result = 2048.
Tried this across all the fingerprint types, and also tried using 'len' and 'fplen' and always get 2048 for the length.
Expected behavior
Expect the fingerprints to be set to the requisite length.
Expected result = 8192.
Desktop (please complete the following information):

OS: Windows
Browser Firefox
Version Latest

The problem is that you are not using the correct parameter name, which is nBits.
You may look up the parameter names in the Code/MinimalLib/tests/tests.js file, e.g.:
https://github.com/rdkit/rdkit/blob/5771d9c18192c48a9895b8993a18b53ea43ab663/Code/MinimalLib/tests/tests.js#L92
Closing as this is not a bug.

Thanks so much. It's working. I had got "len" from the docs here:
https://docs.rdkitjs.com/interfaces/JSMol.html#get_morgan_fp

Returns string
Defined in index.d.ts:123

get_morgan_fp_as_binary_text(radius, len): string


[yaml] Add Beam YAML Examples

1x Example: MapToFields and Combine using SQL
1x Example: MapToFields using SQL and the SQL type command
1x Example: Using JDBC connection to read (Mysql) and write (Postgre) in a database

@Polber @eder001 what are next steps on this PR?

No, it is not... please just disregard


Consistency between generic type parameter of extends generic type based on another generic type parameter is not enforced

🔎 Search Terms
generic parameter extends generic type parameter based on generic parameter
🕗 Version & Regression Information
3.3.333 to 5.7.2 (ie the versions supported by Typescript Playground)
⏯ Playground Link
https://www.typescriptlang.org/play/?#code/MYGwhgzhAEAqCmEAuBhcUA8sAiYlgD5oBvAXwChzgB7AO2WiUSQEYAuOZtSCDY6AG5gQAV3jtoyAE4BLWgHNopIgF5oteAHdOybpn5DR4jtLmLlACgCUAbkoAzEbWBIZdRswBiT4FmjwADyZaABMYBF10Xhw8QgAaOFx8AgtDMQ5YBJDYjKSwKxJKCnImZG9nC1LWBINhMQAmDhYAFiVbaAB6DugASWhNahEQEP8AgAd4F0YACxkYJGpoezAZEAA6Eq8fLC4ovkE640kkWQUlAhqDo0b1EQBbACN4KXPK5hZLtPgblrabTu6fQGQxGgQmUyQs3mixC8HschkTBAAE8lisQNBIJIRFJ4CjErFJNNBsNoE8ZvBJGA7pT7NQXg9qJCAPxAA
💻 Code
class TestClass<TData> {}

const test1: TestClass<{ value1: string }> = new TestClass<{ value1: string }>();

function testFunc<T extends TestClass<TData>, TData>(value: T, data: TData) {

}

testFunc(test1, { value2: 14 }); // I would expect this to fail.
testFunc<TestClass<{ value1: string }>, { value2: number }>(test1, { value2: 14 }); // I would expect this to definitely fail as surely TData should be the same for both?

🙁 Actual behavior
No errors are highlighted for the two calls to testFunc().
🙂 Expected behavior
Both calls to testFunc() should be highlighted as errors.
The first call should fail because { value2: number} is not the TData type used for the TestClass<TData> instance assigned to test1.
The second call should fail highlighting the generic parameter type inconsistency for TData.
Additional information about the issue
I am attempting to create a generic method with two generic type parameters and two parameters using those generic types, where the generic type of the second is tied to the generic type of the first:
class TestClass<TData> {}

function testFunc<T extends TestClass<TData>, TData>(value: T, data: TData) {
}

However, when attempting to use it there does not seem to be any consistency enforced between the TData parameters:
const test1: TestClass<{ value1: string }> = new TestClass<{ value2: string }>();

testFunc(test1, { value1: 14 }); // I would expect this to fail.
testFunc<TestClass<{ value1: string }>, { value2: number }>(test1, { value2: 14 }); // I would expect this to definitely fail as surely TData should be enforced as the same for both?

Explicitly specifying the types incorrectly as shown in the second call to testFunc() above does not result in any apparent errors either.
I am unsure if the behaviour I am seeing is a bug or if this is something I am doing incorrectly.

See: https://github.com/microsoft/typescript/wiki/faq#why-do-these-empty-classes-behave-strangely

See: https://github.com/microsoft/typescript/wiki/faq#why-do-these-empty-classes-behave-strangely

I didn't think it was this as the generic types being used are not empty?
I cannot do this for example:
let test: { value1: string } = { value2: 14 };

Or this:
let test2: { value1: string } = { value1: 14 };

Unless I'm missing something?

I didn't think it was this as the generic types being used are not empty?

You're not using the genetic type TData anywhere, so it might as well not exist. TypeScript uses structural typing, and the structure of TestClass<string> and TestClass<number> is absolutely identical. As far as TypeScript is concerned these types are identical and thus compatible.

I didn't think it was this as the generic types being used are not empty?

You're not using the genetic type TData anywhere, so it might as well not exist. TypeScript uses structural typing, and the structure of TestClass<string> and TestClass<number> is absolutely identical. As far as TypeScript is concerned these types are identical and thus compatible.

Aaaah, now I understand, you're referring to the TData parameter on TestClass, not the TData parameter on testFunc().
Adding a property to TestClass that uses TData does indeed subsequently cause the expected errors to appear.
I didn't anticipate the absence of the usage of TData on TestClass would not be negated by the use of TData in testFunc if the generic type constraint made it clear that the generic type was supposed to be the same for both.

The inferred type for TData on your function can be a union type as well, so it could easily be { value1: string } | { value2: number }, making the invocation perfectly valid.
As the FAQ mentions, you should generally never have unused type arguments.
Everything working as intended.

The inferred type for TData on your function can be a union type as well, so it could easily be { value1: string } | { value2: number }, making the invocation perfectly valid.
As the FAQ mentions, you should generally never have unused type arguments.
Everything working as intended.

In reference to your last sentence, that's fine, I'm not disputing that it is working as intended - as I stated in the original post, I was unsure if the behaviour I was encountering was a bug or something I was doing incorrectly.  As has been made quite clear, it is the latter.
Although I did not use the generic type in the class definition, I did not make the link between this behaviour and the behaviour specified in the FAQ (which I did check!), whose example only shows two instances of the same class, Something<T>, whereas the TData parameter was being directly used in my testFunc() definition.
In attempting to further my understanding of this behaviour, I attempted the following:
class Something<TData> { }

function testFunc<TData>(value: Something<TData>, data: TData) {

}

testFunc(new Something<number>(), 'test');

Interestingly, this errors for the second parameter, claiming correctly that Argument of type 'string' is not assignable to parameter of type 'number'.  It looks like it inferred TData as being of type number.
If I explicity specifiy TData as string however then I see no error (because, I assume, as per the above explanations, Something itself doesn't use the type parameter and thus does not care):
testFunc<string>(new Something<number>(), 'test');

For the benefit of anyone happening upon this in the future, this is how I altered the definition of TestClass earlier to resolve the problem:
class TestClass<TData> { private _?: TData; }

What I was actually originally working on was a generic type alias, but it's the same issue, and so this, for example, would be the approach there:
export type TestType<TData> = { _: TData }

Hopefully my stumblings here help someone else in the future.
Thank you for your explanations, @MartinJohns.


[WIP] 1.2 Test Split - Modules own tests

@LukeTowers told me to...
This PR splits out tests into their related modules, allowing for each module to be targeted using the winter:test command. Added to this is also proper namespacing and a bunch of minor bug fixes and tweaks.

Hey guys, 2 thoughts on this -

Are we going to be forcing everyone to have to add use System\Tests\Bootstrap\PluginTestCase to their plugin test cases? I think we should probably still have that available as a global alias if possible.
With the tests directories within the modules, we may have to look into using a .gitattributes file on each module with export-ignore definitions so that the tests aren't included on each install through Composer. (see https://github.com/composer/composer/issues/9153 and https://github.com/laravel/framework/blob/9.x/.gitattributes#L9-L23)

@bennothommo

Yes, we are. Any existing projects will still have the original tests folder and they can keep using that if they want.
I want the tests folders for the modules distributed via Composer, that way the winter:test command can always be used and our testing suite can stay up to date with the rest of the platform. Right now if we make any changes to the testing suite or the base classes the only way users can get those changes is by manually downloading them to update their project tests folder.

@bennothommo
1. Yes, we are. Any existing projects will still have the original tests folder and they can keep using that if they want.

As long as that doesn't create any conflicts, all good!

2. I want the tests folders for the modules distributed via Composer, that way the `winter:test` command can always be used and our testing suite can stay up to date with the rest of the platform. Right now if we make any changes to the testing suite or the base classes the only way users can get those changes is by manually downloading them to update their project tests folder.

I suppose it will be handy to not have to instruct people to download or updates their test folders anymore.

Removed global func/const imports in d1ff0945d6959097f453fbb736d447a6efa2d966


Update akka-coordination, akka-stream, ... to 2.6.15

Updates

com.typesafe.akka:akka-coordination
com.typesafe.akka:akka-stream
com.typesafe.akka:akka-testkit

from 2.6.10 to 2.6.15.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.typesafe.akka" } ]

labels: library-update, semver-patch

Superseded by #69.


[Bug]: 404 error at URL: /txns/JVYXBwr51SRTPT0V3vOWFXhg2nb684e0XR6ik6gZS58

What happened?
Unable to view transaction. Helium tokens were lost in this event so it should be investigated!
URL
https://explorer.helium.com/txns/JVYXBwr51SRTPT0V3vOWFXhg2nb684e0XR6ik6gZS58
What browsers are you seeing the problem on?
Safari
Do you see the issue on Mobile or Desktop?
Mobile
Relevant log output
No response

where did you get this transaction hash? from an exchange?


Command F randomly stops working sometimes

Randomly the find feature for files will stop working; the global find (shift + command + f) still works though. I have to restart the editor for it to work again.

I just ran into this with version 0.199.0. I didn't check to see if the command palette was available. No find commands where available until after restart.

@nevins-b for me, it turned out to be user error; I would set the scope to highlighted text only (the quote option in the find tool) and then once I am done searching, the next time I search if nothing is highlighted then of course there will be no match.

I will close my issue but I guess re-open if you indeed have a bug.

For me, sometimes it stops working too, both when invoking with cmd+f and via menu bar (Find -> Find in buffer). Search panel does not appear. After restarting Atom it works again. Version 0.206.0.

yes, it happens to me also, when i switch to another file and then come back to current file then i can search in current buffer again

There was a seemingly related issue where cmd-f wouldn't work when a dock was focused. Should be fixed now.


Use it as package

Hello, I would like to use it as package, as I have a program where I need to find the word count. Is that possible?

Thank you for your interest in wildcat!
I just implement the simplest wc command in the use of wildcat API, which shows at github.com/tamada/mywc.
Through the implementation, I realized the API of wildcat was not refined well, and the API documentation was not written well.
I will try to refine the API and the document and release the next version (v1.3.0).


Consider adding LCL (Lazarus Component Library)

LCL is part of Lazarus (a freepascal IDE) and it's a multiplatform GUI Library.

Kindly create a PR. Thank you.


Where do we edit elements?

Hi,
I'm able to build the jamstack site using my content. All good :)
In this example, I would like to edit the nav. I expect to see these within the src:

post
pages
tag
author
etc

So basically, how can I customize this theme?
Thanks!

➜  try-ghost git:(master) ✗ gatsby develop
success open and validate gatsby-configs - 0.122s
warn Plugin @draftbox-co/gatsby-plugin-css-variables is not compatible with your
success load plugins - 0.651s
success onPreInit - 0.011s
success initialize cache - 0.008s
success copy gatsby files - 0.053s
warn gatsby-plugin-feed was initialized in gatsby-config.js without a title in a
 feed.
This means that the plugin will use the default feed title, which may not match
your use case.
success onPreBootstrap - 0.023s
success createSchemaCustomization - 0.011s
success source and transform nodes - 0.138s
success building schema - 0.481s
success createPages - 0.093s
success createPagesStatefully - 0.087s
success onPreExtractQueries - 0.003s
success update schema - 0.033s
success extract queries from components - 0.546s
warn The GraphQL query in the non-page component "/Volumes/960G/_pascalandy/11_F
Exported queries are only executed for Page components. It's possible you're
trying to create pages in your gatsby-node.js and that's failing for some
reason.

If the failing component(s) is a regular component and not intended to be a page
component, you generally want to use a <StaticQuery> (https://gatsbyjs.org/docs/static-query)
instead of exporting a page query.

If you're more experienced with GraphQL, you can also export GraphQL
fragments from components and compose the fragments in the Page component
query and pass data down into the child component — https://graphql.org/learn/queries/#fragments
success write out requires - 0.067s
success write out redirect data - 0.003s
success onPostBootstrap - 0.001s

info bootstrap finished - 4.963 s

success run queries - 0.182s - 20/21 115.14/s
Warning: Each child in a list should have a unique "key" prop.

Check the top-level render call using <head>. See https://fb.me/react-warning-keys for more information.
    in style
    in HTML

You can now view gatsby-ghost-balsa-starter in the browser.

  http://localhost:8000/

View GraphiQL, an in-browser IDE, to explore your site's data and schema

  http://localhost:8000/___graphql

Note that the development build is not optimized.
To create a production build, use gatsby build

success Building development bundle - 9.353s

Hi @pascalandy ,
You can fork https://github.com/draftbox-co/gatsby-ghost-balsa-theme repo to customize theme according to your needs and use that theme in your starter.

Just to add to your question from where can you pull your own content. After you fork theme repo, you can go to https://github.com/draftbox-co/gatsby-ghost-balsa-theme/blob/master/example/gatsby-config.js and update ghostConfig.

Thanks!!


GDExtension move_and_collide instantly crashes game

Godot version
v4.0.alpha11.official [afdae67cc]
System information
Windows 11 Home, NVIDIA GeForce RTX 2080 [<IP_ADDRESS>9]
Issue description
Whenever I use "move_and_collide()" with GDExtension, the game instantly crashes and produces no crash log. The problem happens every time I run the game (no matter where I put the "move_and_collide" function call).
Steps to reproduce

Clone "godot-cpp" from github link
Use scons to build both the "godot-cpp" folder and "test" folder
Paste the following code into example.h:

class ExampleRigidBody2D : public RigidDynamicBody2D { 	GDCLASS(ExampleRigidBody2D, RigidDynamicBody2D); protected: 	static void _bind_methods() {} public: 	virtual void _physics_process(double delta) override; };
and example.cpp:
void ExampleRigidBody2D::_physics_process(double delta) { 	if (!Engine::get_singleton()->is_editor_hint()) { 		move_and_collide(Vector2(1, 0), delta); 	} }

Run the game, and notice an instant crash

Minimal reproduction project
test.zip

I'm no longer seeing this issue when adding env.Append(LINKFLAGS=["/DEBUG:FULL"]) to line 31 of "windows.py" under the "godot-cpp" repo (godot-cpp/tools) when building the test project with scons platform=windows target=debug


httpcore.PoolTimeout

Exception has occurred: PoolTimeout
Cancelled by cancel scope 16831b4f590
asyncio.exceptions.CancelledError: Cancelled by cancel scope 16831b4f590
During handling of the above exception, another exception occurred:
TimeoutError:
During handling of the above exception, another exception occurred:
httpcore.PoolTimeout:
The above exception was the direct cause of the following exception:
File "C:\Users\Mike\Sources\ferry-planner\bcferries\bcferries.py", line 413, in download_schedule_async
doc = (await client.get(url)).text.replace("\u2060", "")
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Mike\Sources\ferry-planner\bcferries\bcferries.py", line 443, in _download_and_save_schedule
schedule = await self.download_schedule_async(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Mike\Sources\ferry-planner\bcferries\bcferries.py", line 481, in refresh_cache
await asyncio.gather(*tasks)
File "C:\Users\Mike\Sources\ferry-planner\bcferries\bcferries.py", line 489, in _refresh_task
asyncio.run(self.refresh_cache())
httpx.PoolTimeout:

940e93da2fa6591661f744580cbda889b377e6b1


Error in GetAppListEntriesAsync

winrt-api/windows.applicationmodel/package_getapplistentriesasync_364802562.md
Text states:
Enumerates the packaged apps on the device. Only packaged apps that are registered to the current user are returned.
This is incorrect. Actually only apps included within the current package are enumerated.

Thanks for pointing this out! I'll make sure this gets updated on the page.


ReferenceError: document is not defined

@xfumihiro
First of all, thanks for sharing the setup configuration, it really helped me to get started with jest + puppeteer.
With my current configuration, I cannot get the reference of global document variable.
I understand that it replaces jest-environment-jsdom with jest-environment-node.
Can you please let me know what I'm missing here & how your example code works?
Thank you.
it('should load without error', async () => {
    let text = await page.evaluate(() => document.body.textContent)
    expect(text).toContain('google')
})

I'm not blocked though, I'm using page.$eval to get element handle.

@RumenTech can you share your configs?

Sorry, I think I have figured that out, all good now :)
I was using node for unit tests and one of unit tests complained document reference.
I'll appreciate if you help me with these questions when you get a chance.
1. document reference
The following code is working fine, however I'm still not sure how document comes available in this line.
let text = await page.evaluate(() => document.body.textContent)
2. use node env for enzyme unit tests
My config below  jsdom for enzyme unit tests, node for puppeteer tests.
Is there any way to set up one config using node env?
In that case, how to make document available in unit tests?
3. logging important console messages
How to log console messages which are printed from actual code?
I'm doing the following for each test suite's beforeAll.
Is there any way to register this listener only once somewhere?
    page = await global.__BROWSER__.newPage()
    // await page.setViewport(viewports['XL'])
    page.on('console', message => {
      const text = message.text()
      if (message.type === 'error' || text.includes('@puppeteer')) {
        console.log(text)
      }
    })

Thank you in advance.
My Jest configuration
// jest.config.js

let configuration = {
  // unit tests - jest with enzyme
  unit: {
    moduleNameMapper: {
      "\\.(css|jpg|png|svg)$": "<rootDir>/app/react_spa/__tests__/config/empty_module.js",
      "root\/(.*)$": "<rootDir>/app/react_spa/javascript/$1",
      "public_assets\/(.*)$": "<rootDir>/app/assets/$1"
    },
    testMatch       : ['**/__tests__/**/?(*.)(spec|test).js'],
    setupFiles      : ['./app/react_spa/__tests__/config/sync_enzyme_setup.js'],
    testEnvironment : 'jsdom',
  },

  // e2e tests - jest with puppeteer
  e2e: {
    verbose         : true,
    testMatch       : ['**/__tests__/**/?(*.)(spec|test).js'],
    setupFiles      : ['./app/react_spa/__tests__/config/global_vars_setup.js'],
    globalSetup     : './app/react_spa/__tests__/config/async_global_setup.js',
    globalTeardown  : './app/react_spa/__tests__/config/async_global_teardown.js',
    testEnvironment : './app/react_spa/__tests__/config/puppeteer_environment.js',
  }
};

let testModesMap = {
  'unit'      : 'unit',
  'e2e'       : 'e2e',
  'e2e_debug' : 'e2e',
}

const mode = testModesMap[ process.env.TEST_MODE || 'unit' ]

module.exports = configuration[ mode ];

@RumenTech glad things work out for you :)
for 1 & 2, you might want to check out puppeteer code to see how it works.
as for 3, FWIK jest might swallow any test environment's console messages (as it is trying to produce the testing results), you might need to check out jest code as well.


Don't create user directories

Hello,
Thank you, this is a nice project!
Is it possible to NOT create user directories inside the wikis directory?
Also, how can I turn off -auth? I tried -auth false, -auth 0, -auth no but none of that works.

BTW, it would be nice to add comment about command line options in the README.md file.

Hi, you can indeed run without auth. The syntax is widdler -auth=false and with this enabled no user directories are created.
I hesitate to document all the options in the readme, but I will add a blurb about disabling auth, as it isn't explicitly clear what format to use :).

Added some examples in the latest push! Gonna close this now - thanks for reporting!


Improved DataTable

Description
This PR is the first step in implementing improved tables in Evidence (see #468). It covers the following improvements to our DataTable component:

Horizontal scroll: if you have more columns than the page width can display, the table with automatically allow for horizontal scroll (rather than truncate the column contents as it currently does)

Column selection: select specific columns to include in your table by using the new Column component like so:
<DataTable data={my_query}>
   <Column id=date/>
   <Column id=country/>
   <Column id=sales/>
</DataTable>

If you don't select any columns, the table will include all columns in the query result:

<DataTable data={my_query}/>

Column-specific settings: using props within the Column component, you can make decisions on a column-by-column basis for the following options (more to follow in the future):

title: override the title of the column
align: left / center / right align the contents and header of the column

New pagination approach: the data scrubber in DataTable has been replaced by page numbers and buttons shown at the bottom of the table

Sortable Columns: you can sort columns by clicking on the column header (using sortable=true; it is on by default)

Search: using search=true, you can add a search bar to the top of your table. This is off by default to avoid cluttering your page

Updated data download: when you click the download button at the bottom right of your table, it will export only the columns you've supplied to the table through the Column components - we're hoping this will be helpful in cases where you have many columns in your query and only want to export what's visible to your readers

Updated table styling options:

rowNumbers: true | false - turns on or off row index numbers (off by default)
rowLines: true | false - turns on or off borders at the bottom of each row (on by default)
rowShading: true | false - shades every second row in light grey (off by default)

Examples
Sample Table

Interactive Demonstration

Development Demonstration

Checklist

[x] For UI or styling changes, I have added a screenshot or gif showing before & after
[x] I have added a changeset

Issues with this PR

Table generation code: there is likely a way to implement the table generation logic more concisely.

The problem with this implementation is it requires a lot of duplication to cover these two scenarios:

Columns are passed explicitly through Column components
No columns are passed (fallback to full data object)

I tried preparing all data in the script tag before generating the table (removing the duplicated logic in the main Svelte code), but this caused the table to flash in an unfinished state when each page was loaded

Error handling: errors currently do not get handled in an ErrorChart as in the previous DataTable. This is because the error needs to be passed from the Column component to the DataTable, and this will take a bit more effort to get working
Sort icon styling:

Ideally, the column sort icons would be vertically centered
We may need an icon to indicate that the columns are sortable (e.g., show both up and down errors when not in a sorted state). I left these out to keep the table headers looking clean, but it might be required for usability
Columns shift quite a bit when the sort button is clicked, since column widths are determined by the content visible on the page

Pagination styling: alignment of elements needs a bit of work here. This is not an issue now, but will be in the future when we want to offer more font size/density options within tables
Data exporting

Date format: dates are exported in a format that is not usable in other tools. It is currently using javascript Date object formatting, but an ISO string would be better. This can either be fixed in the table or (preferably) in the date parsing logic implemented throughout Evidence
Overridden column names: overridden column names are not included in data export (only raw sql column names)

Search behaviour:

Works across all columns: search works across all columns of the underlying dataset. This may produce unexpected behaviour, as you can search within columns that are not visible in the table
Jumping content: When you navigate to a page of data with fewer records, content from lower down on the page jumps up to fill the gap left by the missing records

Mobile search experience: the automatic zoom-in when typing in the search bar on mobile makes the experience worse. Fix for this is increasing the font size until zoom is not required, but the required font size makes the search bar stand out from the contents of the page too much
Print formatting: print formatting can be a lot better (e.g., pagination buttons remain in print version)

A stopgap solution here could be to display a nicer looking “X of Y records” message rather than the pagination buttons

Search icon styling: the search icon in development mode appears in a light grey (as expected), but it appears black in production (see vercel dev-workspace preview for an example)
Horizontal scroll feedback: at times, it's not clear that the table has more columns than the page width can display. In the future, we may want to add some visual feedback to show that there are more columns hidden to the right (e.g., a faded white gradient on the right edge of the table)

This is a huge improvement on what we have.
Some thoughts for your consideration:

I might want the ability to have columns fit the larger rows and row headers. See below a case where headers get truncated

The current implementation doesn't give you the ability to access the <slot> of the Column. This makes it harder to achieve certain extensions.
Pagination feels a bit clunky. Particularly if I want to advance lots of rows at a time. Possible things that might help:

A more scroll based solution, like we now have in QueryViewer
Ability to type in a specific page number to jump to it - ie making currentPage editable and clickable.

Hmmm I can't repro the header issue either...
Maybe I had changed something else in my branch

Ahh, good catch - I hadn't considered such high page numbers.
I've fixed the number formatting, but I'll need to think about the page editing idea.
If the pagination section didn't have the editable page number, would your preference be to use pagination or the data scrubber like we have in the query viewer? And does your answer change for either of these situations:

Taking a look at your own data in a table while you're working with it / building a report
Presenting a table to your audience for their consumption

Probably depends on the size of the dataset more than these different situations.
For small datasets either seems okay.
For larger datasets:

the downside of the pagination is that there's nowhere to do it quickly.
the downside of the scrubber is that is can jump too much with little horizontal movement

I think the scrubber is probably better overall.
Though I think would probably prefer the scrubber to sit vertically up the right hand size rather than the bottom

@hughess @archiewood this is really sick.

Pagination styling: alignment of elements needs a bit of work here.

Print formatting: print formatting can be a lot better (e.g., pagination buttons remain in print version)
A stopgap solution here could be to display a nicer looking “X of Y records” message rather than the pagination buttons

I took a stab at the alignment and printing issues identified in the original PR, and adjusted the colouring. I'll open a PR into this branch w/ the proposed changes for your consideration. I've included some screenshots and discussion below.
In addition to the already identified issues in the PR, I would add two more. Neither of these are blocking in my opinion.

The content shift when you reach the last page of a table. I find this even more jarring than the content jumping when you are searching because the pagination buttons move out from under your cursor.
Adding a way to "unsort" a column would be nice, for example the third click on the column could remove the sort. Descending / Ascending / Unsorted.

Pagination Styling

Left aligns the pagination block
Takes the blue out of the active pagination buttons.

I like the strong indication of "available-to-click", but I found them a lot more eye catching than the table content itself.
Not married to this if you think the grey is too soft.

Transitions the buttons back to blue when the table is hovered - this works with "thumb on the table" when scrolling ios as well.
Fades in the download button on hover, syncs the timing to the colour transition above
Vertically centres pagination text, icons, download text, and download icon
Matches text sizes between the two
Adds "x of y records" when printing, in place of the buttons
Incorporates the changes to the download button into how it's presented under charts (fades in, vertically centred)

Table hovered state
Before

After

Un-hovered state

Printing

@mcrascal looks really nice - I like it!

Just played around with the hovering - looks much cleaner. Liking the fade in on the download button too

I played around with the idea Archie had to allow an input for the page number (and using the hover feature Adam added).
@archiewood @mcrascal what do you guys think of this?
The input width is tricky to set - would need to try it with larger page numbers and see what our options are.

I dig it. Seems discoverable without being intrusive when you're just reading.
One other idea for a future release: I think it would be nice to advance the pages continuously when you hold down the next/previous page button. I often use the scrubber to visually scan data that way, and I find it demos really well for teams who are moving off of a slower tool.

Yeah I really like that.
Could have a tiny bit more spacing after the "/" before the "total pages" number to even it out? Not a biggie though.

Ok I made some modifications and got it working more consistently. I've set it up to show 3 digits, which I hope will cover most scenarios.
This isn't great for very large page numbers, but I think we'll need a better solution for those anyways, so this can be a good option until we have that.


Fixes in the groupMembershipClaim values table

The DirectoryRole and the ApplicationGroup selections in the table under the Configure the Azure AD Application Registration for group attributes section, are missing the closing quotation marks.
Also, the "none" value should be added to the table, as it is a valid value.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: c5a6779a-58f1-73fa-2b24-5f85deeea52b
Version Independent ID: 481c093b-6db3-c4e5-6644-b1a3a4497a30
Content: Configure group claims for applications with Azure Active Directory
Content Source: articles/active-directory/hybrid/how-to-connect-fed-group-claims.md
Service: active-directory
Sub-service: hybrid
GitHub Login: @billmath
Microsoft Alias: billmath

@martin77s Thanks for your feedback! We will investigate and update as appropriate.

@martin77s  Thank you for pointing this out. The value None is applicable and can be set directly in the Application manifest . The group claims are now available to be set using Token configuration blade of the registered application.  We have verified this and updated the document . The change would be live in the next 24-48 hours. Should you have any further query on this , please feel free to tag me to your reply .
Thank you.


update interning rules for public keys in third-party blocks

Third-party blocks should be completely isolated from the rest of the token, as the third-party has now way of assessing the consistency of the provided public key table with the token.

applied in https://github.com/biscuit-auth/biscuit/commit/c87cbb5d778964d6574df3e9e6579567cad12fff


ci: Send coverage metrics to Codecov

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@9e8a4ed). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff            @@
##             main        #4   +/-   ##
========================================
  Coverage        ?   100.00%
========================================
  Files           ?         2
  Lines           ?       222
  Branches        ?        27
========================================
  Hits            ?       222
  Misses          ?         0
  Partials        ?         0

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 9e8a4ed...a9d0054. Read the comment docs.


Propose batch from pre-constructed jobs

Fixes #940
Changes

New Endpoint: POST /batch/jobs with a list of jobs, jobs: [{...}, {...}, ...], in the payload
The job maps from the payload are stored in batch.proposal.preconstructed_jobs in mongo
Jobs are validated on proposal for gear manifest, inputs, config, and permissions
On batch run, the jobs then follow the normal job cycle

Review Checklist

Tests were added to cover all code changes
Documentation was added / updated
Code and tests follow standards in CONTRIBUTING.md

Codecov Report

Merging #1069 into master will increase coverage by 0.03%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1069      +/-   ##
==========================================
+ Coverage   91.18%   91.22%   +0.03%
==========================================
  Files          50       50
  Lines        6922     6953      +31
==========================================
+ Hits         6312     6343      +31
  Misses        610      610

@nagem and @kofalt this is ready for review

Notably, this PR is a lot easier to read when using w=1.


 Fedora 22 x86_64

Compile and install the package named "worker":
go install -buildmode=shared -linkshared
Try to compile another package, which imports "worker":
go build -linkshared
go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1 gcc: error: missing argument to ‘-l’
Output with the '-x' option:
/home/user/dev/go/pkg/tool/linux_amd64/link -o $WORK/godev/proj/_obj/exe/a.out -L $WORK -L /home/user/dev/godev/pkg/linux_amd64_dynlink -installsuffix dynlink -extld=gcc -buildmode=exe -buildid=98b4ec39a65525d2ee4614652117b2ad4dfdeb26 -linkshared -w $WORK/godev/proj.a /home/user/dev/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1 gcc: error: missing argument to ‘-l
The same command with '-x --compiler=gccgo' option produces the following:
/usr/bin/gccgo -o $WORK/godev/testgo/_obj/exe/a.out $WORK/godev/testgo/_obj/_go_.o -Wl,-( -m64 -Wl,-) -L/home/user/dev/godev/pkg/gccgo_linux_amd64_fPIC/shlibs -Wl, -rpath=/home/user/dev/godev/pkg/gccgo_linux_amd64_fPIC/shlibs -l -Wl,-E -fPIC
The output is:
/usr/bin/ld: cannot find -l-Wl,-E collect2: error: ld returned 1 exit status
It compiles well without -linkshared. Is there an error, or I just misuse these options?

It would be very helpful if you could provide complete reproduction instructions, by which I mean the contents of the files you are compiling, the names of the directories they are in, etc.  Your current description is sort of vague; when I do the exact same steps it works fine.  There is something different about what you are doing, and the more details you can provide the more likely it is that we can figure out what it is.  Thanks.

Clean go 1.5  installation from golang.org
Let ~/dev/gopath will be GOPATH, where I put 2 folders: lib with lib.go and exe with exe.go
cat lib.go

package lib
 func init() {
        print("package lib")
 }

GOROOT=~/Apps/go-1.5-linux_amd64-vanilla/ GOPATH=~/dev/gopath/ ~/Apps/go-1.5-linux_amd64-vanilla/bin/go install -linkshared -buildmode=shared produces
multiple roots /home/avd/dev/gopath/pkg/linux_amd64_dynlink & /home/avd/Apps/go-1.5-linux_amd64-vanilla/pkg/linux_amd64_dynlink
So, according to that, I run GOROOT=~/Apps/go-1.5-linux_amd64-vanilla/ GOPATH=~/dev/gopath/ ~/Apps/go-1.5-linux_amd64-vanilla/bin/go install -linkshared -buildmode=shared std
After it installation goes fine.
cd ../exe/, cat exe.go

package main
import (
	_ "lib"
)
func main() {

}

GOROOT=~/Apps/go-1.5-linux_amd64-vanilla/ GOPATH=~/dev/gopath/ ~/Apps/go-1.5-linux_amd64-vanilla/bin/go install -linkshared
/home/avd/Apps/go-1.5-linux_amd64-vanilla/pkg/tool/linux_amd64/link: running gcc failed: exit status 1 gcc: error: missing argument to ‘-l’
Probably, I do something wrong with go install -buildmode=shared -linkshared std?
If i run it without -linkshared, I get this when installing exe:
# /tmp/go-build059541814/lib.so sync/atomic.StorePointer: sync/atomic.StoreUintptr: not defined sync/atomic.SwapPointer: sync/atomic.SwapUintptr: not defined sync/atomic.CompareAndSwapPointer: sync/atomic.CompareAndSwapUintptr: not defined runtime.sync_atomic_CompareAndSwapUintptr·f: sync/atomic.CompareAndSwapUintptr: not defined runtime.sync_atomic_StoreUintptr·f: sync/atomic.StoreUintptr: not defined runtime.sync_atomic_SwapUintptr·f: sync/atomic.SwapUintptr: not defined sync/atomic.StorePointer: undefined: sync/atomic.StoreUintptr sync/atomic.SwapPointer: undefined: sync/atomic.SwapUintptr sync/atomic.CompareAndSwapPointer: undefined: sync/atomic.CompareAndSwapUintptr runtime.sync_atomic_CompareAndSwapUintptr·f: undefined: sync/atomic.CompareAndSwapUintptr runtime.sync_atomic_StoreUintptr·f: undefined: sync/atomic.StoreUintptr runtime.sync_atomic_SwapUintptr·f: undefined: sync/atomic.SwapUintptr

Thanks.  I can recreate the problem.  It's a bug in how the go tool generates the library name.
The workaround is: don't cd DIR and run "go install -buildmode=shared -linkshared".  Instead, run "go install -buildmode=shared -linkshared DIR".  The go tool is using the explicit argument to construct the library name.  When you don't give it any argument, the go tool generates "lib.so".  That then confuses the linker.
CC @mwhudson

Thank you for your assistance. I am really glad to be helpful for this project)

Oh right, this is sort of the same problem as #10473 then.

There's a clear workaround here. Better to use that for the 1.5 cycle. Thanks.


Override content for local-time and default formatting

I found 2 problems: appending content in chrome and no default formatting
No default formatting:
Source:
<local-time datetime="2018-08-24T16:57:42.604Z">Aug 24, 2018 23:57:42</local-time>

Result:
<local-time datetime="2018-08-24T16:57:42.604Z" title="Aug 24, 2018, 11:57 PM GMT+7">Aug 24, 2018 23:57:42</local-time>

would be much easier to start if it would apply default formatting month="short" day="numeric" year="numeric" hour="numeric" minute="numeric" (or similar) and may be update-content=false to prevent updating content
Appending content in chrome:
Source:
<local-time datetime="2014-04-01T16:30:00-08:00" month="short" day="numeric" year="numeric" hour="numeric" minute="numeric">April 1, 2014 4:30PM PDT</local-time>

Result:
<local-time datetime="2014-04-01T16:30:00-08:00" month="short" day="numeric" year="numeric" hour="numeric" minute="numeric" title="Apr 2, 2014, 7:30 AM GMT+7">Apr 2, 2014 7:30 AMApril 1, 2014 4:30PM PDT</local-time>

I also have the "appending content" problem. But only if I use this library by import "@github/time-elements" in my bundle.js which webpack processes. If instead I add <script type="module" src="https://unpkg.com/@github/time-elements@3.1.2?module"></script> to my HTML file the problem doesn't appear (both when adding this script tag to <head> or just before the closing </body>).
What is weird is that all the steps I can step through with the debugger where something is assigned to this.textContent assign the correct thing. It is only when we return from https://github.com/github/time-elements/blob/40f3d1abb9a1271607182704fa949b5867f94496/src/local-time-element.ts#L133 (or that is how it looks in the debugger) that the old text content of the tag is added in again.
I think my webpack setup is fairly pedestrian. One thing to note is that I don't have a polyfill installed but I think that is Ok because my browser is Firefox 90.0b10 (64-bit).
The bundle is about 100kB and loaded via <script src="dist/bundle.js"></script> in the <head>.
Somehow this feels like there is a race between two things or me not correctly initialising the time-elements library :-/

If you'd like to try the new release I believe this issue is likely fixed. If not let me know and we can revisit it.


Add support for target attribute on list actions link

On the model list view, I wanted to add a target=_blank attribute to a certain action link on my list view, but currently that's unsupported.
Currently I'm adding the action link using the EndpointLinkRowAction class (module flask_admin/model/template.py, which uses the actions.html to finally render the link), and I'm not sure how to extend it to add that attribute without having to edit flask_admin files themselves.

Hi Arthur and developers,
As of 2019. I came across a similar problem when adding links to the menu. After quite some digging I found missing URL target checks in the layout.html (in my case for bootstrap3). Btw, python code seems intact and supports the target parameter for URLs.
Here is the change I made in the layout.html, see the item.target line :
{% macro menu_links(links=None) %}
  {% if links is none %}{% set links = admin_view.admin.menu_links() %}{% endif %}
  {% for item in links %}
    {% set class_name = item.get_class_name() %}
    {% if item.is_accessible() and item.is_visible() %}

           {{ menu_icon(item) }}{{ item.name }}

    {% endif %}
  {% endfor %}
{% endmacro %}

I hope this helps.


SCons: Fix MSVC D9025 warning overriding opt level

And cleanup disable_warnings too to avoid setting /w / -w multiple times.

Cherry-picked for 3.6.


Unlimited Purchases in the Swag Shack

I have only seen one report of this, and to be honest, not sure if it is an actual issue, but apparently it doesn't properly detect credit amount for purchases through the Swag Shack.
However, every time that I do it, it seems to be fine and detects my credit balance and doesn't let me go past it, same with score.
#17 could be related to this issue though, so will have to see about that in my investigation.

I implemented a /balance command so hopefully that the user didn't know how much credits that they had


copy should not copy generated columns

These columns should be passed to the default list, so the default can be applied.

go to an existing experiment:  https://dev.gpcrconsortium.org/chaise/record/#1/experiments:experiment/id=40
click copy
when the new record is submitted, it seems like the values of generated columns (e.g. number of samples and number of images) also get updated. This is misleading as the new experiment shouldn't have any of these values. These generated columns should be using the default values..

Note: the rest of the columns will be overridden by the trigger, but it is still misleading to show the existing value. I can write a trigger to always initialize number of samples to 0, but this is probably the wrong approach.
If it is easier, maybe we shouldn't be displaying the existing values of the generated column in the copy case.. We should show "automatically generated" instead. @karlcz @robes what do you think?

Make sense to me


additionalProperties using a $ref are resolved to false when calling toNode

Describe the bug
When using a JSON ref, it is not possible to get back the additional properties JSON in the schema
To Reproduce
import com.fasterxml.jackson.databind.JsonNode;
import org.openapi4j.parser.OpenApi3Parser;
import org.openapi4j.parser.model.v3.OpenApi3;
import org.openapi4j.parser.model.v3.Schema;

import java.nio.file.Files;
import java.nio.file.Path;

public class AdditionalPropertiesBug {
    public static void main(String[] args) throws Exception {
        String openApi =
        "components:\n" +
        "  schemas:\n" +
        "    Messages:\n" +
        "      type: object\n" +
        "      additionalProperties:\n" +
        "        $ref: '#/components/schemas/Message'\n" +
        "    Message:\n" +
        "      type: object\n" +
        "      properties:\n" +
        "        code:\n" +
        "          type: integer\n" +
        "        text:\n" +
        "          type: string";

        Path enumBug = Files.createTempFile("", "");
        Files.write(enumBug, openApi.getBytes());

        OpenApi3 api = new OpenApi3Parser().parse(enumBug.toFile(), false);

        Schema schema = api.getComponents().getSchema("Messages");

        JsonNode jsonNode = schema.toNode(api.getContext(), true);

        System.out.println(jsonNode.toPrettyString());
    }
}

The output:
{
  "type" : "object",
  "additionalProperties" : false
}

Expected behavior
The additionalProperties field should be the same as the source document
Additional context
I am attempting to use openapi4j to validate JSON examples, from the OpenAPI document and at runtime using https://github.com/networknt/json-schema-validator, any enumerated integer value currently fails

@elliott-miller Thanks for the report.
0.6-SNAPSHOT will be available soon, are you able to check the provided modification ?

Yes no problem, let me know when it's available

It should be already, snapshot versions are generated for all master valid commits.

I can confirm this is fixed in the latest code. Thanks for the fast turn around! I look foward to the 0.6 release :)

Thank you for the feedback ! Just to let me know, why are you using schema validator from networknt instead of the one provided here ?

The code I am working in was already validating with networknt, now that these issues are fixed I will look into using the validator provided here.

Ok, it's clear now !


Feature request: ability to serialize and deserialize state

Since fitting large data sets can take quite a long time, it would be useful to be able to save the state to disk or elsewhere in memory so computation can be resumed elsewhere.
A couple use cases:

Resume asynchronous fitting if process needs to abort before it's done.
Save results of fitting in a database so additional points can be transformed later, on other devices or in a parallel process (see #11).

Thanks

Extra bonus points if it can be serialized as an array buffer so the data can be transferred between workers rather than copied. But I realize that's a big ask.

Yeah, I've thought about this a bit... I think it's worth doing. I'll try to prioritize this moving forward.

Was this ever solved or a solution suggested? I've tried a number of serialisation libraries with no luck.

did anyone manage to do the serialization/deserialization?


Use node modules instead ES6 modules.

The main file in the package.json is now the src folder.
All es6 modules were replaced with node-modules
Remove the -d option in the build phase to remove code evals

Once this PR is merged the tangram.cartodb build system (browserify) will be aware of the changes
in the depencency tree allowing hot reloading and faster builds.

Can we avoid doing formatting changes along the rest of the changes? Reviewing the real changes is quite hard this way.


paypal_express_local_confirm preference not defined

Getting the following when checking out:
NoMethodError in Spree::CheckoutController#paypal_payment
paypal_express_local_confirm preference not defined
Using Rails 3.1.3 and Spree 1.0.0.rc3 --edge

Added an initializer containing:
  preference :paypal_express_local_confirm, :boolean, :default => true
end```

@chrise86 I've used the same fix but are we sure it is the right way of doing it. Probably the extension should do that. Don't you think?

@lucapette yes definitely, if it is something that is essential to the extension then it should be offered as an option in the configuration or backend preferences as standard...

@chrise86 If you're agree with me you could be re-open the issue. It's a good way of keeping on eye on the problem.

This preference can now be set using Spree::PaypalExpress::Config[:paypal_express_local_confirm]. Defaults to true unless  set in an initializer or elsewhere.

@LBRapid thank you very much!


Feature/multiple instances

Here is the fix for issue #11

Widthdrawing, don't want to push the mess I have in my commit history


Find solution for adding tool tips to text

See the tooltip in the following design:

We have a tooltip component already, but how can we apply it to text that is defined in markdown (text from image above)? From my research, markdown doesn't support this type of rich markup. Do we need to get away from using markdown altogether?
This tooltip should be used in all texts that contain technical terms. We don't want users stuck and opening up new tabs just to Google terms and end up discouraged. Ideally we can answer any open questions in these tiny tooltips.

Related #79 #80.

With the new architecture adding tooltips has now become possible. There is still an unresolved issue wrt translations that I outline in #121 but you can currently see it working in this PR.

We currently have 2 Tooltip components that we still need to merge into a single component, so lets leave this issue open for now (unless you want to create a new issue for it @ecurrencyhodler?). I'll pick that up tomorrow.

Sounds great!

Yes, this architecture is great. The 2 tool tips can be merged in a separate PR.


KeyError: 'category_id' while reading annotations json.

My via_region_data.json somehow doesn't seem to have 'category_id' key.
Annotation keys of one of the image look like this:
"05_01_01.png105049":{
      "filename":"05_01_01.png",
      "size":105049,
      "regions":[
         {
            "shape_attributes":{
               "name":"polygon",
               "all_points_x":[
                  223,
                  222,
                  218,
                  213,
                  206,
                  202,
                  198,
                  197,
                  197,
                  200,
                  203,
                  204,
                  208,
                  212,
                  213,
                  216,
                  218,
                  220,
                  221,
                  223
               ],
               "all_points_y":[
                  201,
                  206,
                  209,
                  210,
                  207,
                  203,
                  198,
                  194,
                  190,
                  187,
                  186,
                  185,
                  184,
                  184,
                  184,
                  186,
                  188,
                  190,
                  192,
                  195
               ]
            },
            "region_attributes":{

            },
 "file_attributes":{

      }

(Regions have multiple dictionaries, this is just a sample of the format)
How should I alter custom.py (line 151 I suppose, to be specific).
Edit:
FYIP, I have only one class in my annotations.

Hi @mansi-aggarwal-2504.  Thanks for the question.  Looks like you didn't set a label as in the first screenshot in the Label section and you get this error because there is no             "region_attributes":{"type":"my_label"} as in below and it looks for an older way of labeling that via used to have.
{
   "cat_999.png9024":{
      "filename":"cat_999.png",
      "size":9024,
      "regions":[
         {
            "shape_attributes":{
               "name":"polygon",
               "all_points_x":[
                  3,
                  9,
                  16,
                  20,
                  22,
                  21,
                  14,
                  7,
                  2,
                  1
               ],
               "all_points_y":[
                  19,
                  18,
                  18,
                  21,
                  25,
                  30,
                  34,
                  34,
                  29,
                  22
               ]
            },
            "region_attributes":{
               "type":"eye"
            }
         },
         {
            "shape_attributes":{
               "name":"polygon",
               "all_points_x":[
                  45,
                  45,
                  49,
                  55,
                  62,
                  63,
                  62,
                  58,
                  53,
                  46
               ],
               "all_points_y":[
                  30,
                  22,
                  18,
                  17,
                  17,
                  22,
                  29,
                  32,
                  33,
                  33
               ]
            },
            "region_attributes":{
               "type":"eye"
            }
         },
         {
            "shape_attributes":{
               "name":"polygon",
               "all_points_x":[
                  27,
                  33,
                  42,
                  49,
                  47,
                  42,
                  35,
                  28
               ],
               "all_points_y":[
                  49,
                  47,
                  47,
                  50,
                  54,
                  59,
                  59,
                  53
               ]
            },
            "region_attributes":{
               "type":"nose"
            }
         }
      ],
      "file_attributes":{

      }
   }

   [snipped, other files and labels]

}

You could hardcode labels if you only have one.  Comment out line 151-152 and perhaps try:
class_names_each_region = ['mylabel'] * len(polygons)

Hope that helps.  Best.

Thank you and I will try this. Just FYIP, I also have this type of region_attributes:
 "region_attributes":{
               "name":"nose"
            }

I am not sure which version this is and what the settings in VIA were since I got the data from somewhere else and am only working on object detection.

Update: I found my error.
I was supposed to change class name in line 68. i.e.,
CLASS_NAME = {'flower':1}
Thank you for your help.
I had one more question. After the model training and validation, will I get an output son for test set. How can I check results with ground truth on single images?

Update: I found my error.
I was supposed to change class name in line 68. i.e.,
CLASS_NAME = {'flower':1}
Thank you for your help.


CHANGELOG for 0.36.0

re https://github.com/sqlparser-rs/sqlparser-rs/issues/905

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 87.131%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
15471

Relevant Lines:
17756

💛  - Coveralls


Add obsolete and internal load commands.

Adds SymsegCommand (LC_SYMSEG), FvmlimCommand (LC_LOADFVMLIB, LC_IDFVMLIB), IdentCommand (LC_IDENT), and FvmfileCommand (LC_FCMFILE).
libmacho doesn't seem to expose a pubic definition for the structure associated with LC_PREPAGE, so that one will have to remain unimplemented for now.

:+1: Feel free to merge once the minor documentation-related comment has been addressed.


Added stylelint

Will correcting all the linting issues be part of this PR? If not no biggie.

I guess it's probably best to do that once all these PRs are in for v1, do a tidy before we package it up?

LGTM