i can't find any correlation between the coordinates obtained from the model and the actual stop sign of the example

hi,
I am trying to learn Objcet detection with ML.net
Unfortunately, but maybe it is my problem, I can't find any correlation between the coordinates obtained from the model...
"Predicted Boxes:
Top: 89.453415, Left: 481.95343, Right: 724.8073, Bottom: 388.32385, Label: Stop-Sign, Score: 0.99539465"
and the actual Stop signal in the example image.
Where do the axes start from? do the top, left , right, bottom coordinates of the output refer to the TOP,LEFT and BOTTOM,RIGHT corners of the bounding box? Obviously I have considered the actual size of the image, doing the proportion to get the real coordinates but still I don't find any correlation.
Thanks
Massimo Franceschelli

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

ID: 63a4f3b7-a2a6-760a-534b-22788ba77b5c
Version Independent ID: 1bee7901-164f-d9a7-9e7b-fd0ba55ad42e
Content: Tutorial: Detect objects in images with Model Builder - ML.NET
Content Source: docs/machine-learning/tutorials/object-detection-model-builder.md
Product: dotnet-ml
GitHub Login: @briacht
Microsoft Alias: brachtma

Adding @JakeRadMSFT @LittleLittleCloud.

Hi @MaxFranz
The coordinates are those of the bounding box. Images for object detection are normalized at a 800 (width) x 600 (height). Therefore, you need to scale these coordinates to your actual image size. Here's one way you could do it.
In this sample input-image is the image you've provided in this issue.
var image = new Image.FromFile("input-image.jpeg")

var top = image.Height * 89 / 600
var bottom = image.Height * 388 / 600
var left = image.Width * 481 / 800
var right = image.Width * 724 / 800
var height = Math.Abs(bottom-top)
var width = Math.Abs(right-left)

I've hardcoded the dimensions you provided, but you can take those from the Top, Bottom, Left, Right bounding box properties. The image.Height and image.Width are the actual dimensions of the image.
Hope this helps


MONDO:0008941 has no parent

MONDO:0008941 - 'hepatic fibrosis-renal cysts-intellectual disability syndrome'
The only parent for this term is "disease". At a minimum, it should be classified under 'human disease'. But it really should have a better parent.
@nicolevasilevsky , I am assigning you as it looks like it might be related to the "intellectual disability" terms work you have been doing.

this is probably my fault! I will fix it, thanks for reporting


fix: put types first in exports map

the types need to come first: https://www.typescriptlang.org/docs/handbook/esm-node.html#packagejson-exports-imports-and-self-referencing
kind of dumb, but :shrug:

@benmccann just for my knowledge, is this PR solving https://github.com/chartjs/chartjs-adapter-luxon/issues/78 ?

I don't think so. I just happened to notice it while looking at that issue

@benmccann Hi.

https://www.typescriptlang.org/docs/handbook/esm-node.html#packagejson-exports-imports-and-self-referencing

Could you please point to the exact place where written that it must be first?

I tested it - order doesn't matter

In the section I linked to above, do a ctrl+f for:

must occur first!

@benmccann Right, thanks! It's interesting cause I tested it, and order doesn't matter. Also important to know that tsc searching typings in exports only when "moduleResolution": "NodeNext".

I didn't actually test it, but noticed it publint<EMAIL_ADDRESS>It makes sense to me that it would need to come first because exports is ordered and uses the first match. From the Node docs:

Within the "exports" object, key order is significant. During condition matching, earlier entries have higher priority and take precedence over later entries. The general rule is that conditions should be from most specific to least specific in object order.

At the very least it doesn't hurt, so maybe better to be safe.


GS Interview solved solution on HackerRank

closes #58
IMPORTANT: Please do not create a Pull Request without an issue.
All Submissions:

[x] I have read the CONTRIBUTING document.
[x] My code is written in Python3 and is ending with .py
[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?
[x] I have checked that my submission does pass the test on HackerRank
[x] Does your filename follow the naming Conventions?
[x] Have you linked your PR to an Issue?

Closing issues
Put closes #XXXX in your comment to auto-close the issue that your PR fixes (if such).

Why is the travis CI test failing? Can you give me more instructions?

Why is the travis CI test failing? Can you give me more instructions?

test/test_CalculatePi.py::test_calculate_pi FAILED                       [  8%]
This test is failing, could you just make its test as skip?


Edit: Help improve or add subtitles

Describe your problem and how to reproduce it:
Data Analysis with Python Course
I went into the help to improve or add subtitles in the video on the Python course, but I couldn't fix it.

Please open the permission to modify it.
Add a Link to the page with the problem:
https://www.freecodecamp.org/learn/data-analysis-with-python/data-analysis-with-python-course/jupyter-notebooks-cells
Tell us about your browser and operating system:

Browser Name:
Browser Version:
Operating System:

If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box):

Hi @donchanee
Unfortunately, YouTube has disabled/removed the ability to add publicly contributed closed captions (subtitles) for a while now. We would love to support this and are brainstorming on other ways.
I am going to have to close this due to the limitation. We will make an announcement if we figure out something.


Support to idf 5.0

Closes #80

Add this lines to the Changelog:
[0.7.0] - Unreleased
Added

Add support to ESP-IDF v5.0


Nan will sometimes appear when calculating reflection coefficients

I used the package for genetic optimization and found that nan would appear when calculating reflectance in a large-scale search

font{
    line-height: 1.6;
}
ul,ol{
    padding-left: 20px;
    list-style-position: inside;
}

    I have sovled this problem.

        I found that in a few cases, some numbers in the M matrix are very small, very closely to 0, which can lead to a NAN in the calculated reflection coefficient r. So, I changed all the data types to torch.double. Then, it worked fine after that.

<EMAIL_ADDRESS>

---- Replied Message ----

     From

<EMAIL_ADDRESS>

     Date

    10/5/2022 17:11

     To

<EMAIL_ADDRESS>

     Cc

<EMAIL_ADDRESS>        ,

