feat(tilecatalog): isSelectedByDefault prop that determines whether to force a selection or not

Closes #809
Summary

Added new property that allows tile catalogs to start off unselected

Change List (commits, features, bugs, etc)

feat(StatefulTileCatalog): add new isSelectedByDefault prop and only invoke onSelection if set true (true by default)
feat(tileCatalogReducer): only select by default (in initial state) if isSelectedByDefault is true

Acceptance Test (how to verify the PR)

Check the new story and testcases and confirm the tile catalog is actually unselected

@bryancboyd @davidicus can I get a review on this one?

:tada: This PR is included in version 2.21.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Make tutorial more Scala-newbie friendly

It takes about 15mins for me to determine the reason for the following error:
Could not find an instance of Concurrent for cats.effect.IO.
I found:

    cats.effect.IO.ioConcurrentEffect(
      /* missing */summon[cats.effect.ContextShift[cats.effect.IO]]
    )

But no implicit values were found that match type cats.effect.ContextShift[cats.effect.IO].

One of the following imports might make progress towards fixing the problem:

  import shapeless.~?>.idKeyWitness
  import shapeless.~?>.idValueWitness
  import shapeless.~?>.witness

  )

Thanks for your work! 👍

What is reporting that error message?
That instance is provided automatically by IOApp, you don't need to declare it.

The error happens on running the following test:
package xxx.server.postgresql.testing

import org.scalatest._
import org.scalatest.matchers.should.Matchers
import org.scalatest.flatspec.AnyFlatSpec
import cats.effect._
import skunk._
import skunk.implicits._
import skunk.codec.all._
import natchez.Trace.Implicits.noop
import scala.concurrent.ExecutionContext

class TestContainerTest extends AnyFlatSpec with Matchers {
  behavior of "TestContainer"

  val pg = PostgreSQLInstance()
  pg.start()
  val pgConfig = pg.getConfig

  implicit val cs: ContextShift[IO] = IO.contextShift(ExecutionContext.global)

  val session: Resource[IO, Session[IO]] = Session.single(
    host = pgConfig.host,
    port = pgConfig.port.toInt,
    database = pgConfig.database,
    user = pgConfig.user,
    password = Some(pgConfig.password)
  )

  it should "work like in this example" in {
    // no code
  }
}

I use dotty 0.27.0-RC1 maybe it can be a reason for the issue?

My fault. Didn't notice:

Try out this minimal IOApp that connects to the database and selects the current date.

Closing.

Also Skunk doesn't work in Scala 3 yet.


[WIP]: Separate install targets

As requested, this PR removes most of the environment variables and instead splits them into different install targets. To make this work, a prepare target is introduced that has to be built before the regular target.
The targets to choose from:

release
release_nocuda
release_nocuda_coverage
debug
debug_nocuda
debug_nocuda_coverage

The to-do list:

[X] Remove environment variables
[X] Define targets for debug and release
[X] Define targets with and without GPU support
[X] Define targets to compute code coverage
[ ] Make all tests pass
[ ] Fix coverage upload
[ ] Fix Makefiles of project and tutorials
[ ] Update README instructions
[ ] Update User Guide instructions

Coverage remained the same at 90.198% when pulling 1b64f08750e936486c149964ee8e0e79a08054ae on mbeyeler:mb/targets into 3ce3d6c3cbb2f2a9ea553f26a9b262bcf2dfb85e on UCI-CARL:master.


zed_aruco_localization outputting infinite transform

Preliminary Checks

[X] This issue is not a duplicate. Before opening a new issue, please search existing issues.
[X] This issue is not a question, feature request, or anything other than a bug report directly related to this project.

Description
I am trying to run the zed_aruco_localization example with just one marker, set to the origin of the map frame (i.e. pos = 0,0,0, or = 0,0,0).
But whenever I try to run this example with one marker, it outputs an infinite transform. I have tried this at different distances and doesn't seem to affect it.
When I try running the example with 2 markers, it doesn't output an infinite transform. But the transform is still quite off, and am just wondering if there is anything I am missing?

Here is my config file:
# config/aruco_loc.yaml
# Parameters for ArUco localization