<EMAIL_ADDRESS>

     Subject

          Re: [MLResearchAtOSRAM/tmm_fast] Nan will sometimes appear when calculating reflection coefficients (Issue #5)

For which parameters do Nan's appear? Can you give me a minimal example to replicate the problem?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>


Added increment and decrement transitions to number

This PR adds increment and decrement transitions to Number microstate.
Closes #37

@cowboyd ready.


feat(saas): Added Waitlist, Maintenance, 404 pages

#27  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @alifarooq9 and the rest of your teammates on  Graphite


[MINOR] Add a medium-definition Hudi logo

What is the purpose of the pull request
As above.
Brief change log

Adds website/static/assets/images/hudi-logo-medium.png.

Verify this pull request
The website is built locally and the new image can be accessed by http://localhost:3000/assets/images/hudi-logo-medium.png.
Committer checklist

[ ] Has a corresponding JIRA in PR title & commit

[ ] Commit message is descriptive of the change

[ ] CI is green

[ ] Necessary doc changes done or have another open PR

[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

I don't see this being used anywhere. So, may I know whats the purpose then ?

This minor PR (#5336) tries to add the logo to the github repo.  Existing logo is low-def and does not visualize well when enlarged.

This minor PR (#5336) tries to add the logo to the github repo. Existing logo is low-def and does not visualize well when enlarged.

+1 for this


Authenticate connection to editors

This plugin is potentially-dangerous to use on any multiuser machine (or on any machine where untrusted code may be running, either as your user or as nother user) since it uses a fixed default loopback port (one reserved by IANA for another company at that... 😢) and has no way of authenticating editor-servers with the browser. A malicious attacker with access to loopback could read or If you're interested in how other extensions have addressed this problem, you might enjoy 1Password's blog on the subject from 2015.
A simple option for non-Windows systems would be to look into supporting a unix domain socket instead of a loopback socket; at least that would give a modicum of protection against other users on the same machine (although no protection against malicious software running as the same user). I somehow doubt that Fx57 has an API for websockets over a stream-mode domain socket, but you never know.
A more complicated option would be strong authentication; on first-run the browser extension could generate a TLS keypair and require users to confirm a fingerprint in the editor before using websockets; the rest of the session could just use wss:// instead of ws://. This would probably be difficult for editor plugins that aren't written in a language that allows easy temporary addition to a TLS trust store and I don't even know that there would be a safe way to generate an RSA or ECDSA keypair from an extension (that sounds like a lot of webcrypto and is there even ASN.1 in webcrypto?), but it'd be pretty secure.
The way vimperator implemented this historically, of course, was to make a securely-named temporary file on disk and pass its name to the editor through exec args; this is much stronger protection (since the file was readable by only the current user and the name was hard to predict, which in turn makes it hard for an attacker to find). I understand that there's no longer a process management API, but if there's a way to copy the textarea to a file, you might still be able to exchange text data through a securely-named user-visible-only file and just pass the file name through websockets?
I'm not sure how likely an attack like this is, but there should probably at least be a warning that if you're on a multi-user machine and the other users are technically savvy and prone to mischief that this plugin broadcasts all of your edits in plaintext to them.

Thanks for raising your concerns. Keep in mind that this is a browser extensions so most APIs available are high level, I doubt I’d be able to pipe to a file while keeping performance high.
Ideally the extension needs a rewrite but essentially it’s abandonware at the moment: it works, but don’t expect changes that take longer than a few minutes.
What could the worst be? They steal some textarea content? The connection doesn’t happen until the user actually clicks the button, so i think one would notice if that doesn’t work.

As I understand, the editor server allows anyone on the same machine to drive your editor. From a cursory look (at the gvim one) it's only meant to allow reading and writing a buffer, but it seems it should not be too hard to get past that and since most editors can do anything including run commands, that would allow anyone to run any command as you.
Just throwing some random ideas if unix domain sockets can't be used. Sorry if they don't make sense, I don't know much about chrome/quantum extensions.
Can't dbus be used for that?
Or could firefox and the editor server share a secret? For instance an environment variable that would be set to a random string by a wrapper script starting both firefox and the editor.
Or could firefox be started by the editor server and communicate with it with  a pipe?

If the server can be abused, more protections can be added to the editor Extensions.
The secret sounds relatively easy to implement, essentially a PSK, however I don’t maintain any of those extensions so it’d have to be a group effort.
I don’t know what dbus is, therefore it’s not available in web extensions.

Or could firefox be started by the editor server and communicate with it with a pipe?

Too roundabout. GhostText should be 1 click away, otherwise just type in your editor and paste it in your browser.

You don't necessarily need to pipe the text through a file, just sharing a secret through the file could be enough.

@Roguelazer
Forgive my bad englist and my low knowledge of network security....
TL;DR
I have noticed, that if some application is already using port 4001, then other applications cannot connect to that port.
So, my question is, is there any way to still receive the message without connecting directly to port 4001?
More detailed
Say there's a server running on port 4001 on my machine. Also, there's a client that periodically sends some data (in plaintext) to that server on port 4001. Now, if I want to run another server on port 4001 with the intention of stealing the data, I can't (ERROR: Port Occuped) because my server cannot acquire the port.
So, is there any other way (ie. without killing the already-running server) I can get the plaintext data that is being transferred from the client to the server? If yes, how?

@stephane-chazelas

Can't dbus be used for that?

NO

I don’t think any editor extension actually shows an error to the user about not being able to connect, so any software can act as a GT server before you open your editor and just receive the data. GT won’t do anything in your editor, but the other software already received the content from the browser.
Other than that, I don’t know if other software can read data flowing through an open port, so encryption of the channel might not be necessary.
I think GT-browser should only ensure, optionally, that it connects only to what the user wants. As the title suggests: Authentication.
This is a valid request, but I just don’t know how to securely implement it.

Honestly, the simplest way would be to have the editor, upon connecting, send a nonce across the connection.  The user can then verify the nonce in the browser and encryption credentials can be created so that it can be automatically verified next time.

The more I think about this, the less I think this is useful. An authentication here would only be useful here if:

a malicious actor can open a port on localhost before your editor does
the field you're about to activate has sensitive information in it

In the first case, I think you're already pretty screwed regardless of what GhostText does.
The second case is rare and can be avoided by emptying your field before connecting, to ensure that the connection is happening correctly before sending the data across.

If you're paranoid, I suggest 2 things:

change the default port
open an issue to have the editor warn you in case the port is already used (if you're not using Sublime Text, the issue can't be opened on this repo)

If you're a Sublime Text user you can open a new issue:

Show an error message if the port can't be opened

This way you will know if the connection will fail when you open the editor. If the editor can open the port successfully, you're in the clear.


ENH: Make all readers read in ~100 MB blocks

Currently our raw readers are not quite consistent in how they read data in a memory efficient way.

ctf, edf, and fiff have data stored in "blocks" of N samples, so should already be fairly memory efficient since we read them block-wise.

nicolet and the soon-to-be-added eeglab readers each use a reasonable read size (100 MB chunks), but should be refactored to use the same scheme/functions for setting limits (DRY).

kit, brainvision, bti, egi, and kit read in all of the data at once, and should be refactored to use the same read-size and functions as nicolet and eeglab.

This should help make our readers again more consistent, and improve memory consumption.

Any volunteer for this one? If not I can do it.

@jasmainak if you want to move toward this in #2676 by refactoring nicolet and your eeglab reader to use the same function for choosing how many samples to read in (based on the number of channels and bytes per sample) and the resulting read and data bounds it would already be helpful.

yeah, I already discussed this refactoring with @jaeilepp . That would be a good start.

Yeah, I think I can take this one.


USB_HID using pico_rgb_keypad and micropython

Hi,
Is there a way to emulate key presses to an OS using the pico_rgb_keypad and micropython. Is this likley to be added to the current libraries?

This is not something we can add into our libraries, since it needs to be added into the Pico MicroPython port to be possible.
There's an open issue about that here - https://github.com/raspberrypi/micropython/issues/5 - but it's not clear if/when it might be tackled.
CircuitPython - however - already supports this, and @sandyjmacdonald has posted some example code for RGB Keypad - https://gist.github.com/sandyjmacdonald/b465377dc11a8c83a8c40d1c9b990a90

This is not something we can add into our libraries, since it needs to be added into the Pico MicroPython port to be possible.
There's an open issue about that here - https://github.com/raspberrypi/micropython/issues/5 - but it's not clear if/when it might be tackled.
CircuitPython - however - already supports this, and @sandyjmacdonald has posted some example code for RGB Keypad - https://gist.github.com/sandyjmacdonald/b465377dc11a8c83a8c40d1c9b990a90

Thank you, i got @sandyjmacdonald example working with circuitpython. This should be enough to get me going 👍

Thank you, i got @sandyjmacdonald example working with circuitpython. This should be enough to get me going 👍

For anyone landing here from Google, a decent step-by-step guide with CircuitPython is on the fourm here:
https://forums.pimoroni.com/t/pico-rgb-keypad-base-as-a-usb-hid-device-solved/16224/7


Think about to fix the issues found by adapter checker

I am an automatic service that looks for possible errors in ioBroker and creates an issue for it. The link below leads directly to the test:
https://adapter-check.iobroker.in/?q=https://raw.githubusercontent.com/shalleeeeee/ioBroker.Moco

[ ] [E005] Adapter name must be lowercase
[ ] [E006] Invalid characters found in adapter name "Moco". Only lowercase chars, digits, "-" and "_" are allowed
[ ] [E020] Name of adapter in package.json must be lowercase and be equal to "iobroker.moco". Now is "undefined"
[ ] [E019] Invalid repository URL: https://github.com/Author/ioBroker.template. Expected: git+https://github.com/shalleeeeee/ioBroker.Moco.git
[ ] [E103] common.name in io-package.json must be equal to "moco". Now is Moco
[ ] [E150] No common.connectionType found in io-package.json
[ ] [E152] No common.dataSource found in io-package.json
[ ] [E125] External icon not found under URL: https://raw.githubusercontent.com/Author/ioBroker.template/master/admin/template.png
[ ] [E200] Not found on npm. Please publish
[ ] [E300] Not found on travis. Please setup travis
[ ] [E801] No repository about text found. Please go to "https://github.com/shalleeeeee/ioBroker.Moco", press the settings button beside the about title and add the description.
[ ] [E603] NO "## Changelog" found in README.md
[ ] [E604] No "## License" found in README.md

I have also found warnings that may be fixed if possible.

[ ] [W400] Cannot find "Moco" in latest repository
[ ] [W801] .npmignore not found
[ ] [W901] .gitignore not found

Thanks,
your automatic adapter checker.
P.S.: There is a community in Github, which supports the maintenance and further development of adapters. There you will find many experienced developers who are always ready to assist anyone. New developers are always welcome there. For more informations visit: https://github.com/iobroker-community-adapters/info

Do you need help fixing the bugs?

Do you need help fixing the bugs?


the server could not find the requested resource

Rancher Server Setup

Rancher version: 2.5.9
Installation option Helm Chart:

If Helm Chart, Kubernetes Info:
Cluster Type (k8s):
Node Setup: master 3
Version: 1.2.2

Proxy/Cert Details:
cert-manger

Information about the Cluster

Kubernetes version: 1.2.2
Cluster Type (Local):

Describe the bug

can I ask for advice you?
I tried installed rancher on my k8s cluster but dose not worked rancher
I have no idea, help me....
Screenshots

2021/08/20 16:29:27 [INFO] Rancher version v2.5.9 (3c5418944) is starting
2021/08/20 16:29:27 [INFO] Rancher arguments {ACMEDomains:[] AddLocal:true Embedded:false BindHost: HTTPListenPort:80 HTTPSListenPort:443 K8sMode:auto Debug:false Trace:false NoCACerts:false AuditLogPath:/var/log/auditlog/rancher-api-audit.log AuditLogMaxage:10 AuditLogMaxsize:100 AuditLogMaxbackup:10 AuditLevel:0 Agent:false Features: ClusterRegistry:}
2021/08/20 16:29:27 [INFO] Listening on /tmp/log.sock
2021/08/20 16:29:27 [FATAL] the server could not find the requested resource

Maybe rancher doesn't support k8s 1.22 now

Same problem, maybe rancher doesn't support k8s 1.22 now

Yes, that's the reason

You can follow https://github.com/rancher/rancher/issues/34060 for 1.22 support


Update xline-client/README.md to mention dependency on protobuf-compiler

It seems  that  protobuf-compiler  is a dependency for building xline-client  (Rust)
This update in documentation adds a mention on the required dependency
A section is added in https://github.com/xline-kv/Xline/blob/master/xline-client/README.md

Hi, @koolquark. Execute me, could you please take some time to address the comments on this pr? It has been open for quite a while.

Closed since pending for quite a while.


RigidBody2D doesn't work with :global_transform.origin

I'm developing a multiplayer game, I'm using WebRTC to connect peers to the host and this one host peer with the id 1 ( signalling its the server ) ,  the problem is that peers that join can't sync with older peers, even if correct connected to the WebRTC Network, also, everything seems to be unsynced in the incorrect spot.
RollbackSynchronizer is syncing this state: :global_transform.origin
online_player.gd
extends PlayerNode

@export var input: PlayerInput

@onready var rollback_synchronizer = $RollbackSynchronizer

# CAUTION
# Please, don't make your changes to the player node here,
# only do such if you understand what you're doing.
# prefer to modify "player.gd" instead.
# CAUTION

func shoot_ball(_play_audio):
	if is_multiplayer_authority():
		if $MultiplayerSynchronizer.get_multiplayer_authority() != multiplayer.get_unique_id():
			rpc_id(name.to_int(), '_kick_debounce')
		super(false)
	KickAudio.play()

func _ready():
	super()
	var player_id = name.to_int()
	await get_tree().process_frame

	set_multiplayer_authority(1)
	input.set_multiplayer_authority(player_id)
	rollback_synchronizer.process_settings()

	if player_id != OnlineManager.id:
		$Camera.queue_free()
		$PlayerContact.queue_free()

func _physics_process(_delta):
	pass

func _rollback_tick(delta, _tick, _is_fresh):
	move(delta)

func _process(_delta):

	if $MultiplayerSynchronizer.get_multiplayer_authority() == multiplayer.get_unique_id():
		if Input.is_action_pressed('kick') and kick_button_released:
			kicking = true
		else:
			kicking = false
			if !Input.is_action_pressed('kick'):
				kick_button_released = true

	if kicking and skill_in_use == '':
		player_border.texture = border_spritesheet['active']
		if ball_node and !kick_debounce:
			shoot_ball(true)
	elif skill_in_use != '':
		player_border.texture = border_spritesheet[skill_in_use]
	else:
		player_border.texture = border_spritesheet['normal']

func move(delta: float) -> void:

	if input.movement != Vector2.ZERO:
		var velocity = input.movement.normalized() * move_speed * delta
		apply_central_impulse(velocity)
	else:
		var opposite_force = -linear_velocity * deceleration_factor * delta
		apply_central_impulse(opposite_force)

	# CAUTION! this is very simplistic implementation of an skill, this is intended to change drastically.
	if Input.is_action_pressed('skill_1') and (Time.get_ticks_msec() - last_skill_time) > skill_cooldown * 1000:
		skill_in_use = 'dash'
		apply_central_impulse(Vector2(input.movement.normalized()) * dash_power * delta)
		last_skill_time = Time.get_ticks_msec()
		await get_tree().create_timer(0.45).timeout
		skill_in_use = ''

@rpc("authority")
func _kick_debounce():
	kick_button_released = false
	kick_debounce = true
	kicking = false
	await get_tree().create_timer(0.1).timeout
	kick_debounce = false

player_input.gd
extends BaseNetInput
class_name PlayerInput

var movement: Vector2 = Vector2.ZERO

func _gather():
	if not is_multiplayer_authority():
		return
	movement = Vector2(
		Input.get_action_strength("move_right") - Input.get_action_strength("move_left"),
		Input.get_action_strength("move_down") - Input.get_action_strength("move_up")
	)

simplescreenrecorder-2024-02-05_22.02.13.webm

Hi @Suero152, I half-remember seeing an email notification about changing :global_transform.origin to :global_position - did that solve the issue? Property paths can't do properties of properties, only properties of other nodes, e.g. PlayerInput:movement, but not PlayerInput:movement.x.

I haven't worked with p2p in Godot yet, so I'm not that familiar. It looks like the input gets to the server, but the server fails to broadcast the new state to the other players.
Do you get any errors or warnings? What is the config for MultiplayerSynchronizer?
Also, to be clear, p2p is not supported officially, but I'm happy to help here!

Hello, thanks so much for replying and offering your help, I'll provide most info I can down below, Let's try to fix my issue and make netfox better to p2p :) .
Godot Output:
Invalid property path error happens some times and I believe its due to the character spawn process, after the player is spawned it doesnt happens anymore.

Network Profiler of Host ( peer 1 ):

Network profiler of Peer 2:

Rollback synchronizer config:

Multiplay synchronizer config:

Player input gdscript:
extends BaseNetInput
class_name PlayerInput

var movement: Vector2 = Vector2.ZERO

func _gather():
	if not is_multiplayer_authority():
		return
	movement = Vector2(
		Input.get_action_strength("move_right") - Input.get_action_strength("move_left"),
		Input.get_action_strength("move_down") - Input.get_action_strength("move_up")
	)

Player gdscript:
extends PlayerNode

@export var input: PlayerInput

@onready var rollback_synchronizer = $RollbackSynchronizer

func _ready():
	super()
	var player_id = name.to_int()
	await get_tree().process_frame

	set_multiplayer_authority(1)
	input.set_multiplayer_authority(player_id)
	rollback_synchronizer.process_settings()

func _physics_process(_delta):
	pass

func _rollback_tick(delta, _tick, _is_fresh):
	move(delta)

func _process(_delta):
    # REDACTED

func move(delta: float) -> void:

	if input.movement != Vector2.ZERO:
		var velocity = input.movement.normalized() * move_speed * delta
		apply_central_impulse(velocity)
	else:
		var opposite_force = -linear_velocity * deceleration_factor * delta
		apply_central_impulse(opposite_force)

	# CAUTION! this is very simplistic implementation of an skill, this is intended to change drastically.
	if Input.is_action_pressed('skill_1') and (Time.get_ticks_msec() - last_skill_time) > skill_cooldown * 1000:
		skill_in_use = 'dash'
		apply_central_impulse(Vector2(input.movement.normalized()) * dash_power * delta)
		last_skill_time = Time.get_ticks_msec()
		await get_tree().create_timer(0.45).timeout
		skill_in_use = ''

Spawning player gdscript:
extends Node2D

var player = preload("res://scenes/characters/online_player.tscn")
var last_world_state_time = 0

func _ready():
	OnlineManager.player_joined.connect(_on_player_joined)
	OnlineManager.player_left.connect(_on_player_left)

func _on_player_joined(new_peer_id, _presence):
	if new_peer_id:
		for peer_id in OnlineManager.currentLobby.peer_ids:
			if !(get_node_or_null(str(peer_id))):
				SpawnPlayer(peer_id, Vector2(0,0))

func _on_player_left(peer_id, _presence):

	if peer_id:
		RemovePlayer(peer_id)

func SpawnPlayer(player_id: int, spawn_position: Vector2):
	var new_player = player.instantiate()
	new_player.name = str(player_id)
	new_player.position = spawn_position
	add_child(new_player)

func RemovePlayer(player_id: int):
	var player_node:RigidBody2D = get_node(str(player_id))
	remove_child(player_node)

Some webrtc connection codes, not the full script, only essential parts:

func RTCPeerConnected(new_peer_id):

	var players : Dictionary = currentLobby.players
	var player: Player

	for key in players:
		var _player: Player = players[key]
		if _player.peer_id == new_peer_id:
			player = _player

	if player:
		currentLobby.peer_ids[new_peer_id] = player.session_id
		var peer_session_id = currentLobby.peer_ids[new_peer_id]
		if peer_session_id:
			NetworkTime.start()
			player_joined.emit(new_peer_id, null) # Remember to sync this with presences inside: currentLobby.presences

func RTCPeerDisconnected(peer_id):
	var peer_session_id = OnlineManager.currentLobby.peer_ids[peer_id]
	if peer_session_id:
		OnlineManager.currentLobby.peer_ids.erase(peer_id)
		player_left.emit(peer_id, null) # Remember to sync this with presences inside: currentLobby.presences

# WebRTC Connection with other peers
func connectPeer(player: Player):

	# CAUTION also check for session id and user id to ensure user cant run multiple instances of the game and join a game he's already in.
	if WebRTCPeer and currentLobby and (player.peer_id != self.id) and !(WebRTCPeer.has_peer(player.peer_id)):
		var RTCPeerConnection : WebRTCPeerConnection = WebRTCPeerConnection.new()

		RTCPeerConnection.initialize({
			"iceServers" : [{ "urls": ["stun:stun.l.google.com:19302"] }]
		})

		RTCPeerConnection.session_description_created.connect(self.offerCreated.bind(player.peer_id))
		RTCPeerConnection.ice_candidate_created.connect(self.iceCandidateCreated.bind(player.peer_id))

		WebRTCPeer.add_peer(RTCPeerConnection, player.peer_id)

		if player.peer_id < self.id:

			await get_tree().create_timer(.2).timeout # Theres a delay to create the offer so everything is setup on both sides.
			RTCPeerConnection.create_offer()

func offerCreated(type, data, peer_id):
	if !WebRTCPeer.has_peer(peer_id):
		return

	WebRTCPeer.get_peer(peer_id).connection.set_local_description(type, data)

	if type == "offer":
		sendOffer(peer_id, data)
	else:
		sendAnswer(peer_id, data)
	pass

func sendOffer(peer_id, data):
	if currentLobby:
		var json = JSON.stringify({"org_peer_id": self.id, "peer_id": peer_id, "offer_data": data})
		await NakamaConnection.socket.send_match_state_async(currentLobby.match_id, Message.offer,json)

	pass

func sendAnswer(peer_id, data):
	if currentLobby:
		var json = JSON.stringify({"org_peer_id": self.id, "peer_id": peer_id, "offer_data": data})

		await NakamaConnection.socket.send_match_state_async(currentLobby.match_id, Message.answer,json)

	pass

func iceCandidateCreated(midName, indexName, sdpName, peer_id):
	if currentLobby:
		var json = JSON.stringify({"org_peer_id": self.id, "peer_id": peer_id,
		"mid": midName, "index": indexName, "sdp": sdpName})

		await NakamaConnection.socket.send_match_state_async(currentLobby.match_id, Message.candidate,json)
	pass

Thank you for the detailed post! Also nice to see some Nakama in there, I plan to try that too some day :slightly_smiling_face:

So what is currently happening is that all the clients send their inputs to the server, and the server can update everyone's state based on that input. The clients can also update their own state, because they know their own input.
The reason the clients don't sync is that RollbackSynchronizer has no properties it can sync. That's what the invalid property path  errors mean - those properties will be ignored. I see that global_transform didn't work in #199. Could you try global_position or just position? If those don't work, then it's probably something specific to rigid bodies and will need some research on what's special about how Godot handles those :slightly_smiling_face:

Thanks for replying again.
I tested your suggestions as you can see in the vids I linked, but both behaved the same way as using global_transform , since you can't manually edit a RigidBody2D position like that, you HAVE to use the .origin property in order to it to work.
I don't think It's global_transform.origin  fault, because as you can see in the first first video I've sent in this topic, some clients in fact syncs ( which can mean that it's not global_transform.origin fault, I can be wrong tho ) , but some others not.
First video of this topic:
As you can see, some clients are being synced, which is good, but some others aren't
simplescreenrecorder-2024-02-05_22.02.13.webm
Video trying your solution such as global_position and position
simplescreenrecorder-2024-02-09_14.56.10.webm
simplescreenrecorder-2024-02-09_14.53.30.webm

I don't think It's global_transform.origin fault

RollbackSynchronizer definitely can't use :global_transform.origin as a property path, and thus can't sync that value as I have explained above.

You can't manually edit a RigidBody2D position like that, you HAVE to use the .origin property in order to it to work

I have suspected the first part, but wasn't aware of having to use .origin. Would you be ok with sharing some version of your project so I can take a look and experiment a bit on my end? Alternatively, as a workaround, I think you could try creating a dummy variable like my_pos, copying the position into that variable in the rollback tick, and setting global_transform.origin to my_pos in _physics_process or wherever it's appropriate.
The idea is to have a dummy variable that can be used to sync the position, and then apply that position in a way that is appropriate for RigidBody2D.

In a wider context, I think it could be worth to sync not just the position, but angular- and linear velocity. Netfox can certainly sync these, but some wrapper code could be needed to interact with the physics system.

Where can I get in touch to send you my project? I'll send to you so you can analyze it and maybe improve netfox code somehow within my use case.
I'll try your dummy variable solution later when I can and reply to you if it worked or not, thank you so much for helping, I really appreciate! :)
My contacts:
Discord: @sueroo
Telegram: @Suerow

@elementbound
Hello, again!
I tried doing your solution with multiple approachs, but most of them didn't worked or made the character laggy, that's why _physics_process enters in a race condition with _rollback_tick, so, somehow, they will be snapping both variables to the initial position. Let's say that if the player starts in Vector2(10,10) and starts to trying move he will stay on Vector2(10,10) forever.
I tried setting the character position to the player_position var both in _physics_process and _integrate_forces ( which is another way to change a RigidBody2D position ) , but I still get the same error...
_integrate_forces version:
func _integrate_forces(state):
	if reset_state:
		state.transform = Transform2D(0.0, player_position)
		reset_state = false

func _physics_process(delta):
		# Apply movement forces based on input
		move(delta)
		reset_state = true

func _rollback_tick(delta, _tick, _is_fresh):
		# Update the player's position from the synchronized value
		player_position = global_transform.origin

physics_process version:
func _physics_process(delta):
		# Apply movement forces based on input
		move(delta)
		global_transform.origin = player_position

func _rollback_tick(delta, _tick, _is_fresh):
		# Update the player's position from the synchronized value
		player_position = global_transform.origin

If you want any further details or some debugging info say to me, thanks one more time for guiding me ;) .
Sources:
How to set position of Rigidbody2D

This is starting to look like an issue with syncing physics objects. I'll add you on discord.
For anyone else reading, I'll update this thread.

Okay, I'll be waiting for the contact.
Discord: @sueroo

tl;dr: Closing, physics-based multiplayer is really not possible without manual physics stepping support in Godot.

A good approach for physics-based interactions over the network would be the same thing netfox currently does for rollback - inputs are sent to the server and simulated locally, then the server responds with the true state. Due to latency, the server will receive older inputs, so it will roll back its state to the earliest input, and re-run the simulation based on known inputs. It broadcasts updates along the way.
Clients do the same, they receive the true state from the server, but for older ticks, so the rest are simulated locally and adjusted as updates arrive.
For both client and server, we need to resimulate ticks, which needs manual physics stepping ( i.e. calling some method to ask the physics engine to simulate a single tick ). This is currently not supported by Godot. Ok, then why not just simulate the local player as usual, send the inputs to the server, then adjust based on server response?
We can update the state, but it will not be picked up by the physics server and we can't do a proper resimulation from there, due to the missing manual stepping support. So the best the server can do is to treat all incoming inputs as current, even if they were sent a few ticks ago. Which would lead to constant inconsistencies, having the client jitter around as it readjusts based on server response.
And even with manual stepping, there'd be the challenge of physics interaction, e.g. what happens when a client thinks a collision happened and simulates it, but then the server says it didn't happen.

So what can we do? Although not the most responsive approach, but a fully server-controlled solution could work. Players only send their inputs ( and don't simulate any movement ), and wait for the server to respond. The server will treat every input as the most recent one, so no timestamping is needed.
The clients receive the state, but for display, they use a fixed delay ( e.g. 50ms ). This introduces a fixed component of latency, since the game will display the state as it was 50ms ago, but that also means that the network has an extra 50ms to correct course if a packet gets lost or arrives late. Note that this latency will also make the controls feel less responsive.

Alternatively, depending on the game, the necessary subset of physics can be re-implemented, since custom code can be written to be compatible with rollback. Note that collisiion detection would also have to be done by custom code, since the rollbacks are not picked up by Godot's physics server.

PhysicsServer3D.body_set_state might work for forced transform updates for physics objects.

netfox doesn't have explicit support for the above, but the custom tick loop and TickInterpolator can be useful. History support could be added on to StateSynchronizer to support display offsets similar to RollbackSynchronizer.


Add GCP

Allow user to save to GCP (GCS).

@fahadsiddiqui this will be beyond the scope of this package.


Create a page with all properties of spring cloud

it would be great help if all the properties that are used in spring cloud project are listed at one location like done for spring boot
http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

The data are available (http://docs.spring.io/spring-boot/docs/current/reference/html/configuration-metadata.html). If anyone wants to autogenerate a docs appendix that would be awesome.

@dsyer there is an existing tools for generating such documentation from configuration-metadata?

The existing tools generate JSON (which is in the jar files). All we need is an extra step to turn it into docs.

but should we extends existing tool (suppose to be spring-boot-configuration-processor) or create external tool to generate documentation?

I would have thought it makes sense to post process the output of the existing tool. I believe @snicoll had something he was using.

I do and I could contribute a PR if you like. There are two versions of that generator for now. Once that run as a Groovy script and can be integrated in the doc generation. I have also a standalone boot app that can generate the appendix. I also use that project to generate the diffs on the wiki

Yes, please.

@snicoll @dsyer any news about this topic ?

@dsyer Not all properties are listed there though.
For example, any ribbon/niws properties with the client name in the path, or properties read only via archaius.

Sure, we can only list the @ConfigurationProperties automatically. The native Archaius ones remain buried in Netflix OSS (and documented in their wikis).


Fix the Topic presenter

…rum view works again
Signed-off-by: Eric<EMAIL_ADDRESS>This fixes the Topic presenter so we can show the actual forums in a category

Thanks, I knew I'd noticed something relating to model naming.

On a side note, we should probably follow some naming conventions and actually name presenters as XPresenter, such as TopicPresenter, similar to TopicCOntroller, etc. @mybb/developers


Enter Title Here rust-ipfs

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

...perhaps you hit the submit button too early


group_send error

Getting Value Error
ValueError: The future belongs to a different loop than the one specified as the loop argument
views.py
async def test_wsgroup(request):
layer = get_channel_layer()
await layer.group_send("prq_formset", {"type": "plan.received", "msg": "test_wsgroup"})
print("channel_layer_groupsend")
return render(request, 'drishti/test_wsgroup.html', {'channel_layer': 'error'})
consumer.py
async def plan_received(self, event):
print(event)

Hi daniel,
sorry i didn't explain properly
group_send is not working outside of consumer
Thanks in advance
Harish Ahuja

I'm seeing the same issue on linux (specifically Amazon Linux 2), also when installing the package via git.
For me it seems to happen only when I call channel_layer.send() the second time inside of the same thread. Here's the full stacktrace:
[2022-08-01 22:03:20,169: ERROR/ForkPoolWorker-1] Task annotations.views.library.cluster_articles_task[f34096c1-20c4-4eeb-bec5-dad69066d6dd] raised unexpected: ValueError('The future belongs to a different loop than the one specified as the loop argument')
Traceback (most recent call last):
  File "/home/ec2-user/lindylearn-backend/service/env/lib/python3.9/site-packages/celery/app/trace.py", line 451, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/home/ec2-user/lindylearn-backend/service/env/lib/python3.9/site-packages/celery/app/trace.py", line 734, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/ec2-user/lindylearn-backend/service/annotations/views/library.py", line 125, in cluster_articles_task
    notify_clustering_progress(progress_channel, f"Updating library...", 0.95)
  File "/home/ec2-user/lindylearn-backend/service/annotations/common/progress.py", line 12, in notify_clustering_progress
    asyncio.run(
  File "/home/ec2-user/.pyenv/versions/3.9.6/lib/python3.9/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/home/ec2-user/.pyenv/versions/3.9.6/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/home/ec2-user/lindylearn-backend/service/env/lib/python3.9/site-packages/channels_postgres/core.py", line 114, in send
    await self.django_db.send_to_channel(
  File "/home/ec2-user/lindylearn-backend/service/env/lib/python3.9/site-packages/channels_postgres/db.py", line 49, in send_to_channel
    await cur.execute(insert_message_sql)
  File "/home/ec2-user/lindylearn-backend/service/env/lib/python3.9/site-packages/aiopg/connection.py", line 426, in execute
    await self._conn._poll(waiter, timeout)
  File "/home/ec2-user/lindylearn-backend/service/env/lib/python3.9/site-packages/aiopg/connection.py", line 881, in _poll
    await asyncio.wait_for(self._waiter, timeout)
  File "/home/ec2-user/.pyenv/versions/3.9.6/lib/python3.9/asyncio/tasks.py", line 462, in wait_for
    fut = ensure_future(fut, loop=loop)
  File "/home/ec2-user/.pyenv/versions/3.9.6/lib/python3.9/asyncio/tasks.py", line 673, in ensure_future
    raise ValueError('The future belongs to a different loop than '
ValueError: The future belongs to a different loop than the one specified as the loop argument

Is there any other debug info that would be useful?

I found a workaround: explicitly execute channel_layer.send() in the current asyncio loop:
channel_layer = get_channel_layer()

loop = asyncio.get_event_loop()
loop.run_until_complete(
    channel_layer.send(channel_name, {
        ...
    })
)

This seems to be caused by aiopg, they do have a note in their documentation to only use get_running_loop(): https://aiopg.readthedocs.io/en/stable/run_loop.html#aiopg-run-loop

Hi @phgn0
I think I got the same problem : https://github.com/danidee10/channels_postgres/issues/17
Can you please describe a bit more your workaround? Is is outside channels-postgres?

I send events to the channels-postgres layer from a Celery worker with multiple threads that otherwise doesn't use asyncio.
I'm not really sure how the event loops work, but this docs page suggests to use the "running" event loop instead of the "default" one: https://aiopg.readthedocs.io/en/stable/run_loop.html#aiopg-run-loop

Thanks for all the comments.
I think I have enough information to reproduce and fix this once and for all.
I will give it a shot this weekend

I was able to reproduce it and it's now addressed in this PR
https://github.com/danidee10/channels_postgres/pull/18
I also added a short explanation of why it was happening.

Sadly, I'm trying this Channels layer for the first time (replacing my working, typical Redis based layer), using #18, but I stumble upon this exact error message, despite the PR. 🙁
File "/usr/local/lib/python3.9/site-packages/django/dispatch/dispatcher.py", line 181, in <listcomp>
  (receiver, receiver(signal=self, sender=sender, **named))
File "/home/project/push/apps.py", line 25, in post_save_or_delete_receiver
  notify_users(tenant.schema_name, instance.id, instance.user.username)
File "/home/project/push/apps.py", line 36, in notify_users
  async_to_sync(channel_layer.group_send)(
File "/usr/local/lib/python3.9/site-packages/asgiref/sync.py", line 218, in __call__
  return call_result.result()
File "/usr/local/lib/python3.9/concurrent/futures/_base.py", line 439, in result
  return self.__get_result()
File "/usr/local/lib/python3.9/concurrent/futures/_base.py", line 391, in __get_result
  raise self._exception
File "/usr/local/lib/python3.9/site-packages/asgiref/sync.py", line 284, in main_wrap
  result = await self.awaitable(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/channels_postgres/core.py", line 251, in group_send
  await self.django_db.send_to_channel(
File "/usr/local/lib/python3.9/site-packages/channels_postgres/db.py", line 36, in send_to_channel
  channels = await self._retrieve_group_channels(cur, group_key)
File "/usr/local/lib/python3.9/site-packages/channels_postgres/db.py", line 24, in _retrieve_group_channels
  await cur.execute(retrieve_channels_sql, (group_key,))
File "/usr/local/lib/python3.9/site-packages/aiopg/connection.py", line 426, in execute
  await self._conn._poll(waiter, timeout)
File "/usr/local/lib/python3.9/site-packages/aiopg/connection.py", line 881, in _poll
  await asyncio.wait_for(self._waiter, timeout)
File "/usr/local/lib/python3.9/asyncio/tasks.py", line 460, in wait_for
  fut = ensure_future(fut, loop=loop)
File "/usr/local/lib/python3.9/asyncio/tasks.py", line 671, in ensure_future

With notify_user() being called from a Django post_save signal:

def notify_users(tenant_schema_name: str, sync_cursor_id: int, username: str):
    channel_layer = get_channel_layer()
    async_to_sync(channel_layer.group_send)(
        f'push_{tenant_schema_name}', # group channel
        {
            'type': 'push.cursor',
            'syncCursorId': sync_cursor_id,
            'username': username
        }
    )

@dperetti I couldn't reproduce your error by using async_to_sync
also, I think you're not running the version in the PR.
Your traceback says:
File "/usr/local/lib/python3.9/site-packages/channels_postgres/core.py", line 251, in group_send
  await self.django_db.send_to_channel(

but that particular line is no longer 251 it's now 255. Please again that you're using the right branch.

 I copied the the "Code" url Github was giving to me without thinking, which was obviously the url of the master branch (despite being copied from the page of the 0.0.5 branch, though).
Sorry I wasted your time.
The good news is: I can confirm your change fixed that issue I was having in the master branch!
Keep up the good work, a postgres / pg_notify based Channels layer is something I had been thinking about for months, I'm so glad I found your library!

I'm glad it's working :)
I'm waiting for @quteharry19 and @khamaileon to confirm that it's working for them before I create a new release on PyPI

Hi @danidee10, I would like to test but in time I switched to channel version 4 and I have a version conflict. Can you allow the version 4 in setup.py please?

@khamaileon done!

Having this issue too. How do I clone the PR, can't figure it out. Thanks in advance!

this is working like a charm now and many thanks to @danidee10

Working for me too, well done @danidee10 Thank you!


Check whether test framework is installed

so that we can give a good error message if it is not

@jitseniesen since the plan for 4.0 is to have a more language agnostic Spyder, do you think it is worth making this a generic unit test widget? plus the one with Python support?

@jitseniesen since the plan for 4.0 is to have a more language agnostic Spyder, do you think it is worth making this a generic unit test widget?

Yes, at least at first thought. We'll have to see how it works out.

Need also to check for other dependencies, e.g. lxml

Is the check like a safeguard in case someone uninstalled something by accident? cause the plugin installation should define the dependencies, no?

Good point. I haven't really thought about installation because I have never distributed Python modules. Regarding lxml, I guess it is indeed a safeguard. But there are also the test frameworks themselves (py.test, nose, unittest, ...). I don't want the user to have to install all the frameworks, so the plugin should check which ones are installed and prevent the user from running one that is not installed.

Hmmm true, I can help on the packaging side ;-).
unittest comes with python, and nose is an extension to unitests, so I dont think it is a bad idea to install pytest and nose by default. I think it makes sense


Storage spotbugs fix and exclude all auto generated pkg.

Storage spotbugs fix. #3021
For auto generated codes, we excludes the entire packages. And documents the bugs and checkstyle problem to issue #3506

Can one of the admins verify this patch?


onCapture: (data) { }

[x] I have read the Get Started - Installation section
[x] I have read and done the Get Started - Setup Android section
[x] I have read and done the Get Started - Setup iOS section
[x] I have already searched for the same problem

Environment

Technology
Version

Flutter version
2.2.3 stable

Plugin version
scan: ^1.5.0

Android version
11

iOS version

Xcode version

Device information:  Xiaomi Mi Note 10 Lite
Description
Hi, the scan works fine.
I added in the source :
onCapture: (data) {
setState(() async {
_codeCB = data;      // get barecode
await getDescArt(_codeCB);      // Fetch MysqL data (description and qty in stock) for barecode
if (_artDesc == '£NULL£')
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
//title: Text('ok'),
content: Text('Barcode invalid !),
actions: [
ElevatedButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("OK"))
],
);
});
else {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
//title: Text('ok'),
content: Text(_artDesc + "-" + widget.userID),
actions: [
ElevatedButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("OK"))
],
);
});
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) =>
new SortieArticle(
nomArticle: _artDesc,
idArticle: _idArt,
qteStock: _qteStock,
qteOut: _qteOut,
userScan: widget.userID,
)));
}
}
It seems that after this line :  _codeCB = data;      // get barecode
This call await getDescArt(_codeCB); never reachs...
If I comment this line, I can show the dialog
Do you know why ?
Thank for your answer

setState is not support async function

该邮件从移动设备发送
--------------原始邮件--------------
发件人："JP3871 @.>;
发送时间：2021年11月21日(星期天) 晚上11:25
收件人："flutter-package/flutter_scan" @.>;
抄送："Subscribed @.***>;
主题：[flutter-package/flutter_scan] onCapture: (data) { } (Issue #27)
I have read the Get Started - Installation section
I have read and done the Get Started - Setup Android section
I have read and done the Get Started - Setup iOS section
I have already searched for the same problem
Environment
Technology Version
Flutter version 2.2.3 stable
Plugin version scan: ^1.5.0
Android version 11
iOS version
Xcode version
Device information:  Xiaomi Mi Note 10 Lite
Description
Hi, the scan works fine.
I added in the source :
onCapture: (data) {
setState(() async {
_codeCB = data;      // get barecode
await getDescArt(_codeCB);      // Fetch MysqL data (description and qty in stock) for barecode
if (_artDesc == '£NULL£')
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
//title: Text('ok'),
content: Text('Barcode invalid !),
actions: [
ElevatedButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("OK"))
],
);
});
else {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
//title: Text('ok'),
content: Text(_artDesc + "-" + widget.userID),
actions: [
ElevatedButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("OK"))
],
);
});
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) =>
new SortieArticle(
nomArticle: _artDesc,
idArticle: _idArt,
qteStock: _qteStock,
qteOut: _qteOut,
userScan: widget.userID,
)));
}
}
It seems that after this line :  _codeCB = data;      // get barecode
This call await getDescArt(_codeCB); never reachs...
If I comment this line, I can show the dialog
Do you know why ?
Thank for your answer
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