---
/**:
    ros__parameters:

      general:
        marker_count: 1             # Number of markers in the World
        marker_size: 0.16           # Width/Height of the ArUco markers [m]
        maximum_distance: 3.0       # Maximum distance of the target from the camera to consider it valid
        detection_rate: 0.5         # Maximum detection frequency for pose update
        camera_name: 'zed'          # Name of the camera to relocate
        world_frame_id: 'map'       # Frame id of the world frame
        refine_detection: false     # If enabled the corners of the detected markers will be processed to obtain sub-pixel precision

      debug:
        active: false               # Enable debug messages

      marker_000:
        aruco_id: 40                 # ID of the ArUco tag as retrieved by the ArUco Detector code
        position: [0.0,0.0,0.0]
        orientation: [0.0,0.0,0.0]   # Orientation with respect to the World origin [rad]

      #marker_001:
      #  aruco_id: 19                 # ID of the ArUco tag as retrieved by the ArUco Detector code
      #  position: [0.0,0.0,1.09]     # Pose with respect to the World origin [m]
      #  orientation: [0.0,0.0,0.0]   # Orientation with respect to the World origin [rad]

      # Add a number of marker definitions equal to the number of markers in the World according to the `marker_count` value

      #marker_xxx:
      #  aruco_id: YYY               # ID of the ArUco tag as retrieved by the ArUco Detector code
      #  position: [x.x,y.y,z.z]     # Pose with respect to the World origin [m]
      #  orientation: [R.R,P.P,Y.Y]  # Orientation with respect to the World origin [rad]

Steps to Reproduce

ros2 launch zed_aruco_localization zed_aruco_loc.launch.py camera_model:=zed2i

Expected Result
Should be outputting a valid transform from the marker to the camera.
Actual Result
It outputs an infinite transformation.
ZED Camera model
ZED2i
Environment
OS: Ubuntu 22.04
CPU: AMD64 (also tried on ARM64 (Jetson Xavier NX))

ZED SDK 4.0.8
ROS2 Humble

Anything else?
No response

Check that the parameter marker_size: 0.16 is correct for the dimensions of your tag.

Check that the parameter marker_size: 0.16 is correct for the dimensions of your tag.
it is definitely correct.

Please record an SVO with ZED Explorer pointing your tag in the same conditions and share it with me so I can test the node as if I'm using your camera

Thanks @Myzhar
I have tried again in a different environment, and it appears to be very accurate now.

Sorry @Myzhar , I don't think I looked too much at the output last night.
When doing it again, it seems to detect the marker range very accurately (e.g. 1.56m), but the transformation it publishes is of very high numbers.
I have attached an image of the output. How should I share the SVO file with you? I can't attach it here.

I've just run it again and now it is working fine.
It seems random that sometimes it can't find the transform, and other times it can. I haven't changed anything about my setup, not sure what is going on here.

Please record an SVO with ZED Explorer pointing your tag in the same conditions and share it with me so I can test the node as if I'm using your camera

This request is still pending

Sorry, as I mentioned before, it won't let me paste SVO files in here. How should I share it with you?

You can use the file-sharing service you prefer: Google Drive, Dropbox, etc.

Let me know if there are any issues accessing it here

The SVO that you linked does work correctly:
[component_container-3] [INFO] [1713433718.635480153] [zed.aruco_node]: *****************************
[component_container-3] [INFO] [1713433718.635526986] [zed.aruco_node]:     ArUco detection
[component_container-3] [INFO] [1713433718.636650542] [zed.aruco_node]:  * Color conversion: 0.0010955 sec
[component_container-3] [INFO] [1713433718.645467893] [zed.aruco_node]:  * Marker detection: 0.00876424 sec
[component_container-3] [INFO] [1713433718.645519226] [zed.aruco_node]:  * Detected tags: 2
[component_container-3] [INFO] [1713433718.645743926] [zed.aruco_node]:  * Marker poses estimation: 0.000219078 sec
[component_container-3] [INFO] [1713433718.645749342] [zed.aruco_node]:  * Nearest marker: 40 -> 1.65173m
[component_container-3] [INFO] [1713433718.645752655] [zed.aruco_node]:  * ArUco marker #40 in range: 1.65173 m
[component_container-3] [INFO] [1713433718.645758027] [zed.aruco_node]: pose_aruco -> Pos: [-0.134,0.055,1.645] - Or: [176.733°,-12.235°,-0.993°]
[component_container-3] [INFO] [1713433718.645766275] [zed.aruco_node]: pose_img -> Pos: [-0.217,-0.041,1.637] - Or: [176.443°,12.155°,178.278°]
[component_container-3] [INFO] [1713433718.645771754] [zed.aruco_node]: pose_marker -> Pos: [1.637,-0.217,-0.041] - Or: [1.686°,-3.193°,167.746°]
[component_container-3] [INFO] [1713433718.645776486] [zed.aruco_node]: pose_marker -> Pos: [1.639,-0.157,-0.057] - Or: [1.686°,-3.193°,167.746°]
[component_container-3] [INFO] [1713433718.645781577] [zed.aruco_node]: *** Calling ZED 'set_pose' service ***
[component_container-3] [INFO] [1713433718.645784919] [zed.aruco_node]:  * New camera pose [map]-> Pos:[1.639,-0.157,-0.057] Or:[1.686°,-3.193°,167.746°]
[component_container-3] [INFO] [1713433718.645890967] [zed.aruco_node]: [getTransformFromTf] canTransform 'zed_left_aruco' -> 'zed_base_aruco':. canTransform returned after 5.657e-06 timeout was 0.. canTransform returned after 8.573e-06 timeout was 1.
[component_container-3] [INFO] [1713433718.648987076] [zed.aruco_node]: [getTransformFromTf] 'zed_base_aruco' -> 'zed_left_aruco':
[component_container-3] 	[0.010,-0.060,-0.015] - [0.000°,-0.000°,0.000°]
[component_container-3] [INFO] [1713433718.649007615] [zed.aruco_node]: test TF -> Pos: [0.010,-0.060,-0.015] - Or: [1.686°,-3.193°,167.746°]
[component_container-3] [INFO] [1713433718.654633162] [zed.aruco_node]:  * Publish image result: 0.00561398 sec
[component_container-3] [INFO] [1713433718.654646086] [zed.aruco_node]: *****************************
[component_container-3] [INFO] [1713433718.656394743] [zed.zed_node]: ** Set Pose service called **
[component_container-3] [INFO] [1713433718.656406324] [zed.zed_node]: New pose: [1.63884,-0.156693,-0.057321, 0.0294222,-0.0557217,2.92772]
[component_container-3] [INFO] [1713433718.656410620] [zed.zed_node]: *** Starting Positional Tracking ***
[component_container-3] [INFO] [1713433718.656413999] [zed.zed_node]:  * Waiting for valid static transformations...
[component_container-3] [INFO] [1713433718.657517909] [zed.zed_node]: Initial ZED left camera pose (ZED pos. tracking):
[component_container-3] [INFO] [1713433718.657533660] [zed.zed_node]:  * T: [1.63687,-0.217186,-0.0411453]
[component_container-3] [INFO] [1713433718.657541448] [zed.zed_node]:  * Q: [0.0292648,0.0116492,0.993838,0.106272]
[component_container-3] [INFO] [1713433718.661398840] [zed.aruco_node]:  * ZED Node replied to `set_pose` call: Positional Tracking new pose OK

Launch command:
$ ros2 launch zed_aruco_localization zed_aruco_loc.launch.py camera_model:=zed2i svo_path:=~/Downloads/HD2K_SN39676143_22-13-37.svo

Thought it would. Sometimes I've been getting that infinite transform error like I stated before - any idea why?

I noticed that the tags are not perfectly "glued" to the wall so they are not perfectly planar.
This can lead to unpredictable behaviors when reprojecting the points to the 3D plane.


Article on how to vote from A to Z

Estimated time: 4h

Why:
Follow up to https://github.com/tomochain/docs/issues/54, we also need a A to Z tutorial for voting
What:
An article explaining how to vote from A to Z. "A" being creating a wallet and "Z" receiving rewards from your staking.
Should include:

Creating a wallet
Connecting the wallet to testnet(metamask) and TomoMaster
Chosing a Masternode (quick refreshing about how rewards works)
Voting
Receiving rewards
Unvoting
Withdrawing

Also please @Leoloup , can you give me your medium handle (create an account if you don't have one already) and we will add you to the TomoChain publications team on medium as writer

https://medium.com/tomochain/how-to-vote-from-a-to-z-using-tomomaster-2f8948b436a5 Draft link

Thanks @Leoloup !
I edited the document a lot because we would like to publish this asap (it will help with the hunting game).
For me it's ready now :) Closing this issue.
@alex9121 please read it before publishing, if you see something weird just tell me.

Thanks everyone.
I will check it again before publishing.
My plan is to publish it before the game hunter is on so I can attach the guideline for members to follow.


Support for files with .txt extension

This is a very minor thing, but I'd like to see .txt added as a supported file extension, so I can set Typedown as my default program for .txt files.
I really like this editor, keep it up :)

If it's txt why not use notepad?

Because the build-in notepad on Windows 10 sucks and I'm not planning on upgrading to Windows 11 at the moment. I could use something like Notepad++ but the reason I wanted to use Typedown instead, is that I often write my study notes in Markdown. Most of my textfiles have the file extension .txt instead of .md. I tried using something like Obsidian but I am forced to create a vault (something like a workspace folder) every time, even if it's only one file that I want to view or edit. There are surprisingly not many good alternatives but I think yours is really good.
It seems to me that my feature request has been already implemented, since the current version of Typedown on the Microsoft Store does support .txt files and I'm thankful for that ))


Slider step increase issue

Hi,
I have been trying to set the parameters of the slider so that it changes the size of the 'step' once it reaches 36....
I want the minimum value to be 6, and the maximum to be 60 which I have set in the html code...

The step size should increase by increments of 6 until it gets to 36. When the slider reaches 36 the step size should increase by 12 ........ it should then snap to 48 and then 60 but instead it increases to 42, then 54 and 66!
So instead of going 6,12,18,24,30,36,48,60 (as it should do)
it seems to go..
6,12,18,24,30,36,42,54,66
the js code I have used is as follows...
onSlide: function(p,v) {
if (!$r.data().plugin_rangeslider)
return;
if (v>=36) {
  $r.data().plugin_rangeslider.step = 12;
}
else {
  $r.data().plugin_rangeslider.step = 6;
}

},
onSlideEnd: function(p, v) {
$('#val').attr('value', v)
}
Do you know what I can do to ensure the step size increases where it is being told to and displays the correct amounts?
Check this Codepen...http://codepen.io/anon/pen/jEpKRw
which works in a similar way and you will see what I mean, just add the min & max amounts that i have mentioned above. I am using pretty much the same HTML/JS as this to get the correct step sizes.
Strangely enough, when i set my min value to 0 the slider then displays the correct values but this is not a good workaround.
Any help would be greatly appreciated
Thanks

@cjhill2015 http://andreruffert.github.io/rangeslider.js/blog/#programmatic-attribute-changes


Fix a couple of errors in the customizing documentation

Broken links.
Examples did not work as written.

Nice catch. Technically project = Licensee::FSProject.new("path/to/project", detect_packages: true) or project = Licensee::GitProject.new("path/to/project", detect_packages: true) should work, but this feels simpler.


ChromeAndroid version is always 57

Is this correct?
http://browserl.ist/?q=ChromeAndroid+>%3D+30
http://browserl.ist/?q=ChromeAndroid+>%3D+58
When Chrome, I think it is correct.
http://browserl.ist/?q=Chrome+>%3D+30

~ 7s
❯ browserslist -v
browserslist 2.1.4

~
❯ browserslist "ChromeAndroid >= 30"
and_chr 59

That's what I'm getting from the browserslist client. I would suggest opening an issue there if you think something is wrong.


Patch CVE-2024-6197 in curl

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

[x] The toolchain has been rebuilt successfully (or no changes were made to it)
[x] The toolchain/worker package manifests are up-to-date
[x] Any updated packages successfully build (or no packages were changed)
[x] Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
[x] Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
[x] All package sources are available
[x] cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
[x] LICENSE-MAP files are up-to-date (./LICENSES-AND-NOTICES/SPECS/data/licenses.json, ./LICENSES-AND-NOTICES/SPECS/LICENSES-MAP.md, ./LICENSES-AND-NOTICES/SPECS/LICENSE-EXCEPTIONS.PHOTON)
[x] All source files have up-to-date hashes in the *.signatures.json files
[x] sudo make go-tidy-all and sudo make go-test-coverage pass
[x] Documentation has been updated to match any changes to the build system
[x] Ready to merge

Summary

What does the PR accomplish, why was it needed?

This PR addresses CVE-2024-6197 in curl by removing a superfluous free() call in x509asn1.c.
https://curl.se/docs/CVE-2024-6197.html

Change Log

Patch CVE-2024-6197

Does this affect the toolchain?

YES
Associated issues

https://github.com/microsoft/azurelinux/pull/10125

Links to CVEs

https://nvd.nist.gov/vuln/detail/CVE-2024-6197

Test Methodology

Buddy build - passed
Started a Stage 0 dev build  to make sure the toolchain builds

AMD toolchain pipeline - passed
ARM toolchain pipeline - passed

Auto cherry-pick results:

main :white_check_mark: -> https://github.com/microsoft/azurelinux/pull/10397

Auto cherry-pick pipeline run -> https://dev.azure.com/mariner-org/mariner/_build/results?buildId=637189&view=results


error

[!] Looks like you use a multi-speaker model. Define --speaker_idx to select the target speaker. You can list the available speakers for this model by --list_speaker_idxs.   i am getting this error how can i resolve this .

please add --speaker_id "male" or --speaker_id "female". This solved the problem


Issue #463 config loading definition

Motivations:

See issue #463

Main changes:

All configs renumbered from 0 (for consistency, except AUG because V0 is supposed to be not very detailed)
All default config are now defined in a separated dedicated module  _def_config.py
Coils have been added whenever possible
New nomenclature: 'WEST' call all structures except coils, 'WEST-coils' loads everything (the same goes for all config for which coils are available)
The docstring has been updated accordingly
New shortcut: for acessibility tf.load_config() calls tf.geom.utils.create_Config()

Example:
In [1]: import tofu as tf
/home/didier/Documents/Projects/tofu/tofu/__init__.py:90: UserWarning:
The following subpackages are not available:
    - tofu.imas2tofu
    - tofu.mag
  => see print(tofu.dsub[<subpackage>]) for details.
  warnings.warn(msg)

In [2]: conf = tf.load_config()
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-2-940c1ad40170> in <module>
----> 1 conf = tf.load_config()

~/Documents/Projects/tofu/tofu/geom/utils.py in create_config(case, Exp, Type, Lim, Bump_posextent, R, r, elong, Dshape, divlow, divup, nP, returnas, SavePath, path)
    929     elif not any(lc):
    930         msg = get_available_config(verb=False, returnas=str)
--> 931         raise Exception(msg)
    932
    933     # Get config, either from known case or geometrical parameterization

Exception: A config is the geometry of a tokamak
You can define your own, see online tutorial at:
	https://tofuproject.github.io/tofu/auto_examples/tutorials/tuto_plot_create_geometry.html
tofu also also provides some pre-defined config ready to load
They are available via their name or via shortcuts

	unique names    	shortcuts
	---------------- 	--------------------------------------
	- AUG-V1          	['AUG-V1', 'AUG']
	- COMPASS-V0      	['COMPASS-V0', 'COMPASS']
	- DEMO-2019       	['DEMO-2019', 'DEMO']
	- ITER-SOLEDGE3XV0	['ITER-SOLEDGE3XV0', 'ITER-SOLEDGE3X']
	- ITER-V0         	['ITER-V0']
	- ITER-V1         	['ITER-V1', 'A2']
	- ITER-V2         	['ITER-V2', 'B4', 'ITER']
	- JET-V0          	['JET-V0', 'JET']
	- NSTX-V0         	['NSTX-V0', 'NSTX']
	- TCV-V0          	['TCV-V0', 'TCV']
	- TOMAS-V0        	['TOMAS-V0', 'TOMAS']
	- WEST-Sep        	['WEST-Sep', 'A3']
	- WEST-V0         	['WEST-V0']
	- WEST-V1         	['WEST-V1', 'A1']
	- WEST-V2         	['WEST-V2', 'B1']
	- WEST-V3         	['WEST-V3', 'B2']
	- WEST-V4         	['WEST-V4', 'B3', 'WEST']

  => to get a pre-defined config, call for example:
	config = tf.geom.utils.create_config('ITER')

 => to also load coils add '-coils' to the config name, e.g.:
	config = tf.geom.utils.create_config('ITER-coils')

In [3]: lax = tf.load_config('WEST').plot()

In [4]: lax = tf.load_config('WEST-coils').plot()

With the respective 2 plots:

Issues:

Fixes, in devel, issue #463

Hello @Didou09! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file tofu/geom/_def_config.py:

Line 4:1: E303 too many blank lines (3)
Line 262:21: E201 whitespace after '('
Line 262:45: E202 whitespace before ')'

In the file tofu/geom/inputs/WEST_get_details_from_excel.py:

Line 17:1: E402 module level import not at top of file

Codecov Report

Merging #464 (616375c) into devel (9a67cdb) will decrease coverage by 0.35%.
The diff coverage is 18.93%.

@@            Coverage Diff             @@
##            devel     #464      +/-   ##
==========================================
- Coverage   51.55%   51.20%   -0.36%
==========================================
  Files          30       32       +2
  Lines       19045    19183     +138
==========================================
+ Hits         9819     9823       +4
- Misses       9226     9360     +134

Impacted Files
Coverage Δ

tofu/geom/inputs/WEST_get_details_from_excel.py
0.00% <0.00%> (ø)

tofu/geom/utils.py
41.05% <60.00%> (-1.83%)
:arrow_down:

tofu/geom/_def_config.py
84.21% <84.21%> (ø)

tofu/__init__.py
100.00% <100.00%> (ø)

tofu/tests/tests02_data/test_03_core.py
99.08% <100.00%> (-0.01%)
:arrow_down:

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 9a67cdb...616375c. Read the comment docs.


Pass Initial Notification Action Correctly on iOS and Android

Refer to https://github.com/Hurdlr/TraxReactNative/pull/3906

 Android notification tagging not working on


Pulseaudio not working anymore

I don't know if this issue is related to x11docker, but maybe someone has some hints for me to solve it.
After an upgrade of different packages inclusive pulseaudio and nvidia driver (arch linux), pulseaudio has stopped working with Docker. Downgrading of pulseaudio has no effect. For example vlc error message is vlcpulse audio output error: PulseAudio server connection failure: Timeout. It's not connection refused! See logs
vlc_docker.log
If I install vlc on host system, it can connect to pulseaudio via socket and sound is working. See logs
vlc_host.log
Pulseaudio native is mounted to the container but I don't know why it can not connect anymore. Any hints  appreciated.

Can you please run pavucontrol in container and check whether it connects to pulseaudio server?

Maybe it's a pulseaudio version issue. I've installed version 12.2 on host and Docker container.
I've got the pavucontrol error (pavucontrol:71): dbind-WARNING **: 22:55:33.699: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-DdUV4iwaoC: Connection refused. Have you an idea why dbus is used here or is it normal? Also from the logs x11docker: Running dbus user session with: (none), is this correct?
x11docker.log
Here are some pulseaudio infos. Do you have the same?
ps aux | grep pulse
gdm        1786  0.0  0.0 1199012 11980 ?       Ssl  19:27   0:00 /usr/bin/pulseaudio --daemonize=no
gdm        1817  0.0  0.0 290548  6356 ?        Sl   19:27   0:00 /usr/lib/pulse/gsettings-helper
skeil      2255  0.0  0.0 1473008 14364 ?       S<sl 19:27   0:01 /usr/bin/pulseaudio --daemonize=no
skeil      2263  0.0  0.0 290552  6488 ?        Sl   19:27   0:00 /usr/lib/pulse/gsettings-helper

ls -la /run/user/1000/pulse
total 4
drwx------  2 skeil users 100  8. Aug 19:27 .
drwx------ 11 skeil users 260  8. Aug 22:55 ..
srwxrwxrwx  1 skeil users   0  8. Aug 19:27 dbus-socket
srw-rw-rw-  1 skeil users   0  8. Aug 19:27 native
-rw-------  1 skeil users   5  8. Aug 19:27 pid

Can you also try if it works for you with this Dockerfile (Arch Linux)?
FROM base/archlinux:2018.08.01
RUN pacman -Sy --noconfirm pavucontrol \
    && pacman -Scc --noconfirm
CMD ["pavucontrol"]

dbus warnings are mostly harmless.
Though, ls -la /run/user/1000/pulse does not show a dbus-socket here, but only native and pid.
Maybe it makes a difference to share dbus-socket with --sharedir /run/user/1000/pulse/dbus-socket
ps aux | grep pulse only shows one entry of /usr/bin/pulseaudio --daemonize=no
What do you see in the GUI of pavucontrol within container? Does it show an error message, or is there an "output devices" tab? If a connection is established, you should see and control your host audio device in "output devices".
Can you provide me a simple Dockerfile based on arch with pulseaudio and vlc in it?

The GUI said Establish connection to PulseAudio. Please wait. I've updated a bit my previous comments with more infos, sorry for that.
Here is the Arch Linux VLC Dockerfile.
FROM base/archlinux:2018.08.01
RUN pacman -Syu --noconfirm ffmpeg libfdk-aac lame a52dec libvorbis flac wavpack libmpeg2 xvidcore vlc
CMD ["vlc", "-vv"]

pavucontrol on arch image crashes with a segmentation fault here.
I once decided to connect to pulseaudio with shared unix sockets to provide best possible performance. But if it is incompatible now, I may have to provide pulseaudio with a TCP connection instead.
That is less secure and has some issues with the TCP module. I can load pulseaudio TCP module on host with a specified container IP to allow. But unloading the module caused pulseaudio to terminate at all.

I did some tests with the VLC Dockerfile/image you've provided.
It already shows an error during build, but build finishes:
(6/6) Updating the vlc plugin cache...
error: command terminated by signal 11: Segmentation fault

If I try to run vlc or pavucontrol, both fail with segmentation faults or core dumps. This happens with and without --pulseaudio. At least an additional xterm does not crash.
I also tried a TcP setup for pulseaudio, but that does not help either
I assume a serious underlying issue in either arch, vlc or pulseaudio. Do you have an idea about those crashes? At least without providing puleaudio from host there should not be a crash.

Can you run a test with:
FROM debian:sid
RUN apt-get update
RUN apt-get install -y pavucontrol
CMD pavucontrol

debian sid provides pulseaudio 12.0.

No success, same behaviour with debian. From my pacman logs, pulseaudio should work until version 12.2-1.
This may be an interesting pacman log detail, but  /usr/lib/systemd/user/pulseaudio.socket is still there. Any idea why multiple pulseaudio sockets exists? But I think it was working with /run/user/1000/pulse/dbus-socket
 574 [2018-07-07 15:38] [ALPM] installed pulseaudio (12.0-1)
 575 [2018-07-07 15:38] [ALPM-SCRIPTLET] Created symlink /etc/systemd/user/sockets.target.wants/pulseaudio.socket → /usr/lib/systemd/user/pulseaudio.socket.

At this time it was stop working but it could also be an issue with another package. Here are the full pacman log.
pacman.log
2242 [2018-08-02 22:51] [ALPM] upgraded pulseaudio (12.2-1 -> 12.2-2)
2243 [2018-08-02 22:51] [ALPM] upgraded pulseaudio-bluetooth (12.2-1 -> 12.2-2)
2244 [2018-08-02 22:51] [ALPM] upgraded gnome-bluetooth (3.28.0-1 -> 3.28.2-1)

Can you try this Dockerfile (it uses pulseaudio 12.0), it was working for me before system upgrade in august.
FROM base/archlinux:2018.07.01
RUN echo 'Server=https://archive.archlinux.org/repos/2018/07/01/$repo/os/$arch' > /etc/pacman.d/mirrorlist
RUN pacman -Sy --noconfirm pulseaudio pulseaudio-alsa pavucontrol
CMD ["pavucontrol"]

So if pulseaudio is working on host, what can be the problem that's not working in the container? Sharing the socket should be enough like for X11 right? Should I mount some other stuff too?

So if pulseaudio is working on host, what can be the problem that's not working in the container? Sharing the socket should be enough like for X11 right? Should I mount some other stuff too?

Maybe it has to do with this new dbus socket. Sharing it with --sharedir /run/user/1000/pulse/dbus-socket is worth a test.
One idea: If the socket is a symbolic link only, sharing with container fails.
Please check ls -l $XDG_RUNTIME_DIR/pulse whether it contains symbolic links.

Can you try this Dockerfile

Building right now.

I've made an update that allows to use TCP instead of shared socket.
Try with --pulseaudio=tcp

Quite awesome, --pulseaudio=tcp works like a charm for vlc and pavucontrol. :tada: I don't find a symlink.
ls -l $XDG_RUNTIME_DIR/pulse
total 4
srwxrwxrwx 1 skeil users 0  9. Aug 20:22 dbus-socket
srw-rw-rw- 1 skeil users 0  9. Aug 20:21 native
-rw------- 1 skeil users 5  9. Aug 20:21 pid

Maybe it has to do with this new dbus socket. Sharing it with --sharedir /run/user/1000/pulse/dbus-socket is worth a test.

If I run --sharedir /run/user/1000/pulse/dbus-socket without --pulseaudio vlc said this time vlcpulse audio output error: PulseAudio server connection failure: Connection refused. So it's no timeout.
[000055a5fe1b51c0] main audio output debug: looking for audio output module matching "any": 6 candidates
[000055a5fe1b51c0] vlcpulse audio output debug: using library version 12.2.0
[000055a5fe1b51c0] vlcpulse audio output debug:  (compiled with version 12.2.0, protocol 32)
[000055a5fe1b51c0] vlcpulse audio output error: PulseAudio server connection failure: Connection refused
[000055a5fe1b51c0] alsa audio output debug: Available ALSA PCM devices:
[000055a5fe1b51c0] alsa audio output debug: Discard all samples (playback) or generate zero samples (capture) (null)
[000055a5fe1b51c0] alsa audio output debug: PulseAudio Sound Server (pulse)
[000055a5fe1b51c0] alsa audio output debug: Default ALSA Output (currently PulseAudio Sound Server) (default)
[000055a5fe1b51c0] main audio output debug: using audio output module "alsa"
[000055a5fe0f6f90] main playlist debug: keeping audio output

Works with shared socket as well as over TCP.

And this Dockerfile does not work for you via socket?
FROM base/archlinux:2018.08.01
RUN pacman -Syu --noconfirm pulseaudio pulseaudio-alsa pavucontrol
CMD ["pavucontrol"]

Is there anything that I can do to help to bring pulseaudio socket back to work? Or maybe we wait a month or so and see if it works with new updates again? This depends on your ideas how to debug. ;-) In the meantime I can live with tcp.
Thank you very much for your effort. I highly appreciate it.

And this Dockerfile does not work for you via socket?

It works with both TCP and shared socket.

If I run --sharedir /run/user/1000/pulse/dbus-socket without --pulseaudio

Please test with pulseaudio: --sharedir /run/user/1000/pulse/dbus-socket --pulseaudio

Is there anything that I can do to help to bring pulseaudio socket back to work? Or maybe we wait a month or so and see if it works with new updates again? This depends on your ideas how to debug. ;-)

Maybe we can check again after next arch pulseaudio update.
Currently I don't have much ideas on how to debug.
If it turns out that socket sharing failes for pulseaudio >=12.0 on host due to internal API changes, x11docker will have to default to TCP.
Maybe if I set up an arch VM, I could do further tests. I already have one, but it fails to run updates and is quite outdated. Because I am not familar with arch and it was not easy to install, I hesitate do install it again.

Please test with pulseaudio: --sharedir /run/user/1000/pulse/dbus-socket --pulseaudio

It doesn't work either. No worries. So let's wait for new updates.
[000055cec05f61c0] vlcpulse audio output debug: using library version 12.2.0
[000055cec05f61c0] vlcpulse audio output debug:  (compiled with version 12.2.0, protocol 32)
[000055cec05f61c0] vlcpulse audio output error: PulseAudio server connection failure: Timeout

If it turns out that socket sharing failes for pulseaudio >=12.0 on host due to internal API changes.

I don't understand this, because my Docker images have the same pulseaudio version like the host or what do you mean with API changes? Ok, maybe some other package has not the same version like on host due the base Docker image difference.
Again, no worries. Let's wait for a new update round.

I don't understand this, because my Docker images have the same pulseaudio version like the host or what do you mean with API changes?

You are right, that should work at least with same versions on host and in image.
One idea: There is some sort of pulseaudio cookie for authentication. I did not need it before, would have to look for it. Maybe x11docker just needs to share the cookie.
I am not sure where the cookie file resides. But it is shown in pax11publish. It may work to to run pax11publish on new X server.
Try: --runfromhost 'pax11publish -e'
Though, it may interfere with the PULSE_SERVER environment variable.

I don't have a PULSE_SERVER environment variable on host. The pulseaudio cookie is stored in ~/.config/pulse/cookie. So should I mount it to somewhere? Regarding to the Arch Wiki how can pulseaudio work via TCP without sharing the cookie?

For this to work, it is a requirement that both the client and server share the same cookie.

I don't have a PULSE_SERVER environment variable on host.

On host it is stored in X11 environment variables, done by pulseaudio. pax11publish makes them visible. In container x11docker sets it (but as a normal environment variable, not stored in X).

The pulseaudio cookie is stored in ~/.config/pulse/cookie.

Maybe it just needs to be shared with container. Though, --sharedir only will point correctly if option --home is set, too. Can your try:
x11docker --pulseaudio --home --sharedir ~/.config/pulse/cookie imagename

how can pulseaudio work via TCP without sharing the cookie?

x11docker loads a pulseaudio TCP module authenticated with IP address of container:
pactl load-module module-native-protocol-tcp port=$Pulseaudioport auth-ip-acl=$Containerip

I've to run pactl load-module module-x11-publish first to get an output of pax11publish but no luck with the different examples. Always connectino timeout in VLC.

Always connectino timeout in VLC.

It is better to check with pavucontrol. I  divides finer between timeout and refused connections.

x11docker now copies ~/.config/pulse/cookie into container and sets PULSE_COOKIE pointing to it. (for --pulseaudio=socket only).
It does not make a difference here, it works even with a wrong cookie.
But maybe it makes a difference with pulseaudio 12 on host.
Maybe it is just a pulseaudio configuration issue. If the cookie does not help, a look at daemon configuration on host may help. /etc/pulseaudio/daemon.conf
x11docker creates this client.conf:
# Connect to the host's server using the mounted UNIX socket
default-server = unix:/pulse/native
# Prevent a server running in the container
autospawn = no
daemon-binary = /bin/true
# Prevent the use of shared memory
enable-shm = false

Can't get a socket pulseaudio connection in pavucontrol with the new version, only tcp works. Here are my configs:
$ cat /etc/pulse/client.conf
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

## Configuration file for PulseAudio clients. See pulse-client.conf(5) for
## more information. Default values are commented out.  Use either ; or # for
## commenting.

; default-sink =
; default-source =
; default-server =
; default-dbus-server =

autospawn = no
; autospawn = yes
; daemon-binary = /usr/bin/pulseaudio
; extra-arguments = --log-target=syslog

; cookie-file =

; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB

; auto-connect-localhost = no
; auto-connect-display = no

$ cat /etc/pulse/daemon.conf
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
## more information. Default values are commented out.  Use either ; or # for
## commenting.

; daemonize = no
; fail = yes
; allow-module-loading = yes
; allow-exit = yes
; use-pid-file = yes
; system-instance = no
; local-server-type = user
; enable-shm = yes
; enable-memfd = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
; cpu-limit = no

; high-priority = yes
; nice-level = -11

; realtime-scheduling = yes
; realtime-priority = 5

; exit-idle-time = 20
; scache-idle-time = 20

; dl-search-path = (depends on architecture)

; load-default-script-file = yes
; default-script-file = /etc/pulse/default.pa

; log-target = auto
; log-level = notice
; log-meta = no
; log-time = no
; log-backtrace = 0

; resample-method = speex-float-1
; avoid-resampling = false
; enable-remixing = yes
; remixing-use-all-sink-channels = yes
; enable-lfe-remixing = no
; lfe-crossover-freq = 0

flat-volumes = no
; flat-volumes = yes

; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 200000

; default-sample-format = s16le
; default-sample-rate = 44100
; alternate-sample-rate = 48000
; default-sample-channels = 2
; default-channel-map = front-left,front-right

; default-fragments = 4
; default-fragment-size-msec = 25

; enable-deferred-volume = yes
; deferred-volume-safety-margin-usec = 8000
; deferred-volume-extra-delay-usec = 0

$ cat /etc/pulse/default.pa
#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

# This startup script is used only if PulseAudio is started per-user
# (i.e. not in system mode)

.fail

### Automatically restore the volume of streams and devices
load-module module-device-restore
load-module module-stream-restore
load-module module-card-restore

### Automatically augment property information from .desktop files
### stored in /usr/share/application
load-module module-augment-properties

### Should be after module-*-restore but before module-*-detect
load-module module-switch-on-port-available

### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Use the static hardware detection module (for systems that lack udev support)
load-module module-detect
.endif

### Automatically connect sink and source if JACK server is present
.ifexists module-jackdbus-detect.so
.nofail
load-module module-jackdbus-detect channels=2
.fail
.endif

### Automatically load driver modules for Bluetooth hardware
#.ifexists module-bluetooth-policy.so
#load-module module-bluetooth-policy
#.endif

#.ifexists module-bluetooth-discover.so
#load-module module-bluetooth-discover
#.endif

### Load several protocols
load-module module-dbus-protocol
.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
.endif
load-module module-native-protocol-unix

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish

### Load the RTP receiver module (also configured via paprefs, see above)
#load-module module-rtp-recv

### Load the RTP sender module (also configured via paprefs, see above)
#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
#load-module module-rtp-send source=rtp.monitor

### Load additional modules from GSettings. This can be configured with the paprefs tool.
### Please keep in mind that the modules configured by paprefs might conflict with manually
### loaded modules.
.ifexists module-gsettings.so
.nofail
load-module module-gsettings
.fail
.endif

### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore

### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

### Honour intended role device property
load-module module-intended-roles

### Automatically suspend sinks/sources that become idle for too long
#load-module module-suspend-on-idle

### If autoexit on idle is enabled we want to make sure we only quit
### when no local session needs us anymore.
.ifexists module-console-kit.so
load-module module-console-kit
.endif
.ifexists module-systemd-login.so
load-module module-systemd-login
.endif

### Enable positioned event sounds
load-module module-position-event-sounds

### Cork music/video streams when a phone stream is active
load-module module-role-cork

### Modules to allow autoloading of filters (such as echo cancellation)
### on demand. module-filter-heuristics tries to determine what filters
### make sense, and module-filter-apply does the heavy-lifting of
### loading modules and rerouting streams.
load-module module-filter-heuristics
load-module module-filter-apply

### Make some devices default
#set-default-sink output
#set-default-source input

$ cat /etc/pulse/system.pa
#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

# This startup script is used only if PulseAudio is started in system
# mode.

### Automatically restore the volume of streams and devices
load-module module-device-restore
load-module module-stream-restore
load-module module-card-restore

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Use the static hardware detection module (for systems that lack udev/hal support)
load-module module-detect
.endif

### Load several protocols
.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
.endif
load-module module-native-protocol-unix

### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore

### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle

### Enable positioned event sounds
load-module module-position-event-sounds

On the first glance I do not see anything suspicious in the config files.

I did a deep change for --pulseaudio: Instead of sharing already existing unix socket and cookie, a new socket is created (at line 6074):

      # --pulseaudio
      case $Pulseaudiomode in
        #socket) Pulseaudiomoduleid="$(pactl load-module module-native-protocol-unix socket=$Sharefolder/pulseaudio.socket)" ;;
        socket) Pulseaudiomoduleid="$(pactl load-module module-native-protocol-unix socket=$Sharefolder/pulseaudio.socket auth-anonymous=1)" ;;
        tcp)    Pulseaudiomoduleid="$(pactl load-module module-native-protocol-tcp  port=$Pulseaudioport auth-ip-acl=$(cat $Containeripfile))" ;;
      esac

If this fails on your system, you may try to disable socket) line and enable #socket)'  line to run with or without auth-anonymous=1`.

In container variable PULSE_COOKIE is specified at line 3237, but x11docker does not create a cookie.
Magically the specified cookie appears in /x11docker/pulseaudio.cookie. I assume there is some sort of automatic pulseaudio cookie exchange.
      Customenvironment="PULSE_SERVER=unix:$Cshare/pulseaudio.socket
PULSE_COOKIE=$Cshare/pulseaudio.cookie
$Customenvironment"

You can try if removing PULSE_COOKIE=$Cshare/pulseaudio.cookie makes a difference.

I did a test in a new arch VM with pulseaudio 12.2 and image build with:
FROM base/archlinux:2018.08.01
RUN pacman -Syu --noconfirm pulseaudio pulseaudio-alsa pavucontrol
CMD ["pavucontrol"]

It works! :tada:

Confirmed :tada: :+1: It works now with pulseaudio=socket in pavucontrol, wine (Pulseaudio ALSA) and steam ...
So x11docker must load it's own socket?
$(pactl load-module module-native-protocol-unix socket=$Sharefolder/pulseaudio.socket)

Again, thank you very much for your effort. :clap:

Confirmed

:-)

So x11docker must load it's own socket?

Yes. I am not sure why sharing the regular socket fails. Probably some sort of authentication issue, although we tried to share the cookie.

Again, thank you very much for your effort.

You are welcome.
Maybe you could help me? If you happen to have a Windows 10 installation (on host, not in VM), you could run some tests for me. I yet finished experimental pulseaudio support for MSYS2, Cygwin and WSL on Windows. I was hoping for 1138-4EB  to do some tests (#70), but it seems he is too busy.
I have Win10 in a VM only, and docker does not run it it (nested virtualization issue), so I am missing some final checks.

If you happen to have a Windows 10 installation (on host, not in VM), you could run some tests for me.

I'm sorry, I don't have a Windows machine.

Just a note: Documentation of pulseaudio setup with shared socket or over TCP at https://stackoverflow.com/a/51860606/5369403.

@mviereck I just want to let you know that I have upgraded my Arch Linux system and Docker images to latest versions and current x11docker master does not work, but x11docker version 5.2 works fine. It can't connect to pulseaudio server. Nothing special in the logs.
Do you have made any changes in master for pulseaudio since version 5.2?

Thanks for reporting! It is fixed now.

Do you have made any changes in master for pulseaudio since version 5.2?

I did a great code change putting the long linear code flow into functions() and creating a short main() routine that gives an easier overview of x11docker code flow.
Accidently I've deleted a pulseaudio check during this operation that changes auto mode into tcp or socket.

Nothing special in the logs.

I got this in terminal without the logs: ;-)
x11docker WARNING: Unknown pulseaudio mode: auto
  Allowed are --pulseaudio=socket or --pulseaudio=tcp
  Fallback: disabling option --pulseaudio

Thanks for reporting! It is fixed now.

Thank you for fixing it. :-) I didn't noticed this warning. It works now with current master.


Added support for the entire AT24C device family

Description

Added classes to support AT24C01C, AT24C02C, AT24C04C, AT24C08C, AT24C16C, AT24C32C, AT24C64C, AT24C128C, and AT24C256C ICs.
Moved the existing AT24128C class into the AT24CXX directory to be consistent with other device family implementations in nanoFramework.Iot.Device.
Changed the namespace of AT24128C from Iot.Device.At24C128C to Iot.Device.At24CXX.
Changed the constructor of AT24128C to accept an I2cDevice reference instead of being passed address and i2cBus. The existing AT24128C implementation was not consistent with other device implementations in nanoFramework.Iot.Device.
Added support for sequential read feature.

Motivation and Context
The AT24 EEPROM family contains 9 different ICs each with a different memory size, page count, and page size. Each chip can only write up to its page size in bytes per write cycle. Using the appropriate class now throws an exception if more data is written that the chip will allow per write cycle. The AT24 family also contains an internal address counter that allows for sequentially reading bytes. The existing implementation did not provide a way to take advantage of this feature.
How Has This Been Tested?
The provided sample code was tested using an ESP32 (ESP32-WROOM-32) and an AT24C32C.
Types of changes

[x] Improvement (non-breaking change that improves a feature, code or algorithm)
[ ] Bug fix (non-breaking change which fixes an issue with code or algorithm)
[x] New feature (non-breaking change which adds functionality to code)
[x] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Config and build (change in the configuration and build system, has no impact on code or features)
[ ] Dependencies (update dependencies and changes associated, has no impact on code or features)
[ ] Unit Tests (add new Unit Test(s) or improved existing one(s), has no impact on code or features)
[ ] Documentation (changes or updates in the documentation, has no impact on code or features)

Checklist:

[x] My code follows the code style of this project (only if there are changes in source code).
[x] My changes require an update to the documentation (there are changes that require the docs website to be updated).
[ ] I have updated the documentation accordingly (the changes require an update on the docs in this repo).
[x] I have read the CONTRIBUTING document.
[x] I have tested everything locally and all new and existing tests passed (only if there are changes in source code).
[ ] I have added new tests to cover my changes.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: DoNotTapeOver sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Thanks a lot, a general comment: the naming convention goes for lower case "x" in the name when replacing a character. That applies to everything: the directory name, the file name, the class name, the namespaces.
Can you please adjust all this?
Note that on Windows, if you want to adjust a file name or a directory name, you have to:

Rename to something else (add the number 2 for example).

Note: to help resolve the conflict, you may have to pull the develop branch to your branch and then resolve them. If you need help, please let us know.

Seems that there are some changes that should not be present here. If you pulled the dev branch, resolve the conflict and then commit everything and push. Otherwise, you'll get un sync with the dev branch.

Hi, so maybe the best is just:

Close this PR
Copy your new files into a safe place.
Go back to the the develop branch, pull all the changes.
Then create a new branch
Place back your new files, delete the ones which need to be deleted
Go again for this PR
Sorry for the mess generated, we'll get there :-)


Done NavBar as per figma desgin

Related Issue

Issue number goes here: #1

Proposed Changes

Change 1
Change 2
Change 3

Checklist

[x] Documentation of the code
[x] Add your name to the CONTRIBUTORS file
[x] Testing your code in the local machine

Screenshots

Hey @shivamshaw07,
Will you delete this PR and resend a Fresh new PR
Updating this all

Hey @shivamshaw07,
Will you please delete this PR and send a new PR

@shivamshaw07 can you update now?

Yes bhaiya


Implementing cancellation requests for LSP server

[X] I've read the CONTRIBUTING guidelines

After a number of attempts this is the best solution I've found so far, still, open to suggestions.
This will fix #4373
(Thanks for pushing on this @TrustNoOne :-) )

Addressed the comments, added a test for "string ids" cancellation (as opposed to the numeric once) and already squashed commits.

Implemented a more fine-graned error handling and already squashed the commits,


How to handle nan values at different depth layers? (Ocean data)

Describe the bug
We have used anemoi-datasets to create a zarr dataset from ocean model data (Norkyst). The data contains nan values over land which we are unsure how to handle. One possibility is to use a mask to cut out the nan values. However, since the depth of the ocean varies, the regions that contain nan values are larger at depth than at the surface (see the example below).
Do you have suggestions to how we should handle these nan values? Are there already some functionality that we have not seen that we could use? Or do you have a suggestion on what the best implementation could be?
Example
In this example we only look at the temperature at two depths, 1m and 300m: temperature_1 and temperature_300. Lets first remove the nan values at 1m, for example like this:
import numpy as np
import anemoi.datasets as ad

z = ad.open_dataset('./data/norkyst_v3_2024_01_01-02.zarr')

indx_1 = z.name_to_index['temperature_1']
temp_1 = z[0,indx_1,0,:]

mask = np.isfinite(temp_1)

temp_nonan = temp_1[mask]
lat_nonan = z.latitudes[mask]
lon_nonan = z.longitudes[mask]

so that now we have reduced the size of the array by removing all data which is over land. At 300m depth there are less temperature values (e.g. more nan values to remove):
indx_3 = z.name_to_index['temperature_300']
temp_3 = z[0,indx_3,0,:]
mask3 = np.isfinite(temp_3)

temp_nonan3 = temp_1[mask3]
lat_nonan3 = z.latitudes[mask3]
lon_nonan3 = z.longitudes[mask3]

so that len(temp_nonan) > len(temp_nonan3) and lat_nonan !=lat_nonan3 since mask != mask3. By applying a separate mask at each depth layer (we have 16 of them) we end up having different sets of lat and lon arrays at each depth. Is that a good solution?
Version number
I am using the following versions of the anemoi packages (pip freeze)
anemoi-datasets==0.5.7
anemoi-graphs==0.3.0
anemoi-models==0.3.0
anemoi-training==0.2.0
anemoi-utils==0.4.0

To Reproduce
Steps to reproduce the behavior:

run the norkyst-one.yaml:

dates:
  start: 2024-01-01T00:00:00Z
  end: 2024-01-01T23:30:00Z
  frequency: 1h
resolution: o96
input:
    join:
      - netcdf:
          path: /lustre/storeB/project/fou/hi/oper/norkyst_v3/forecast/his_zdepths/2024/01/01/norkyst800_his_zdepth_*_m00_AN.nc
          param: [temperature] #, salinity, u_eastward, v_northward]
statistics:
  allow_nans: [temperature]

Run anemoi-datasets create norkyst-one.yaml data/norkyst_v3_2024_01_01.zarr
There is no error, just a zarr dataset containing lots of nans

URL to sample input data
https://thredds.met.no/thredds/catalog/fou-hi/norkystv3_his_files/2024/01/01/catalog.html

Solved in: #89

Thanks! In the end we have imputed our dynamical NaN's in a pre-processing step (before anemoi-datasets) by a nearest neighbor interpolation. Your implementation might still be useful in the future :)
FYI: We still plan to use the ConstantImputer for the NaN's that represent land and all values below the seafloor, which are static.


MobilenetV3 hard_sigmoid could be reimplemented using only keras.layers.

System information.
TensorFlow version: 2.9
Are you willing to contribute it (Yes/No) : Yes
Describe the feature and the current behavior/state.
Current hard_sigmoid implementation: https://github.com/keras-team/keras/blob/dee67880be30eb1a5c2dfc7b4e60b32cd4789fbe/keras/applications/mobilenet_v3.py#L559 directly uses tensorflow + and * ops. Perhaps it would be better to rewrite it in order to only use keras.layers API. It would be cleaner to have only keras.layers.Layer subclasses in the model and should simplify tasks like models rebuilding, nested models flattening  etc.
Will this change the current api? How?
No
Who will benefit from this feature?
Everyone who rebuilds model and does not want to create workaround to deal with both tf ops and Layer subclasses.
It could probably be easily reimplemented as follows:
def hard_sigmoid(x):
    x = Rescaling(scale=1.0, offset=3.0)(x)
    x = layers.ReLU(6.)(x)
    x = Rescaling(scale=1.0/6.0, offset=0.0)(x)
    return  x

@maciej3031,
Can you please share a reproducible code that supports your statement so that the issue can be easily understood?  Thank you!

When you want to rebuild any layer from the model from scratch i.e. the 4-th layer wich is keras.layers.core.tf_op_layer.TFOpLambda then you could want to do this like this:
from keras.applications.mobilenet_v3 import MobileNetV3Small
mnet = MobileNetV3Small()
mnet.layers[4].__class__(**mnet.layers[4].get_config())

However, you cannot do this wit keras.layers.core.tf_op_layer.TFOpLambda and you'll get an error.
If you i.e. replace:
def hard_sigmoid(x):
      return layers.ReLU(6.0)(x + 3.0) * (1.0 / 6.0)

with
def hard_sigmoid(x):
      x = Rescaling(scale=1.0, offset=3.0)(x)
      x = layers.ReLU(6.)(x)
      x = Rescaling(scale=1.0/6.0, offset=0.0)(x)
    return  x

Then it will replace + and * with Rescaling layer and above rebuilding code will work fine as the keras.layers.core.tf_op_layer.TFOpLambda  will be replaced with keras.layers.preprocessing.image_preprocessing.Rescaling.

@maciej3031 Thanks for the issue! Would you like to start a PR to make the change?
We will asl ensuring that the new implemenation can save and load successfully (not trigger any bug).


the html and markdown tags for table is incorrect

Create a table in google docs, click the Doc to Markdown add on and  view the output.
The tags are the same for Markdown and HTML and incorrect.

See #22 for more discussion about this issue.
All tables currently get converted to HTML (which is permissible in Markdown), since HTML can handle much more complex tables than Markdown table markup can handle.
If you have any tables, we note in the top comment that your tables will be in HTML (even if you're converting to Markdown.


Prevent the client from accidentally sending duplicate messages

Bug report and background discussion: https://chat.zulip.org/#narrow/stream/9-issues/topic/Duplicate.20sending.20bug/near/1883884
Based on the report, it seems that the client can end up sending a duplicate message in the course of re-trying its requests during network issues. Details are discussed around https://chat.zulip.org/#narrow/stream/9-issues/topic/Duplicate.20sending.20bug/near/1883898, but the summary is along the lines of:

Use local_id and queue_id as a unique identifier for the message the clients is trying to send; submit this identifier to the server in message send requests.
The server remembers this identifier when it sees the request and uses that to prevent duplicates if a retry request is made for the same (local_id, queue_id)

We can use transient storage like redis or memcached and possibly can implement this via the rate_limiter.py system.

I'm working on this


Sending data to companion computer

Hi. How are you planning to send data to computer from flight controller. Through UART connected to microusb?

Hi @tekjar, thanks for the question.
In the short term, I've created a bit bang serial crate which I am using to transmit debugging data from the flight controller to the development computer using one of the motor outputs. An example demonstrating this is available here.
I think the next step would be using the UART pins which are exposed through the USB connector to communicate serially (this would require a USB-serial converter as well on the development computer side). The final step would be implementing a USB stack in rust which would eliminate the need for the usb-serial converter and make the board show up as a serial port.
Now that I've got basic communication working well enough for debugging, my attention has shifted to working on the sensor fusion. But this communication stuff would be a great place for an additional contributor to start.

I would like to do the usb stuff but I have zero knowledge on how this works. Are there any references to start this work?
I'll start working on this on f3discovery

For the purposes of the betafpv-f3 there are two separate ways to go about this, with pros/cons to each.
UART using the pins exposed by the USB connector
I believe this would be the simplest to get working. Basically it would be to determine which UART is connected to the USB port and write an example which uses that for serial communication with the development PC. This work would be specific to the betafpv-f3 so you would have to have the board to work on this.
Serial over USB (implementing a USB stack in nostd Rust)
This would likely be the more challenging approach, but it would be more rewarding as well. The end goal here would be to implement a USB stack in nostd Rust, which would make the board look like a usb-serial adapter when connected to the computer. Work on this could be done on the f3discovery, using the usb user port. This issue, rust-embedded/wg#40, is probably the best starting point for information.


[Question] Show to sign a transaction by ICONex wallet

Hi,
I'm trying to request signing a transaction by ICONex wallet as: https://www.icondev.io/docs/chrome-extension-connect
const customEvent = new CustomEvent('ICONEX_RELAY_REQUEST', detail: {
    type: 'REQUEST_SIGNING',
    payload: {
        from: 'hx19870922...',
        hash: '0x13979...'
    }
});

The document mentioned that only signing tx hash. So, I took a look into the icon-sdk-js to find out how to build a transaction and get the txHash from it. The way I see is using sendTransaction method, but ONLY for signedTransaction which requires a Wallet instance.
// Returns the tx hash of transaction.
const txHash = await iconService.sendTransaction(signedTransaction).execute();

My questions are:

How can I build a Wallet instance from the privateKey which is retrieved  ICONex extension if using the sendTransaction method ?
Or, how can I get the txHash without using the sendTransaction method?

Hi,
Please refer to the documentation :
https://www.icondev.io/docs/how-to-generate-a-transaction-signature
There's no available public API in the SDK that will generate that txhash, you'll have to code it yourself, or reuse the internal methods of the SDK. See here:  https://github.com/icon-project/icon-sdk-js/blob/3ab30c0dbc2759cb480942b8463044fd0c89a703/lib/data/Util.js#L77

Thanks @ICONationDevTeam :)


helm lint wrongly fails

Output of helm version:
version.BuildInfo{Version:"v3.5.4", GitCommit:"1b5edb69df3d3a08df77c9902dc17af864ff05d1", GitTreeState:"dirty", GoVersion:"go1.16.3"}

Output of kubectl version:
Doesn't apply
Cloud Provider/Platform (AKS, GKE, Minikube etc.):
Doesn't apply
Problem
Since at least this new release, the attached helm chart fails to helm lint . --values values2.yaml
As I understand the schema it should though.
If I remove /oneOf/0 it fails, if I remove /oneOf/1 it works, giving me the impression that only one of them validates, as it should and I expect.
But when both are used, it fails.

When -f or --values is applied, the values are merged into each other. In other words, the properties in values2.yaml are merged and overwriting values in values.yaml. That would explain why the schema validation fails.
As a result, your computed values look like this by default:
><> helm install --dry-run . --generate-name --debug
[...]
COMPUTED VALUES:
mariadb:
  enabled: true
mysql:
  enabled: false
server:
  database: {}

And with values2.yaml merged in, your computed values now look like this:
><> helm install --dry-run . --generate-name --debug -f values2.yaml
[...]
COMPUTED VALUES:
mariadb:
  enabled: false
mysql:
  enabled: false
server:
  database:
    existing:
      host: host

Based on your schema, I'm assuming that you want to enable one or the other. To fix this, do not set both database values to false in values2.yaml. Instead set one to true.
You did mention though:

Since at least this new release,

So I tested this with Helm v3.4.2. I still received the same result.
><> ./linux-amd64/helm version
version.BuildInfo{Version:"v3.4.2", GitCommit:"23dd3af5e19a02d4f4baa5b2f242645a1a3af629", GitTreeState:"clean", GoVersion:"go1.14.13"}
><> ./linux-amd64/helm lint .
==> Linting .
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, 0 chart(s) failed
><> ./linux-amd64/helm lint . -f values2.yaml
==> Linting .
[INFO] Chart.yaml: icon is recommended
[ERROR] values.yaml: - (root): Must validate one and only one schema (oneOf)

Error: 1 chart(s) linted, 1 chart(s) failed

If you can determine when this behaviour might've changed, then we can analyze what might've caused the change in behaviour. But as far as I know this has been the expected behaviour since Helm 2.
Hope this helps.

It's intentionally either mariadb.enabled, mysql.enabled or server.database.existing.host;
(mariadb.enabled|mysql.enabled)|server.database.existing.host
Test matrix;

mysql.enabled
mariadb.enabled
server.database.existing.host
result

true
true
set
fail

true
true
not set
fail

true
false
set
fail

true
false
not set
success

false
true
set
fail

false
true
not set
success

false
false
set
success

false
false
not set
fail

And my testing with omitting one or the other /oneOf/s shows that, although only one of them work, both together don't, which doesn't make sense I think
I also found the last version in which this worked, it's 3.1.2
Using that version it works just as expected; if I change one or both of mariadb.enabled and mysql.enabled to true or remove server.database.existing.host it fails.

You can use the following script to verify;
for ma in true false; do
  for my in true false; do
    for host in host ''; do
      echo "mariadb: $ma, mysql: $my, host: $host"
      helm lint . --values /dev/stdin <<EOF &>/dev/null
mariadb:
  enabled: $ma
mysql:
  enabled: $my
server:
  database:
    existing:
      host: $host
EOF
      result=$?
      if ([ "$ma" = 'true' ] && [ "$my" = 'false' ] && [ "$host" = '' ]) ||
        ([ "$ma" = 'false' ] && [ "$my" = 'true' ] && [ "$host" = '' ]) ||
        ([ "$ma" = 'false' ] && [ "$my" = 'false' ] && [ "$host" = 'host' ]); then
        if [ $result = 0 ]; then
          echo 'valid 👍'
        else
          echo 'invalid 👎'
        fi
      else
        if [ $result = 1 ]; then
          echo 'invalid 👍'
        else
          echo "valid 👎"
        fi
      fi
    done
  done
done

Weirdly enough the false, false, host case is the only one the current helm fails
And true, true, host is the only one helm 3.1.2 fails 🙈

Do you got any updates on this?
Can I do something to help?

For what it's worth, Helm is using an unmaintained json schema library that hasn't been updated in 2 years https://github.com/xeipuuv/gojsonschema Doubt this issue is going to be addressed.

This is still relevant, please reopen


Add README section about the running cost of a VPN with this solution

It would be even nicer to have the info when creating the exit node


setattr works differently in python3

arg

Just out of curiosity what did you run into that setattr works differently?  The only thing I can think of is that the attribute name must be a str instead of bytes object but I'm curious what else there could be.

yah, cryptic message to myself because I didn't have time to investigate further during the workshop last week.  Anyways, I'm using setattr as part of a call to attach a user created function to an object that's already in existence , it happens here:
@classmethod
def _add_user_function(cls, func):
import types
return setattr(cls, func.name, types.MethodType(func, None, cls))
I think it works in python 2 because unbound methods are allowed....but not in python 3.
I've been home sick the last couple days, maybe I'll mess around with it today and see if I can come up with something better, and be less tricky for my own good.

fixed in merge with ginganb branch

So, what was the solution? Your initial "arg" got me curious.

Ooooo thx

Oh yeah, this isn't a difference in how setattr works at all but you figured that out.


Add Stream.filter to filter signals from the stream

Stream filter API should allow:
stream = StreamLSL(...).connect()
stream.filter(1., 100., picks="eeg")
stream.filter(1., 15., picks="ecg")
stream.notch_filter(np.arange(50, 150, 50), picks="all")

In practice, we have:

a ringbuffer of shape (n_samples, n_channels), already processed (re-referenced, filter, ..)
a new chunk of data of shape (n_samples, n_channels), raw

The API should support:

different filters applied to different channels -> how do we handle the delay introduced by the different filters?
more than one filter applied to a given channel -> does the order matter?

@larsoner I would like to start looking into this one, I remember you mentioned scipy functions to efficiently work on ringbuffer. Would you have some references or hints I could look into?

For realtime applications I would expect an IIR filter with scipy.signal.sosfilt to work reasonably well. Filter a given buffer, save the end filter states, next buffer you filter pass those to sosfilt, etc. and it's the same as filtering one long continuous signal instead of individual buffers. (And sosfilt is more stable than lfilter for higher filter orders.) Here's a tiny snippet I used once:
        if self._zi is None:
            self._zi = sosfilt_zi(sos)[:, :, np.newaxis] * data[:, :1].T
        data[:], self._zi = sosfilt(sos, data, zi=self._zi)

Great, that's similar to what I added a couple of years ago to the current viewer: https://github.com/mne-tools/mne-lsl/blob/95151593579e52f7c5018b4e726939cad9f83718/mne_lsl/stream_viewer/scope/scope_eeg.py#L122-L128

I just re-read the background on filtering tutorial, and IMO, if someone wants to apply 2 different filters to 2 different channels within the Stream, it falls upon him to handle the difference in filter response. Do you agree or do you think we should prevent some combinations/parameters (order, transition bandwidth, ..)?
In the case of 2 different filters applied to 2 different channels, is it possible to combined the sos and zi to then run a single call through sosfilt or should we split those?

Same questions in the case of 2 different filters applied to the same channels, e.g. bandpass (1, 100) Hz + notch (50, 100) Hz, can we combine the coefficients and call sosfilt only once?

Do people want different filtering on different channels? If they do in principle then I would from the start plan on having N different filters each with a set of picks, coefficients, and filter states. Iterating over the N shouldn't be too painful (N will probably never be greater than 10 or so, and only in the thousands would I expect Python call overhead to start to matter.)

Same questions in the case of 2 different filters applied to the same channels, e.g. bandpass (1, 100) Hz + notch (50, 100) Hz, can we combine the coefficients and call sosfilt only once?

For this you can, yeah. SOS is really a way of turning say a 10th order filter into 5 2nd order filters, then (by linearity) equivalently filtering sequentially rather than all at once, which is more numerically stable. So if you have multiple SOS filters you can just concatenate the coefficients and it should work.


ConnectionStateListener change

This PR is mostly a duplicate of PR https://github.com/Azure/azure-sdk-for-java/pull/14697 with few differences.
Implementation:
Each RntbdServiceEndpoint has a RntbdConnectionStateListener to keep tracking the partitionKeyRangeIdentity sets. New partitionKeyRangeIdentity will be added when RntbdServiceEndpoint.request() called.
When detecting a server is going down, we will remove all the effected PartitionKeyRangeIdentity from gateway address cache. Currently, only ClosedChannelException will trigger onConnectionEvent since this is more sure as a signal the server is going down.
Workflow:
Three major workflows could be triggered.

Server starts a graceful connection closure. (FIN)
Normal netty close channle flow will be triggered. (closeFuture, inactive, unregister). RntbdRequestManager will complete all pending requests for the channel with ClosedChannelException.

Server ungracefully close a connection (RST).
This will trigger netty exceptionCaught() flow. 'RntbdRequestManager.exceptionCaught()` will be called, and complete all pending requests for the channel with IOException. Channel will be closed.

When the server down, client trying to start a new connection:
Eventually get ConnectTimeOutException

Test:
Test33:
Did TCP packets capture for package upgrade and manually retart VM. Based on the tcp traces, the first and third workflow will be triggered.
Test Results from benchmark run:
Pending
Test Results from CTL run:
Pending

/azp run java - cosmos - tests

/azp run java - cosmos - tests

Test Result:

Adobe Tests (default config):


When pretrain VO model, loss reduce a few epochs, but immediately increase and remain.

Hi, thank you for the work.
I reproduced the code, it works well with your pretrained weights.(pretrain, train, test.py all ok)
But I'd like to try some different methods, so I didn't use it this time.
(haven't change the code, just didn't load the pretrained weights)
I was running the video_only pretrain.py
Number of Words = 2
My seed = 18547840
And the loss value looks tricky:
Step: 000 || Tr.Loss: 3.135768  Val.Loss: 2.934046 || Tr.CER: 0.977  Val.CER: 0.967 || Tr.WER: 1.022  Val.WER: 1.001
Step: 001 || Tr.Loss: 2.911791  Val.Loss: 2.872616 || Tr.CER: 0.928  Val.CER: 0.890 || Tr.WER: 1.013  Val.WER: 1.000
Step: 002 || Tr.Loss: 2.946833  Val.Loss: 3.349309 || Tr.CER: 0.917  Val.CER: 1.000 || Tr.WER: 1.012  Val.WER: 1.000
Step: 003 || Tr.Loss: 3.326881  Val.Loss: 3.314617 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 004 || Tr.Loss: 3.323197  Val.Loss: 3.303168 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 005 || Tr.Loss: 3.323742  Val.Loss: 3.327703 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 006 || Tr.Loss: 3.324991  Val.Loss: 3.318675 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 007 || Tr.Loss: 3.321263  Val.Loss: 3.317882 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 008 || Tr.Loss: 3.319875  Val.Loss: 3.322166 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 009 || Tr.Loss: 3.323132  Val.Loss: 3.320766 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 010 || Tr.Loss: 3.325111  Val.Loss: 3.319928 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 011 || Tr.Loss: 3.323602  Val.Loss: 3.306033 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 012 || Tr.Loss: 3.322382  Val.Loss: 3.324228 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 013 || Tr.Loss: 3.319179  Val.Loss: 3.308431 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 014 || Tr.Loss: 3.324116  Val.Loss: 3.316021 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
Step: 015 || Tr.Loss: 3.320856  Val.Loss: 3.307545 || Tr.CER: 1.000  Val.CER: 1.000 || Tr.WER: 1.000  Val.WER: 1.000
On step 1 and 2, the loss reduce to 2.9, but it goes back to 3.3 right next step and remains (it continue until step 130, then I stop it)
And the WER remains 1.00, too.
I found this situation a little different from #6
Wondering if this give you a clue to know how it happens, or how to avoid this issue?
Or if it's just a normal situation?
Thank you for your kindness.

Three things come to my mind which you can try:

Complete the training for num_words=2 even if the losses don't reduce. Continue the training for higher number of words and see if the losses reduce.
Try many vastly varying seed values.
Reduce the learning rate and see if that helps.

I am not sure if any of them will work, but you can give it a try.

Thank you for these suggestions.
I have tried all of them, and reducing the learning rate seems work for me!
And I'm trying to find a perfect learning rate, if there are any progress, I'll let you know.
Thank you again!


add support for Window::Focused/Unfocused events on macOS

trigger WindowEvent::Focused and WindowEvent::Unfocused events when the plugin window gains/loses focus. implemented by adding observers to NSNotificationCenter::defaultCenter() that listen to NSWindowDidBecomeKeyNotification and NSWindowDidResignKeyNotification notifications on the NSViews' window.
tested and confirmed to work in Live, Bitwig, FL Studio, Reaper and AudioPluginHost.

there was a slight oversight where the focus events were not sent correctly if the window contained other things besides just the NSView that houses the plugin. should be fixed now though, also added some comments for clarity.


Sort by key

Summary
Refactor for isort implementation. Closes #7738.
I introduced a NatOrdString and a NatOrdStr type to have a naturally ordered String and &str, and I pretty much went back to the original implementation based on module_key, member_key and sorted_by_cached_key from itertools. I tried my best to avoid unnecessary allocations but it may have been clumsy in some places, so feedback is appreciated! I also renamed the Prefix enum to MemberType (and made some related adjustments) because I think this fits more what it is, and it's closer to the wording found in the isort documentation.
I think the result is nicer to work with, and it should make implementing #1567 and the like easier :)
Of course, I am very much open to any and all remarks on what I did!
Test Plan

I didn't add any test, I am relying on the existing tests since this is just a refactor.

(Sorry for the delay. This is on me to review and merge, but I'd like to do further testing for correctness since it's a really important code path.)

Awesome :)
Absolutely no need to apologize, I totally understand and I'm very grateful that you took the time to look deeper into my proposal 🙏
I really appreciate that and I'm super excited this got merged! 😁
Now I can go back to implementing length sort ^^


Add addon version to api

Follow up from https://github.com/openshift/addon-operator/pull/143#discussion_r822685490

/lgtm


Why does .NET 6.0 say Microsoft.Build.NoTargets/3.3.0 requires .NETFramework,Version=v4.0 Developer Pack?

Steps to Reproduce
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.Build.NoTargets/3.3.0" InitialTargets="RunBeforeAnySsrsReport">
  <!-- ReSharper disable UnknownProperty -->
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <OutputPath>bin</OutputPath>
    <RestoreNoCache>True</RestoreNoCache>
  </PropertyGroup>

  <ItemGroup>
    <Content Include="RunBeforeAnySsrsReport.ps1" />
  </ItemGroup>

  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

  <Target Name="RunBeforeAnySsrsReport">
    <PropertyGroup>
      <PowerShellExe Condition=" '$(PowerShellExe)' == '' ">
        "C:\Program Files\PowerShell\7\pwsh.exe"
      </PowerShellExe>
      <ScriptLocation Condition=" '$(ScriptLocation)' == '' ">$(MSBuildProjectDirectory)\RunBeforeAnySsrsReport.ps1</ScriptLocation>
    </PropertyGroup>

    <Message Importance="High" Condition=" '$(PowerShellExe)' == '' " Text=" PowerShellExe not configured. ">
    </Message>
    <Message Importance="High" Condition=" '$(ScriptLocation)' == '' " Text=" ScriptLocation not configured. ">
    </Message>

    <PropertyGroup>
      <PwshCommand>pwsh.exe -NonInteractive -ExecutionPolicy Unrestricted -File "$(ScriptLocation)"</PwshCommand>
    </PropertyGroup>

    <Message Importance="High" Text=" $(PwshCommand) ">
    </Message>

    <Exec Command="$(PwshCommand)" ConsoleToMSBuild="true"  />
  </Target>
</Project>

Error
Severity	Code	Description	Project	File	Line	Suppression State
Error	MSB3644	The reference assemblies for .NETFramework,Version=v4.0 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks	PowerShellBuildProject	C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets	1220
Additional Context / Details
I uninstalled VS2019 and installed VS 2022.  Then I tried to get my SSRS projects working using the SSRS plug-in, and I happen to use Microsoft.Build.NoTargets to configure some InitialTargets for the SSRS Solution file.  The project builds successfully, but produces this rather annoying error.
I installed the .NET 4.8 Developer Pack, but this error persists.  I'm not sure why.

I suspect it might be because of the import to Microsoft.CSharp.targets:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

What happens if you remove that?  Do you know why that is there?

@jeffkl
I am not sure why I added it.  I probably was copy-pasting some example from GitHub.  When I first started using Microsoft.Targets.Nobuild i would use github code search to make sure I was using it incorrectly.


Add a notice that this is a beta version

Beta to be "the version" for a few months in case someone notices a cardinal issue etc.

link to github if someone wants to report a problem?

Resolved by adding a notice into the preambles on all pages where users fill in the form:
" NOTE: If you notice a bug, or have a suggestion for the improvemenet of this form, we'd be grateful if you posted an issue on GitHub: https://github.com/INCF/artem-is/"


Pool $maxSize is ignored

Just a typo in Pool::__construct()

Wow, thanks! That actually might have far-reaching effects with some other things using thread pools... in a good way though. :+1:


Add filename incrementor for secret filedrops.

Enhancement: Add filename incrementor for secret filedrops
We have added a function that appends a number to the filename if the file already exists in a secret filedrop.
This is useful if you want to upload a file with the same name multiple times.
refs https://github.com/owncloud/ocis/issues/8291

@micbar we implemented this in ocdav ... I'm not sure if this needs to move to the storage provider. It would need to have a way to find out if the request is made to a public file drop. In ocdav we use the token stat permission set to make that decision. Which feels fragile, but that is what we can determine. Hm we might check the share permissions in dav.go and store them in the context ... then tus.go and dav.go can read the share info 🤔


Fixed method call and arguments passed to be consistent with other va…

…lidators

Q
A

Is bugfix?
yes

New feature?
no

Breaks BC?
no

Tests pass?
yes/no

Merged. Thanks!


Add metrics for gRPC requests between metrics-api-server and operator

Proposal
For observability reasons, it would be nice to have metrics exposed to report on success/failure of gRPC requests between the metrics-api-server and operator.
Use-Case
We'd like to alert when theres a drop in the success rate in the gRPC requests, and we'd like to observe from the perspective of both the client and the server.
Is this a feature you are interested in implementing yourself?
Yes
Anything else?
Slack thread: https://kubernetes.slack.com/archives/CKZJ36A5D/p1707521775263629

FYI, incorrectly marked that I wasn't interested in making this change. I'm planning on making this change myself :)


adding necessary structure

This pull request is sound and checks the requirements for the Data Science template I need.


tests: counter: counter_basic_api: Added testcase wihtout alarms

Some counter drivers do not support alarms, so I added testcase which starts the counter, checks if the value is in range after certain time and stops the counter, to check if the counter is running correctly.

The rtc timer did not count. The CI fail is not caused by the added test.

I found out that the rtc timer (counter_get_frequency) reports 32768Hz, but in 100 us there are only 3 ticks so it runs at 32Hz. Probably a simulator issue. This applies for the failing nrf52_bsim.

We've reworked the test and managed to get the range to 10% of the supposed tick value. More precision will work on HW, but simulated tests will not pass. @hakehuang

counter_start() has undefined behaviour, which this test relies on. It assumes:

counter_start() starts at zero.
Calling counter_start() will restart a running counter to zero.

The documentation of the API doesn't define this one way or another, but for some drivers (e.g. drivers/counter/counter_rpi_pico_timer.c:counter_rpi_pico_timer_start) this isn't the case, and running test_valid_function_without_alarm against that driver will failure. I suspect other drivers will similarly fail.
I think at least the documentation of the API needs to define the expected behaviour, and driver(s) will need to be updated to match.


Add support for decoding and sending to subaddresses

Sending is the one that's really needed at first (ie, someone sends a subaddress for payment). Receiving is optional, since it's the recipient's choice.

fyi https://github.com/moneroexamples/openmonero/commit/23ca56fe05bebdfa2002070d36b90f371f0bccf1#commitcomment-25578957

@cryptochangements34 is the man: https://github.com/mymonero/mymonero-core-js/pull/10


Introduce Nifi registry for the default blueprint

I'm a bit late to review these changes, but verified that NiFi and NiFi Registry are working together.  I registered the instance of NiFi Registry in NiFi, created a bucket in NiFi Registry, and then created a process group in NiFi and was able to add it to NiFi Registry's version control.
+1 LGTM!


Error: Initialization failed     at new DiffieHellman (crypto.js:438:21)

I'm using mup for the first time, and I frequently and intermittently get the following error when using mup deploy to my Ubuntu 14.10 32 server at digital ocean.
Error: Initialization failed at new DiffieHellman (crypto.js:438:21)
With no changes to my meteor project or mup.json file, it resolves sometimes by just running mup deploy again, when that fails sometimes by mup stop followed by mup deploy, and when that fails by running mup setup and then mup deploy again.  Persistence with these three eventually pays off with a successful deployment, but it ought to work consistently.
Has anyone else encountered this problem?  Any suggestions?

I was using node >= 0.11.x and that caused the problem.  Reverting to 0.10.36 fixed it.


Is there a way to specify an HTTP header to be included in a request?

I can't find any examples of this.
Thanks.

@MartinDelVecchio

Did you mean a header parameter declared in Swagger (Open API) spec, or not ?
Which header do you want to set ?

I guess you mean headers not declared in spec, then the answer is no, and I can add some way to specify them.

Ah, there is my solution.  This is for our API, and I forgot that I could just add an optional header to our Swagger.
So no need for any work on your part; the Swagger standard has what I need.
Thanks!

I was able to add a header parameter to my Swagger, and set it via the pyswagger API.
But now I need to do the same thing for another Swagger, which I do not control.
So I would like to renew my request for a way to specify an arbitrary HTTP header to be included in the request.
I am currently creating an app and a client this way:
    self.app = pyswagger.App._create_ (swagger_location)

    self.auth = pyswagger.Security (self.app)
    self.client = Client (self.auth, send_opt={'verify': False})

And then executing the operation with this call:
    response = self.client.request (self.app.op[operation_id](**kwargs), opt=opt)

I see that the requet() method does not allow me to specify an HTTP header to include.  If there is a different way to use pyswagger that would allow me to add a header, I will gladly use it.
But if there is not, I would appreciate a way to do so.  Perhaps something like this:
response = self.client.request (self.app.opoperation_id, opt=opt, _headers={"X-My-Header-Name": "Header.Value"})
Thank you.

@MartinDelVecchio I plan to add an additional parameter headers when making request:
# valid headers:
# - {'X-TEST-HEADER': 'aaa'}
# - [('X-TEST-HEADER', 'aaa'), ('X-TEST-HEADER', 'bbb')]  <-- for multiple values for one key
self.client.request (self.app.op[operation_id](**kwargs), opt=opt, headers=headers)

The fix is still ongoing, would let you know once finished.

Thank you!

@MartinDelVecchio  the functionality is added in v0.8.33 and the related document is here, please let me know if it doesn't work for you.

I finally got a chance to test this today, and it works as advertised.
Thanks again for being so responsive!


Added whois features.

Output now includes ASN and whois description field.

First, thank you for your interest in the project and your contribution.
Have you considered the following issues?

Many WHOIS servers limit the number of queries. Depending on the domain name length, dnstwist can perform hundreds of queries causing a temporary ban to the service. Not to mention that your code is not optimized and performs two queries for each domain name variation ;)
WHOIS runs over TCP which is slower compared to UDP.

With this in mind, I'm skeptical about adding this feature.

Your points are valid. I pushed a new change that makes whois an option (-w) and only does it once per domain. Let me know what you think.


Configuration rename

When i rename my .conf file in web interface, db data corrupts and i get my peers with lost private keys and names, also if conf file was in autostart, it stays here forewer (you cant turn it off or delete it)

Hi! Could you please let me know what did you rename it from and to?

i renamed config from Private to Private-WG. i configured autostart from ui

may be this information helps: if i rename config from Personal to wg-Personal all fine, but if i rename Personal to Personal-WG db crashes all peers became untitled and loose private keys

Hmm please allow more time for me to investigate this.

Hi! Sorry for the late reply. I couldn't recreate the same issue on my side.. do you mind running it in debug mode: ./wgd.sh debug and do the steps you mentioned above and see if the issue still persist?

ok, later i'll try it. where log files is?

If you run it with ./wgd.sh start, then log files will be under ./log folder


Remove acronym "tx" and replace with "transaction" on Stacks.js FAQ page

Referencing Priority 2 - grammar & language; avoiding industry jargon

FIxed by this  PR on Stacks.js repo.

https://github.com/hirosystems/docs/pull/558


Closes: #1

Updated validations.py python script
Fixes #<issue_number_goes_here>

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

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

@googlebot I signed it!


Proposed change: have stack_bands() return xarray.Dataset with common band names

@jsignell did some awesome work putting together the stack_bands() in https://github.com/pangeo-data/intake-stac/pull/19
I'd like to propose a few modifications (building off examples/planet_disaster_data.ipynb) and can follow up with a pull request:

Return common_name labels if they are used to select bands (notice 'B4' and 'B5') in DataArray
landsat['LC80110312014230LGN00'].stack_bands(['red', 'nir']).to_dask()

<xarray.DataArray (band: 2, y: 7941, x: 7811)>
dask.array<concatenate, shape=(2, 7941, 7811), dtype=uint16, chunksize=(1, 7941, 7811), chunktype=numpy.ndarray>
Coordinates:
  * y        (y) float64 4.742e+06 4.742e+06 4.742e+06 ... 4.504e+06 4.504e+06
  * x        (x) float64 3.183e+05 3.183e+05 3.184e+05 ... 5.526e+05 5.526e+05
  * band     (band) <U2 'B4' 'B5'

Return an xarray DataSet instead of DataArray by default (da.to_dataset(dim='band')), so we end up with this:

<xarray.Dataset>
Dimensions:  (x: 7811, y: 7941)
Coordinates:
  * y        (y) float64 4.742e+06 4.742e+06 4.742e+06 ... 4.504e+06 4.504e+06
  * x        (x) float64 3.183e+05 3.183e+05 3.184e+05 ... 5.526e+05 5.526e+05
Data variables:
    red       (y, x) uint16 dask.array<chunksize=(7941, 7811), meta=np.ndarray>
    nir       (y, x) uint16 dask.array<chunksize=(7941, 7811), meta=np.ndarray>

@scottyhq - these sound like reasonable propositions. I'm not up to speed on STAC's use of common_name labels but this does sound like a useful feature to add. On the subject of returning a dataset vs. dataarray, I think there are going to be advantages to both approaches. I think its worth prototyping both of these so a PR sounds like a good idea.