Hi,
Even I call MaterialPageRoute, async doesn't want to launch correctly...
Do you know how to call async (fetchData from MySQL) before build ?
Thanks
                  onCapture: (data) {
                    Navigator.of(context).push(MaterialPageRoute(
                        builder: (BuildContext context) =>
                            new SortieArticle(
                              cbArticle: data,
                              userScan: widget.userID,
                            )));
                  }))

class SortieArticle extends StatefulWidget {
// parametre en entree
final String cbArticle;
final String userScan;
const SortieArticle(
{Key? key, required this.cbArticle, required this.userScan})
: super(key: key);
@override
_MySortieArticleState createState() => _MySortieArticleState();
}
class _MySortieArticleState extends State {
Widget build(BuildContext context) {
var test = FutureBuilder(
future: getData(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
return CircularProgressIndicator();
else if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError)
return Text('Ko');
else if (snapshot.hasData) {
return Column(children: [
Text('\n\n'),
Container(
height: 65.0,
width: double.infinity,
color: Colors.blue,
alignment: Alignment.bottomRight,
child: Center(
child: Text(descArticle + "--" + widget.cbArticle,
softWrap: true,
textAlign: TextAlign.center,
style: TextStyle(color: Colors.black, fontSize: 25)),
)),
Text('\n'),
Container(
height: 50.0,
width: double.infinity,
...
return MaterialApp(
    debugShowCheckedModeBanner: false,
    home: Scaffold(
        appBar: AppBar(
          title: const Text('Becker Racine Sortie Stock'),
        ),
        body: test));

}


update test formatting, response to #414

I changed and undid a few in grade-school, seeing what difference it made, I think I ctrl-z'd a bit too much there! Anyway, I've fixed it up and changed the allergies_test as well. Even though you say it can't hurt, it's not necessary, so probably best to leave as is, plus I learnt how to remove a commit! :smiley:

Thanks!


python312Packages.sanic-testing: 23.12.0 -> 24.6.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python312Packages.sanic-testing is: Core testing clients for the Sanic web framework
meta.homepage for python312Packages.sanic-testing is: https://github.com/sanic-org/sanic-testing
meta.changelog for python312Packages.sanic-testing is: https://github.com/sanic-org/sanic-testing/releases/tag/v24.6.0
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 24.6.0 with grep in /nix/store/di0zdsr41cz3bn4brs83mrm85p1v0rh1-python3.12-sanic-testing-24.6.0
found 24.6.0 in filename of file in /nix/store/di0zdsr41cz3bn4brs83mrm85p1v0rh1-python3.12-sanic-testing-24.6.0

Rebuild report (if merged into master) (click to expand)

24 total rebuild path(s)

24 package rebuild(s)

First fifty rebuilds by attrpath

dyndnsc
python311Packages.cloudevents
python311Packages.elastic-apm
python311Packages.entrance
python311Packages.entrance-with-router-features
python311Packages.json-logging
python311Packages.kserve
python311Packages.sanic
python311Packages.sanic-auth
python311Packages.sanic-testing
python311Packages.slack-bolt
python311Packages.strawberry-graphql
python312Packages.cloudevents
python312Packages.elastic-apm
python312Packages.entrance
python312Packages.entrance-with-router-features
python312Packages.json-logging
python312Packages.kserve
python312Packages.sanic
python312Packages.sanic-auth
python312Packages.sanic-testing
python312Packages.slack-bolt
python312Packages.strawberry-graphql

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/di0zdsr41cz3bn4brs83mrm85p1v0rh1-python3.12-sanic-testing-24.6.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python312Packages.sanic-testing https://github.com/r-ryantm/nixpkgs/archive/13f2db2172863572fe9e7a92123691b7688338be.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/13f2db2172863572fe9e7a92123691b7688338be#python312Packages.sanic-testing

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/di0zdsr41cz3bn4brs83mrm85p1v0rh1-python3.12-sanic-testing-24.6.0
ls -la /nix/store/di0zdsr41cz3bn4brs83mrm85p1v0rh1-python3.12-sanic-testing-24.6.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

23 packages failed to build:

python311Packages.cloudevents
python311Packages.cloudevents.dist
python311Packages.elastic-apm
python311Packages.elastic-apm.dist
python311Packages.entrance
python311Packages.entrance-with-router-features
python311Packages.entrance-with-router-features.dist
python311Packages.entrance.dist
python311Packages.json-logging
python311Packages.json-logging.dist
python311Packages.kserve
python311Packages.kserve.dist
python311Packages.sanic
python311Packages.sanic-auth
python311Packages.sanic-auth.dist
python311Packages.sanic-testing
python311Packages.sanic-testing.dist
python311Packages.sanic-testing.testsout
python311Packages.sanic.dist
python311Packages.slack-bolt
python311Packages.slack-bolt.dist
python311Packages.strawberry-graphql
python311Packages.strawberry-graphql.dist

25 packages built:

dyndnsc
dyndnsc.dist
python312Packages.cloudevents
python312Packages.cloudevents.dist
python312Packages.elastic-apm
python312Packages.elastic-apm.dist
python312Packages.entrance
python312Packages.entrance-with-router-features
python312Packages.entrance-with-router-features.dist
python312Packages.entrance.dist
python312Packages.json-logging
python312Packages.json-logging.dist
python312Packages.kserve
python312Packages.kserve.dist
python312Packages.sanic
python312Packages.sanic-auth
python312Packages.sanic-auth.dist
python312Packages.sanic-testing
python312Packages.sanic-testing.dist
python312Packages.sanic-testing.testsout
python312Packages.sanic.dist
python312Packages.slack-bolt
python312Packages.slack-bolt.dist
python312Packages.strawberry-graphql
python312Packages.strawberry-graphql.dist

Maintainer pings
cc @AluisioASG for testing.

Superseded by #335506


Fix exporter output

Codecov Report

Merging #243 (4786f1a) into master (bca58f3) will decrease coverage by 0.96%.
The diff coverage is 5.37%.

@@             Coverage Diff              @@
##             master     #243      +/-   ##
============================================
- Coverage     65.48%   64.52%   -0.97%
- Complexity      643      651       +8
============================================
  Files           113      117       +4
  Lines          2628     2692      +64
  Branches        272      277       +5
============================================
+ Hits           1721     1737      +16
- Misses          797      847      +50
+ Partials        110      108       -2

Impacted Files
Coverage Δ

...rc/main/java/peoplesoft/logic/export/Exporter.java
0.00% <0.00%> (ø)

...va/peoplesoft/ui/controls/PeoplesoftTablePane.java
0.00% <0.00%> (ø)

src/main/java/peoplesoft/ui/regions/JobCard.java
0.00% <0.00%> (ø)

.../main/java/peoplesoft/ui/regions/JobListPanel.java
0.00% <0.00%> (ø)

...rc/main/java/peoplesoft/ui/regions/PersonCard.java
0.00% <0.00%> (ø)

...in/java/peoplesoft/ui/regions/PersonListPanel.java
0.00% <0.00%> (ø)

src/main/java/peoplesoft/ui/util/NoFocusModel.java
0.00% <0.00%> (ø)

...main/java/peoplesoft/ui/util/NoSelectionModel.java
0.00% <0.00%> (ø)

...ain/java/peoplesoft/ui/util/TableNoFocusModel.java
0.00% <0.00%> (ø)

...java/peoplesoft/ui/util/TableNoSelectionModel.java
0.00% <0.00%> (ø)

... and 6 more

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 7f23b05...4786f1a. Read the comment docs.


Introduce new designs for the badges

Currently, this module supports the following designs which are inspired by Shields.io service. Feel free to introduce new designs for the Peerlist README Badges.

Type
Badge

flat  This is the default style.

flat-square

plastic

social

for-the-badge

please assign me to this task

Sure - could you please share badge mocks?

hey i created the new ui for the project

if you think it is a good UI then please assign it to me

hey!
i have created a new ui for the project , have a look

if you think it is a good UI then please assign it to me,  also what should I do, create a new issue or just create pr here?

Hey @omagr
This looks awesome. A few suggestions:

Please add a copy button for markdown syntax. Better to have formatted code styles.
What's your name should be changed to what's your Peerlist username?
Title should be Peerlist Badge Generator
There are spelling mistakes in a few places. We can fix it later.
Can we use some other font? Maybe something aligned with the Peerlist's font?

Please share the updated design after incorporating the above changes.
Thank you.

@omagr We can track this at issue #14

@Web3Ctrl Please take a look at #30


Release plan for v3.0.0

Describe the feature you'd love to see
Excuse me, when will the release version of v3.0.0 be released? Is there a clear plan?
Additional context (optional)
No response

v3.0.0 is released


build: remove ignored packages from changesets

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 98.846%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
163

Relevant Lines:
165

💛  - Coveralls


No validation is done for strings

Description
Any strings can be returned in a resolver of type JSON, although it's not the case for  JSON.parse. eg: {}$, !!!![], a.
The implementation clearly returns the string untouched when it's a string, although JSON.parse throws for pretty much anything except a valid json: {}, [], ...
Is this expected?
Expected behavior
Error for everything that JSON.parse throws for

This is intentional. The string '"{}$"' is valid JSON, and is what's represented by that return value. JSON and JSONObject deal not in JSON strings, but in values that can be serialized as JSON, so literally as objects, &c.


lnav: Fix the '--with-curl' option

All Submissions:

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

Currently the lnav builds when compiled with the '--with-curl' option
fails due to missing linker flags.
This closes tstack/lnav#301

@BrewTestBot test this please

Merged. Thank you for your contribution to Homebrew!


fix(ci): Image of pre-commit changed to Debian

@aexvir Yep, seems nicer.

great, imo this can be merged
can we resolve the draft status? or do you need it for something else?


EDITABLE_MITIGATED_DATA not work

Hello teams,
I have installed 2.8.0 docker version to be able to evaluate it and it seems to me that it is not possible via API to set a closing date of a finding (upd: also in 2.6.2).
P.S. I have inserting EDITABLE_MITIGATED_DATA = True in the local_settings.py file, then in the environment section of uwsgi container of docker-compose.yml
best,
Sal

Hello Valentijn,
in my humble opinion would be fine to have the option to create close finding with custom date (at example invoking /api/v2/findings/ API) to avoid the invokation of another API (in our scenario there are some cases like this) as the one you are implementing that is /api/v2/findings/{id}/close/ API.
best,
Sal

Same use case here - need to import a bulk of findings that have been closed and I have the date there - would be way better to have the "mitigated" field POSTable in the create-findings API method in case the EDITABLE_MITIGATED_DATA was enabled


fix(@vtmn/svelte): lint warnings

Changes description

Fix lint warnings.
Before

After

Checklist

[x] Make sure you are requesting to pull a topic/feature/bugfix branch. Please, don't request directly from your main!
[x] Check commits & PR names matches our requested structure. It must follow the https://www.conventionalcommits.org pattern.
[x] Check your code additions will fail neither code linting checks.
[x] I have reviewed the submitted code.
[x] I have tested on related showcases.
[x] If it includes design changes, please ask for a review with a core team designer.

Does this introduce a breaking change?

No

@thibault-mahe I also merge this because no breaking change. Only lint fixes.


Issue 191: Bump latest version of Drush launcher.

Changes

Updates Drush launcher version from 0.6.0 to 0.7.3.

Release details for launcher https://github.com/drush-ops/drush-launcher/releases.

Fixes #191.

Now that they are using an environment variable for fallback, is this something the image needs to provide?
https://github.com/drush-ops/drush-launcher/commit/768c2ad49de31492afc0328ef6cac1cf0358117f

ping @lpeabody

@lmakarov I built the images locally and verified that the Drush launcher version is reporting the wrong version. drush --version outputs Drush Launcher Version: 0.7.2 rather than Drush Launcher Version: 0.7.3.

Opened https://github.com/drush-ops/drush-launcher/issues/80 on the Drush Launcher issue queue.

Now that they are using an environment variable for fallback, is this something the image needs to provide?

@shelane I don't think we need to support it. The fallback option is for pointing to a complete Drush installation that is available globally. We make no assumptions about which version of Drush should be used with a given project, so no global Drush installations are provided, thus no need for providing the fallback environment variable.


Painfully Slow API Calls?

Please add to this list!

~"the way i get around the slow get_asset_info call is because i dont need EVERY description for assets in an address, i can filter out assets that i already know what they look like (in some directory on pepe.wtf), and i filter the remaining assets by looking for specific description prefixes, using get_issuances with a LIKE filter"~

This is with 800 unique assets.
---

concurrency: 5
base: 'http://localhost:14000'
iterations: 5
rampup: 1

plan:
  - name: get_asset_info
    request:
      url: /api/
      method: POST
      body: '{"jsonrpc":"2.0","id":"0","method":"get_asset_info","params":{"asset":"{{ item.name }}"}}'
    with_items_from_csv:
      file_name: ./issuances-testnet.csv

get_asset_info            Total requests            4000
get_asset_info            Successful requests       4000
get_asset_info            Failed requests           0
get_asset_info            Median time per request   4ms
get_asset_info            Average time per request  5ms
get_asset_info            Sample standard deviation 11ms
get_asset_info            99.0'th percentile        17ms
get_asset_info            99.5'th percentile        33ms
get_asset_info            99.9'th percentile        215ms

Time taken for tests      4.3 seconds
Total requests            4000
Successful requests       4000
Failed requests           0
Requests per second       931.97 [#/sec]
Median time per request   4ms
Average time per request  5ms
Sample standard deviation 11ms
99.0'th percentile        17ms
99.5'th percentile        33ms
99.9'th percentile        215ms

This doesn't exist. What people mean is "I have to filter client-side because the API isn't powerful enough."


The sheet only presents from the last view defined with an activity

General Information

Platform/OS version:
iPad OS 14.7.1

IDE version:
Xcode 12.5.1

Devices:
iPad Pro

Describe the bug
I am creating 2 Buttons in an HStack and attaching ActivityView to both of them. But regardless of which button I press, ActivityView instances show up only on the 2nd button.
If I add more buttons, they show up on the last button created.
Steps to reproduce
Try the following code on iPad (I was using Landscape mode)
@State private var item: ActivityItem?

var body: some View {
        HStack {
            Button {
                item = ActivityItem(
                    items: "Button 1: This will be shared"
                )
            } label: {
                Text("Share 1")
            }
            .activitySheet($item)

            Button {
                item = ActivityItem(
                    items: "Button 2: This will be shared"
                )
            } label: {
                Text("Share 2")
            }
            .activitySheet($item)
        }
}

Expected behavior
ActivityView should point to the Button/View it is attached to.
Screenshots

Additional context
I just want to add that this is amazing piece of work and I love it so far.
Since I am new to SwiftUI, I haven't been able to figure the issue out myself. I also tried to change the way View is displayed, to may be simply take over the full screen, but that doesn't seem to work on iPad. Please let me know if I can help you in any way.

@shaps80 Thanks for clarifying! Sorry for wasting your time.

@shaps80 Thanks for clarifying! Sorry for wasting your time.

@elitecoder never a waste of time to help someone out 👍


Can't use @import from sub-folders

The changes apparently for relative paths are making so that if you have a sub-folder and use an @include it starts in the sub-folder instead of the root for stylesheets.  You can put a ../ infront, but then if that file is in a subfolder the whole thing just colapses on itself.
This is affecting likely a lot of projects, but is also a root cause in breaking compass as well.

This is a feature. In sass all imports are first relative to the current file, then if not found, relative to the load path.

It appears that the issue with sprokets as noted in issue #81 is causing it to not fail back to the load path.


"Updating data" example bugs

Hello! There is some bugs with "updating data example":

when you're dragging chart to the history it often resets view to last values (usually it happens when you stops moving mouse but still holding LMB)
when you're zooming chart it often resets to previous zoom level

I've tried to record it:

Is there some ways to fix it?

Ok I see it.
Here is what is happening. When you push new data points, the chart finds if the last tick is visible, and if so, it adds the new data element into the view. Since you started the pan (click and hold mouse) when the last tick was visible, and dragged it, the code assumes that the last tick is still visible (since the pan is still not complete).
I will fix this part of 0.4

@rrag thanks for fast feedback)

Fixed in next branch, will be release in 0.4 check out the fixes in
http://rrag.github.io/react-stockcharts-next/documentation.html#/updating_data
plunker/gist/block not updated yet

@rrag now it looks much better! thank you)

@rrag Is there a working example of updating data using react-stockcharts?
The one in documentation seems not working. http://rrag.github.io/react-stockcharts/documentation.html#/updating_data

the link works for me on Chrome 59.0.3071.115, is this a browser specific issue?

Thanks for fast response. I can see the chart, but how to activate the updating? Before pressing key 1, should I do something else? Just pressing key 1 seems not triggering the updating.

The chrome version I used is Version 59.0.3071.109 (Official Build) (32-bit)

@rrag, would you mind uploading the UpdatingData example and instructions to use to https://github.com/rrag/react-stockcharts-examples/tree/master/examples. Thanks.

@rrag sorry for the confusion. It indeed works and I have to press 1 and hold to see the update. I am trying to combine "updatingData" with an example " CandleStickChartWithBollingerBandOverlay". Which part of " CandleStickChartWithBollingerBandOverlay.jsx" should I change to accomodate the updating? Thanks.

@rrag  following your example https://github.com/rrag/react-stockcharts/blob/master/docs/lib/charts/CandleStickChartWithUpdatingData.jsx, I am not sure how to update the index.html file to make it work. The logic should be data -> [CandleStickChartWithBollingerBandOverlay.jsx] ->[CandoleStickChartWithUpdatingData.jsx] ->  index.html?
I updated the html as follows and got error message "ERROR: exports is not defined. " I am not sure where I did wrong.

I got "ERRPR: exports is not defined." not sure if

it is a little more work to create a plunker for the updating data with the existing code, so I did not do it. The source
the examples are more complicated than is necessary because I had to simulate new data coming in from the existing data []. in a real project though you would typically receive new data elements from websocket/ajax, and you could update the data in the props of ChartCanvas
Not sure if that helps, do you have a project with babel/webpack and all the ceremony set up?

Thanks for the reply. I am currently using react-stockcharts package directly. I guess I need to embed the data update in the .jsx itself. Am I right?
Can you upload the code for http://rrag.github.io/react-stockcharts-next/documentation.html#/updating_data to git? I can adapt mine to your code to make it work.

@rrag I tried to add updatingDataWrapper.jsx to CandleStickChartWithBollingBandOverlay.jsx in order to update data in ChartCanvas with comments of changes. However, the chart won't be able to render in browser. Let me know if I miss anything.
`"use strict";
var { ChartCanvas, Chart, series, scale, coordinates, tooltip, axes, indicator, helper } = ReStock;
var { CandlestickSeries, BarSeries, LineSeries, AreaSeries, BollingerSeries } = series;
var { discontinuousTimeScaleProvider } = scale;
var { EdgeIndicator } = coordinates;
var { CrossHairCursor, MouseCoordinateX, MouseCoordinateY, CurrentCoordinate } = coordinates;
var { OHLCTooltip, MovingAverageTooltip, BollingerBandTooltip } = tooltip;
var { XAxis, YAxis } = axes;
var { ema, sma, bollingerBand } = indicator;
var { fitWidth, TypeChooser } = helper;
const LENGTH = 130; //<--Copy over from updatingDataWrapper.jsx
class CandleStickChartWithBollingerBandOverlay extends React.Component {
//<--Copy over from updatingDataWrapper.jsx -- Start
constructor(props) {
super(props);
this.state = {
length: LENGTH,
data: this.props.data.slice(0, LENGTH),
}
this.speed = 1000;
this.onKeyPress = this.onKeyPress.bind(this);
}
componentDidMount() {
document.addEventListener("keyup", this.onKeyPress);
}
componentWillUnmount() {
if (this.interval) clearInterval(this.interval);
document.removeEventListener("keyup", this.onKeyPress);
}
onKeyPress(e) {
var keyCode = e.which;
console.log(keyCode);
switch (keyCode) {
case 50: {
// 2 (50) - Start alter data
this.func = () => {
if (this.state.length < this.props.data.length) {
this.setState({
length: this.state.length + 1,
data: this.props.data.slice(0, this.state.length + 1),
})
}
};
break;
}
case 80:
// P (80)
case 49: {
// 1 (49) - Start Push data
this.func = () => {
if (this.state.length < this.props.data.length) {
this.setState({
length: this.state.length + 1,
data: this.props.data.slice(START, START+this.state.length + 1),
})
}
};
break;
}
case 27: {
// ESC (27) - Clear interval
this.func = null;
if (this.interval) clearInterval(this.interval);
break;
}
case 107: {
// + (107) - increase the this.speed
this.speed = Math.max(this.speed / 2, 50);
break;
}
case 109:
case 189: {
// - (189, 109) - reduce the this.speed
var delta = Math.min(this.speed, 1000);
this.speed = this.speed + delta;
break;
}
}
if (this.func) {
if (this.interval) clearInterval(this.interval);
console.log("this.speed  = ", this.speed);
this.interval = setInterval(this.func, this.speed);
}
}
//<--Copy over from updatingDataWrapper.jsx -- Complete
render() {
var { dataSlice } = this.state;	// <-- Define dataSlice
var { type, width, ratio } = this.props; // <-- Take out data
	var ema20 = ema()
		.windowSize(20) // optional will default to 10
		.sourcePath("close") // optional will default to close as the source
		.skipUndefined(true) // defaults to true
		.merge((d, c) => {d.ema20 = c}) // Required, if not provided, log a error
		.accessor(d => d.ema20) // Required, if not provided, log an error during calculation
		.stroke("blue") // Optional

	var sma20 = sma()
		.windowSize(20)
		.sourcePath("close")
		.merge((d, c) => {d.sma20 = c})
		.accessor(d => d.sma20)

	var ema50 = ema()
		.windowSize(50)
		.sourcePath("close")
		.merge((d, c) => {d.ema50 = c})
		.accessor(d => d.ema50)

	var smaVolume50 = sma()
		.windowSize(50)
		.sourcePath("volume")
		.merge((d, c) => {d.smaVolume50 = c})
		.accessor(d => d.smaVolume50)
		.stroke("#4682B4")
		.fill("#4682B4");

	var bb = bollingerBand()
		.merge((d, c) => {d.bb = c})
		.accessor(d => d.bb);
	return (
		<ChartCanvas ratio={ratio} width={width} height={400}
				margin={{ left: 70, right: 70, top: 10, bottom: 30 }} type={type}
				seriesName="usdt_btc"
				data={dataSlice} calculator={[sma20, ema20, ema50, smaVolume50, bb]} // <-- use dataSlice
				xAccessor={d => d.date} xScaleProvider={discontinuousTimeScaleProvider}
				//xExtents={[new Date(2016, 5, 1), new Date(2016, 10, 1)]}  //<-- comment out
				>
			<Chart id={1}
					yExtents={[d => [d.high, d.low], sma20.accessor(), ema20.accessor(), ema50.accessor(), bb.accessor()]}
					padding={{ top: 10, bottom: 20 }}
					onContextMenu={(...rest) => { console.log("chart - context menu", rest); }}
					>
				<XAxis axisAt="bottom" orient="bottom"/>
				<YAxis axisAt="right" orient="right" ticks={5}
					onDoubleClick={(...rest) => { console.log("yAxis - double click", rest); }}
					onContextMenu={(...rest) => { console.log("yAxis - context menu", rest); }}
					/>

				<MouseCoordinateX
					at="bottom"
					orient="bottom"
					displayFormat={d3.timeFormat("%Y-%m-%d")} />
				<MouseCoordinateY
					at="right"
					orient="right"
					displayFormat={d3.format(".2f")} />

				<CandlestickSeries />
				<LineSeries yAccessor={sma20.accessor()} stroke={sma20.stroke()}/>
				<LineSeries yAccessor={ema20.accessor()} stroke={ema20.stroke()}/>
				<LineSeries yAccessor={ema50.accessor()} stroke={ema50.stroke()}/>
				<BollingerSeries calculator={bb} />
				<CurrentCoordinate yAccessor={sma20.accessor()} fill={sma20.stroke()} />
				<CurrentCoordinate yAccessor={ema20.accessor()} fill={ema20.stroke()} />
				<CurrentCoordinate yAccessor={ema50.accessor()} fill={ema50.stroke()} />

				<OHLCTooltip origin={[-40, 0]}/>
				<MovingAverageTooltip onClick={(e) => console.log(e)} origin={[-38, 15]}
					calculators={[sma20, ema20, ema50]}/>
				<BollingerBandTooltip origin={[-38, 60]} calculator={bb} />

			</Chart>
			<Chart id={2}
					yExtents={[d => d.volume, smaVolume50.accessor()]}
					height={150} origin={(w, h) => [0, h - 150]}>
				<YAxis axisAt="left" orient="left" ticks={5} tickFormat={d3.format(".0s")}/>

				<MouseCoordinateY
					at="left"
					orient="left"
					displayFormat={d3.format(".4s")} />

				<BarSeries yAccessor={d => d.volume} fill={d => d.close > d.open ? "#6BA583" : "#FF0000" } />
				<AreaSeries yAccessor={smaVolume50.accessor()} stroke={smaVolume50.stroke()} fill={smaVolume50.fill()}/>
				<CurrentCoordinate yAccessor={smaVolume50.accessor()} fill={smaVolume50.stroke()} />
				<CurrentCoordinate yAccessor={d => d.volume} fill="#9B0A47" />
			</Chart>
			<CrossHairCursor />
		</ChartCanvas>
	);
}

};
CandleStickChartWithBollingerBandOverlay.propTypes = {
data: React.PropTypes.array.isRequired,
width: React.PropTypes.number.isRequired,
ratio: React.PropTypes.number.isRequired,
type: React.PropTypes.oneOf(["svg", "hybrid"]).isRequired,
};
CandleStickChartWithBollingerBandOverlay.defaultProps = {
type: "svg",
};
CandleStickChartWithBollingerBandOverlay = fitWidth(CandleStickChartWithBollingerBandOverlay);
var parseDate = d3.timeParse("%Y-%m-%d %H:%M:%S");
d3["tsv"]("./usdt_btc.tsv", (err, data) => {  // //rrag.github.io/react-stockcharts/data/MSFT.tsv
/* change MSFT.tsv to MSFT_full.tsv above to see how this works with lots of data points /
data.forEach((d, i) => {
d.date = new Date(d3.timeParse("%Y-%m-%d")(d.date).getTime());
d.open = +d.open;
d.high = +d.high;
d.low = +d.low;
d.close = +d.close;
d.volume = +d.volume;
// console.log(d);
});
/ change the type from hybrid to svg to compare the performance between svg and canvas */
ReactDOM.render({type => }, document.getElementById("chart"));
});`

I found an older example, does this code work? http://embed.plnkr.co/JMm2lgrzBgWnh3hkoTAR/

Is it possible to use http://rrag.github.io/react-stockcharts-next/documentation.html#/updating_data with redux?

@no0dly I have not tried, but dont see a problem. Why do you think there would be a problem?

@no0dly I'm actually updating data using redux. Any issue ur facing and need help with?

@rrag there is no issue, can figure out how does it work. @piotryordanov can you show your component?

@no0dly I have redux and it's store created like in any app, and that the chartContainers is connected to it using connect. From that point on, the rest is just like with a standard redux setup.
My source code is pretty large to be shared. Anything in particular u want to see?


Implement auto-deploy to package manager

Issue Summary
When all tests on the master branch pass in Travis CI, we would like to auto-deploy the release to the package manager.
Before writing any code, we suggest you review our CONTRIBUTING.md file and propose your solution for discussion here in the comments. Thank you!
Aceptance Criteria

when Travis CI passes all tests on the master branch we auto-deploy to the package manager
the version is determined by the CHANGELOG.md

@thinkingserious I would really like to look into this, later today.

@thinkingserious I've never really worked with travis, but after reading the docs for a bit my solution would work like the following.

before_deploy: Will run a nodejs script reading CHANGELOG.md that will then call npm version to bump the version.
deploy: Uses the NPM Provider to publish to npm when a push to master happens.

Closing as we're now using internal tooling for this.


Error in console: "Danger: Discarding unexpected node"

Hi,
I am getting an error in console when displaying reactable in my application. Using react 0.12.2 and reactable 0.10.1.
Danger: Discarding unexpected node:
<span data-reactid=".<IP_ADDRESS>.2:$tabContents.$Interface.$table.$thead.0">
...

I've narrowed it down to the filterer and the source code in reactable.jsx:
{this.props.filtering === true ?
                        <Filterer
                            colSpan={this.props.columns.length}
                            onFilter={this.props.onFilter}
                            placeholder={this.props.filterPlaceholder}
                            value={this.props.currentFilter}
                        /> : ''}

The problematic part is returning an empty string there, which creates the unexpected node. In my opinion way cleaner code would look like:
{if (this.props.filtering === true) {
                        return <Filterer
                            colSpan={this.props.columns.length}
                            onFilter={this.props.onFilter}
                            placeholder={this.props.filterPlaceholder}
                            value={this.props.currentFilter}
                        />
}}

Because it does not output an empty element if the filterering is disabled. So it would also stop react from complaining.

I get a similar error when I'm bringing the component in as a conditional under render.
Danger: Discarding unexpected node: <span data-reactid=".<IP_ADDRESS>.<IP_ADDRESS>.0:1.2.0.$thead.0">
When I setState and re-render my view via a flux store, I get the error.  On initial load I have the Table rendered with no error, so it's somewhere in the clean-up perhaps?
I'll try to dig further tmrw but kopancek's solution did not resolve my error nor am I using the filtering prop.

Same thing happened to me, the initial render was fine but I would get Danger: Discarding unexpected node:... when I would attempt to sort the data (not even using a custom sort).
I had a customized table with cells like...

		<SomeComponent object={Object} />

		{ anotherObject.name }

Where the render method of SomeComponent looked a little like...
	render: function(){
		if(typeof(obj.someProperty) === 'undefined'){
			return (
error message
);
		}

		return (

				{ obj.value}

		)
	}

Switching the component to always return a div stopped the error for me.
	render: function(){
		if(typeof(obj.someProperty) === 'undefined'){
			return (
error message
);
		}

		return (

				{ obj.value}

		)
	}

I don't know what I was thinking returning that
 in there.

I think this is a couple errors, all related to the rules the DOM places on nesting specific nodes:

you can't have anything in a
 except a  or a  - this is why the <Filterer> is complaining
You can't have a
 inside another
 - this seems like @andybeesee's error

The latter is all calling code, but the former is definitely a Reactable bug.

+1 Ran into this too.

The same here. I had

error disappeared after I changed p to div

@buduguru Is your
 nested inside another
?

@glittershark no, it is was inside


new-mail-education-icon

Fixes issue on education mailing list icon.
The new icon is a bit simpler: only the middle part, but bigger.

Here is the old icon:

I had trouble recognizing the graduation cap in the drawer :)

@willingc @ellisonbg any comment on that one?

@SylvainCorlay This seems like a reasonable change to merge. I too think it's difficult to see that it's a graduation cap in the mailbox. I would also recommend editing the text for the item to remove the repeated use of Jupyter:
Jupyter in Education Mailing List
A Google Group for general Jupyter discussions of Jupyter's use in education.
cc @ellisonbg

merge?

Thanks @SylvainCorlay.


Does not display classic storage accounts

Storage accounts that were created with the "Classic" option do not appear in the tree

By design for now and it's in release notes/known issues.

No current plans to implement.


Flag merging test.

Coverage remained the same at 98.754% when pulling d8f5878296e5b09bb4fd5e3cd042d65b7feab230 on additional-flags into 8f303b71fa29c5651d21aeadb342b2263cee276b on master.


[BUG] regexp_instr does not validate regex in PostgreSQL

Is this a new bug in dbt-expectations?

[X] I believe this is a new bug in dbt-expectations
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
Any call to the regexp_instr macro will be valid for PostgreSQL. This is due to the generated expression and the handling of nulls by Postgres.
Dissecting the generated expression:
  with grouped_expression as (
    select array_length(
        (
          select regexp_matches(postal_code_5_3, '^\d{5}-\d{3}', '')
        ),
        1
      ) > 0 as expression
    from <db_name>.dbt_expectations_integration_tests.data_text
  ),

  validation_errors as (
    select *
    from grouped_expression
    where not(expression = true)
  )

  select *
  from validation_errors

select regexp_matches('<valid_source>', '<valid_regex>', '<any_flags>') will always return either no results or a text[].
Getting the array_length of that will either be null or >0
Comparing that to 0 will return null or true respectively
Comparing that to true will once again return null or true respectively
Negating that will return null or false which have the same full filter effect in a where clause

Expected Behavior
regexp_instr should fail when regex doesn't match.
Steps To Reproduce
Change any regex in "dbt-expectations/integration_tests/models/schema_tests/schema.yml" with anything else (e.g. replace the '^\d{5}-\d{3}' regex with 'definitely_not_a_valid_postal_code') , the tests will still succeed.
Environment
- OS: Manjaro Linux 22.0.2
- Python: 3.10.9
- dbt: 1.4.5
- dbt-expectations: 0.8.3

Which database adapter are you using with dbt?
Postgres
Suggested fix
Fix with the widest Postgres version compatibility range would probably be to coalesce the array_length
i.e. to replace
array_length((select regexp_matches({{ source_value }}, '{{ regexp }}', '{{ flags }}')), 1)
with
coalesce(array_length((select regexp_matches({{ source_value }}, '{{ regexp }}', '{{ flags }}')), 1), 0)
in "dbt-expectations/macros/regex/regexp_instr.sql"

Closed via #250


A11y_OSPO Production_Home Page_Page Titled: The title "Microsoft Open Source" is programmatically defined twice.

GitHub Tags:
#A11yTCS;#A11yUsable;#Win10;#DesktopWeb;#ChromiumEdge;#A11ySev4;#P2_WCP;#WCP;#P2_OSPOProduction_Web_Sep2021;#P2_OSPOProduction;#OSPO Production
Environment Details:
URL: https://opensource.microsoft.com/
 OS and Browser Details:
Microsoft Windows 10 Enterprise Version 21H1 (OS build 19043.1165)
Microsoft Edge Version 95.0.1000.0 (Official build) dev (64-bit)
 Repro Steps:

Hit the URL:https://opensource.microsoft.com/
Check whether the title "Microsoft Open Source" is programmatically defined twice or not.

 Actual Result:
The title "Microsoft Open Source" is programmatically defined twice.
Expected Result:
The title "Microsoft Open Source" should be programmatically defined once.
 User Impact:
Users with disabilities will not know the purpose of the page if the title is programmatically defined twice.
Attachments for reference:

I will work on this issue.


Is the batch_hard Triplet Loss compatible with Keras?

With reference to the code here, can I use this loss function as plug-and-play, or is there more work required to make this work for different model architectures and tasks?

Hi, since Keras is just TensorFlow (if you're using the TensorFlow backend and "functional Keras"), yes, this code is compatible.
If you have more specific questions, please be more specific and reopen this issue.


Govcy text inputs

This pull request concerns both the alerts and text inputs.

build/css/main.css is up to date 👍

There's something we can work out here about whether these need to be in a form-group wrapper/ Is form group good to use? Better for accessibility maybe or screen readers?

Need code refactoring through new typography styles and the utility classes


Package (git-diff) doesn't remove panel commands after package is disabled.

Prerequisites

[x] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: https://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
git-diff leaves command hooks registered when they should be destroyed.
Steps to Reproduce

Load Atom with the package enabled
Unload package.
Optionally, click on any editor then on open the Command Pallet and type Git Diff.
Re-enable the package.
Repeat steps 2-4.

Expected behavior:
The command hooks should be destroyed and be unavailable in any editor after the package is disabled.

Reproduces how often:
Always happens when the package is disabled and re-enabled.

Versions
Atom    : 1.53.0
Electron: 6.1.12
Chrome  : 76.0.3809.146
Node    : 12.4.0

I tested this and I can confirm the duplicate commands showing up in the Command Palette, following the steps to reproduce.

Atom Nightly 1.56.0-nightly11 (and nightly17 after I did a quick update)
macOS 10.15.7


Improve flag descriptions

When dumping, we want to be able to specify
the kind of record to dump. A record type roughly
corresponds to one table. The detail is that
a record is not simply the rows from a table,
but also the rows from other tables that the table
has foreign key relationships with.
--number looks like a better description for the flag to specify number of rows.
A sample command would look like this:
klepto
--from 'root:root@tcp(localhost:3306)/fromDB'
--to 'root:root@tcp(localhost:3306)/toDB'
--primary-record-type 'user'
--number '10'

👍

:shipit:


Implement MacOS and Windows APIs from hidapi 0.12 release

This PR implements FFI bindings and safe implementations for the following APIs that where added in hidapi release 0.12
MacOS:

hid_darwin_get_location_id()
hid_darwin_set_open_exclusive()
hid_darwin_get_open_exclusive()
hid_darwin_is_device_open_exclusive()

Windows:

hid_winapi_get_container_id()

The hid_darwin_set_open_exclusive() API is also put to use by introducing the macos-shared-device feature flag for MacOS so it is possible to have multiple HidDevice handles that access the same physical device.
A convenience addition is the implementation of Debug for HidDevice, this will only print HidDevice but allows wrapping types like HidResult<HidDevice> into a dbg! macro.

I've added docs.rs specific metadata and documentation hints in the latest commit and also hid the cfg_libusb_only macro which should be internal(?). The result will look like this:

I find that much nicer, although there are now 2 distinct Impl HidDevice blocks in the documentation...

@ruabmbua thanks for the swift review, applied changes and added IMHO better platform specific documentation.

Thanks for the contribution!


arcyd fetch: continue on error

When fetching a lot of repositories to catch an Arcyd instance up, if
one of them has moved away then the whole process used to fail.
This is not necessarily fatal, as the other repositories could still be
processed and they are independent from Arcyd's point of view.
Allow Arcyd to continue in this situation and report the failure at the
time and at the end.
Test Plan:
$ ./precommit.sh

Force a fetch to fail
$ ./testbed/arcyd/test_shell.sh
    $ cd ../arcyd2/
    $ arcyd fetch
    .. ok ..
    $ echo $?
    0
    $ rm -rf ../origin2/
    $ arcyd fetch
    .. Some repositories failed to be fetched ..
    $ echo $?
    1

LGTM

Thanks!


New version: Tencent.QQ version <IP_ADDRESS>129

[X] Have you signed the Contributor License Agreement?
[X] Have you checked that there aren't other open pull requests for the same manifest update/change?

[ ] Have you tested your manifest locally with winget install --manifest <path>?
[X] Does your manifest conform to the 1.0 schema?

Microsoft Reviewers: Open in CodeFlow

@wingetbot waivers Add Validation-Domain