Some problems I encountered during connecting UE4.27 and MuJoCo

Dear Mr.Hoang,
This URoboViz is a really wonderful project, my final thesis was inspired by this project a lot, I would like to express my heartfelt thanks and compliment.
But I have some problems during connecting UE4.27 and MuJoCo, I am a beginner to UE4 and ROS, it would be very appreciated that you can give me a biref explanation.

In your project urdf_importer, in Quickstart.mp4 video:
https://github.com/HoangGiang93/urdf_importer
you typed:
xacro /opt/ros/noetic/share/pr2_description/robots/pr2.urdf.xacro > pr2.urdf
in the Terminal, but I checked this dictionary, the file pr2_description and its subdictionary does not exist. Where did you find this file? My ROS distro is as same as you(noetic).

In this Connect with other physic enginehttps://github.com/HoangGiang93/URoboViz/wiki/4.-Connect-with-other-physics-engine
in third section, you wrote:
Launch the corresponding robot, in this example roslaunch tiago_mujoco tiago_display.launch
Is this example stand for pr2.urdf which is mentioned before? But in Unreal Engine we use FBX format, hier is URDF format. How can these two connect each other?

As I said before I am not familiar with ROS and UE4. It would be really appreciated that you can help me get better understanding.
Thanks in advance.

Thank you for your nice comment, I'm glad to answer your issue:

This is a standard ROS package fom ROS, therefore you can install this package from apt by command
sudo apt install ros-noetic-pr2-description
Unreal Engine use FBX format, but we have URDF format, that's why you need that urdf_importer to convert the robot from URDF format to FBX format. Please watch that video till the end so you can see the result. You could find more robots in URDF from my other packages https://github.com/HoangGiang93/mujoco_robots

Thanks for your kindness and reply!
Regarding the second question, I was wondering that the if the file tiago_display.launch refers to the pr2 robot,cause you wrote Launch the corresponding robot , I want to make sure the corresponding robot is the pr2 robot.

No it's not, in the example I showed is the tiago_robot. I didn't include any launch file for the pr2 robot. You can set it up and see how it goes.
If you want to setup the tiago robot, all you need to do is to convert the URDF of tiago and convert to FBX using my blender add-on. And then import it in Unreal Engine and follow the tutorials.

Everything understood !!
Thanks for your reply and patience again!!!
Hope you have a nice night

Hi Mr.Hoang
I would like to make sure that I convert the right corresponding robot for Tiago.
First, I found the Tiago model in /home/MyName/mujoco_ws/src/mujoco_robots/tiago/tiago_mujoco/model/tiago.urdf
then I convert it in FBX format
then I follow the tutorials, but when I launch roslaunch tiago_mujoco tiago_display.launch it seems there is no connection between UE4 and MuJoCo and a error:
[tiago/rqt_robot_steering-5] process has died [pid 12520, exit code -6, cmd /opt/ros/noetic/lib/rqt_robot_steering/rqt_robot_steering __name:=rqt_robot_steering __log:=/home/MyName/.ros/log/fee0bf64-ea04-11ed-8b5b-2b88bc8805ec/tiago-rqt_robot_steering-5.log]. log file: /home/dacheng/.ros/log/fee0bf64-ea04-11ed-8b5b-2b88bc8805ec/tiago-rqt_robot_steering-5*.log
so I want to make sure if I converted the correct tiago.urdf...
Thanks again for your patience

If that is the only error your have then it seems like you don't have the package for the rqt_robot_steering node. You can install that from apt using this command in terminal sudo apt install ros-noetic-rqt-robot-steering.
Regardings the connection, if you can start the simulation and see it working, then the problem is only about the connection. I forgot to mention that to establish the ROS connection, you need to launch a rosbridge server. You can install that from apt using this command in terminal sudo apt install ros-noetic-rosbridge-suite.
After installing the rosbridge_server package, run this launch file before starting Unreal simulation:
roslaunch rosbridge_server rosbridge_websocket.launch port:=9393

Then you could start the Unreal simulation and it will visualize what MuJoCo does. Keep in mind that after starting the rosbridge, you can start and stop Unreal simulation whenever you want.
If the connection is still not established, perhaps you could run rostopic list first before starting Unreal simulation to check if all the ROS topic names are correctly written in ROSManager from your RoboManager Actor in the scene. If the ROS topic names are correct and it still not moves, then try to run rostopic echo <topic_name> to see if any signals come from MuJoCo, like rostopic echo /<namespace>/joint_states. If the signals are published but the robot still not moves, try to command rostopic info <topic_name> to check if there are subscribers from Unreal simulation via rosbridge server. If all the connections are correctly defined and the message are there but the robot still not moves, try to restart everything.
Hope that I cover every scenarios that could happen ;)

Thanks for your detailed explanation! You really help me a lot, please let me buy a coffee for you...
After I run sudo apt install ros-noetic-rqt-robot-steering,it shows I already installed the package:
Reading package lists... Done
Building dependency tree
Reading state information... Done
ros-noetic-rqt-robot-steering is already the newest version (0.5.12-1focal.20230215.222145).
0 upgraded, 0 newly installed, 0 to remove and 21 not upgraded.

and this error still exist:
[tiago/rqt_robot_steering-5] process has died [pid 12520, exit code -6, cmd /opt/ros/noetic/lib/rqt_robot_steering/rqt_robot_steering __name:=rqt_robot_steering __log:=/home/MyName/.ros/log/fee0bf64-ea04-11ed-8b5b-2b88bc8805ec/tiago-rqt_robot_steering-5.log]. log file: /home/MyName/.ros/log/fee0bf64-ea04-11ed-8b5b-2b88bc8805ec/tiago-rqt_robot_steering-5*.log
After I installed rosbridge_server package, the connection is still not established, and I run rostopic list, the ouput is:
/```
rosout
/rosout_agg
The ROS topic names are not correctly written in ROSManager, though I added the correct ROS subscriber.
Thanks for you help anyway, please give a chance to buy you a cup of coffee.

that's weird :/ it looks like nothing is running on your computer. Did the simulation run? Can you see something pop up? It might be better if you can post me a screenshot

that's weird :/ it looks like nothing is running on your computer. Did the simulation run? Could you see something pop up? It might be better if you can post me a scr
Screencast from 04.05.2023 15:54:34.webm
eenshot
[Uploading Screencast from
[Screencast from 04.0
Screencast from 04.05.2023 15:45:18.webm
5.2023 15:49:40.webm](https://user-images.githubusercontent.com/82002084/236230775-9141878a-c9b4-4cd9-9d3c-01ff3593aa6a.webm)
Screencast from 04.05.2023 16:00:00.webm

04.05.2023 15:45:18.webm…]()
4 videos is attached

1.webm

2.webm

3.webm

4.webm

You have a very weird computer ;__; normally it should show the topic from rosbridge

After you run mujoco, can you run rostopic list in a new terminal again? Also maybe try echo $ROS_MASTER_URI
Can you enlarge the terminal more so I could see all the log and errors it show? Or maybe copy down in the chat

5.zip
ROSbridge log:
`dacheng@dacheng-Legion-5-Pro-16ACH6H:~$ roslaunch rosbridge_server rosbridge_websocket.launch port:=9393
... logging to /home/dacheng/.ros/log/b6771c68-eabe-11ed-874f-81090c3b8986/roslaunch-dacheng-Legion-5-Pro-16ACH6H-7152.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://dacheng-Legion-5-Pro-16ACH6H:44813/
SUMMARY
PARAMETERS

/rosapi/params_glob: [*]
/rosapi/services_glob: [*]
/rosapi/topics_glob: [*]
/rosbridge_websocket/address: <IP_ADDRESS>
/rosbridge_websocket/authenticate: False
/rosbridge_websocket/bson_only_mode: False
/rosbridge_websocket/delay_between_messages: 0
/rosbridge_websocket/fragment_timeout: 600
/rosbridge_websocket/max_message_size: None
/rosbridge_websocket/params_glob: [*]
/rosbridge_websocket/port: 9393
/rosbridge_websocket/retry_startup_delay: 5
/rosbridge_websocket/services_glob: [*]
/rosbridge_websocket/topics_glob: [*]
/rosbridge_websocket/unregister_timeout: 10
/rosbridge_websocket/use_compression: False
/rosbridge_websocket/websocket_external_port: None
/rosbridge_websocket/websocket_ping_interval: 0
/rosbridge_websocket/websocket_ping_timeout: 30
/rosdistro: noetic
/rosversion: 1.16.0

NODES
/
rosapi (rosapi/rosapi_node)
rosbridge_websocket (rosbridge_server/rosbridge_websocket)
ROS_MASTER_URI=http://localhost:11311
process[rosbridge_websocket-1]: started with pid [7196]
process[rosapi-2]: started with pid [7197]
:0: UserWarning: You do not have a working installation of the service_identity module: 'No module named 'service_identity''.  Please install it from https://pypi.python.org/pypi/service_identity and make sure all of its dependencies are satisfied.  Without the service_identity module, Twisted can perform only rudimentary TLS client hostname verification.  Many valid certificate/hostname mappings may be rejected.
/opt/ros/noetic/lib/rosbridge_server/rosbridge_websocket:41: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
from distutils.version import LooseVersion
2023-05-04 23:06:27+0200 [-] Log opened.
2023-05-04 23:06:28+0200 [-] registered capabilities (classes):
2023-05-04 23:06:28+0200 [-]  - <class 'rosbridge_library.capabilities.call_service.CallService'>
2023-05-04 23:06:28+0200 [-]  - <class 'rosbridge_library.capabilities.advertise.Advertise'>
2023-05-04 23:06:28+0200 [-]  - <class 'rosbridge_library.capabilities.publish.Publish'>
2023-05-04 23:06:28+0200 [-]  - <class 'rosbridge_library.capabilities.subscribe.Subscribe'>
2023-05-04 23:06:28+0200 [-]  - <class 'rosbridge_library.capabilities.defragmentation.Defragment'>
2023-05-04 23:06:28+0200 [-]  - <class 'rosbridge_library.capabilities.advertise_service.AdvertiseService'>
2023-05-04 23:06:28+0200 [-]  - <class 'rosbridge_library.capabilities.service_response.ServiceResponse'>
2023-05-04 23:06:28+0200 [-]  - <class 'rosbridge_library.capabilities.unadvertise_service.UnadvertiseService'>
`
UnrealEngine log:
LogWorld: BeginTearingDown for /Game/StarterContent/Maps/UEDPIE_0_Minimal_Default
LogWorld: UWorld::CleanupWorld for Minimal_Default, bSessionEnded=true, bCleanupResources=true
LogSlate: InvalidateAllWidgets triggered.  All widgets were invalidated
LogPlayLevel: Display: Shutting down PIE online subsystems
LogSlate: InvalidateAllWidgets triggered.  All widgets were invalidated
LogAudio: Display: Audio Device unregistered from world 'None'.
LogSlate: Updating window title bar state: overlay mode, drag disabled, window buttons hidden, title bar hidden
LogUObjectHash: Compacting FUObjectHashTables data took   0.29ms
LogPlayLevel: Display: Destroying online subsystem :Context_2
LogDebuggerCommands: Repeating last play command: Selected Viewport
LogPlayLevel: PlayLevel: No blueprints needed recompiling
PIE: New page: PIE session: Minimal_Default (May 5, 2023, 1:04:29 AM)
LogPlayLevel: Creating play world package: /Game/StarterContent/Maps/UEDPIE_0_Minimal_Default
LogPlayLevel: PIE: StaticDuplicateObject took: (0.004082s)
LogPlayLevel: PIE: Created PIE world by copying editor world from /Game/StarterContent/Maps/Minimal_Default.Minimal_Default to /Game/StarterContent/Maps/UEDPIE_0_Minimal_Default.Minimal_Default (0.004149s)
LogSubsystemCollection: Failed to initialize subsystem dependency (WorldPartitionSubsystem)
LogChaos: FPhysicsSolverBase::AsyncDt:-1.000000
LogAIModule: Creating AISystem for world Minimal_Default
LogPlayLevel: PIE: World Init took: (0.000758s)
LogUObjectHash: Compacting FUObjectHashTables data took   0.37ms
LogAudio: Display: Creating Audio Device:                 Id: 3, Scope: Unique, Realtime: True
LogAudioMixer: Display: Audio Mixer Platform Settings:
LogAudioMixer: Display:     Sample Rate:                          48000
LogAudioMixer: Display:     Callback Buffer Frame Size Requested: 1024
LogAudioMixer: Display:     Callback Buffer Frame Size To Use:    1024
LogAudioMixer: Display:     Number of buffers to queue:           2
LogAudioMixer: Display:     Max Channels (voices):                0
LogAudioMixer: Display:     Number of Async Source Workers:       0
LogAudio: Display: AudioDevice MaxSources: 32
LogAudio: Display: Audio Spatialization Plugin: None (built-in).
LogAudio: Display: Audio Reverb Plugin: None (built-in).
LogAudio: Display: Audio Occlusion Plugin: None (built-in).
LogAudioMixerSDL: Display: Initialized SDL using pulseaudio platform API backend.
LogAudioMixer: Display: Initializing audio mixer using platform API: 'SDL2'
LogAudioMixerSDL: Opening default audio device (device index -1)
LogAudioMixer: Display: Using Audio Hardware Device Default Audio Device
LogAudioMixer: Display: Initializing Sound Submixes...
LogAudioMixer: Display: Creating Master Submix 'MasterSubmixDefault'
LogAudioMixer: Display: Creating Master Submix 'MasterReverbSubmixDefault'
LogAudioMixer: Display: Output buffers initialized: Frames=1024, Channels=6, Samples=6144, InstanceID=3
LogAudioMixer: Display: Starting AudioMixerPlatformInterface::RunInternal(), InstanceID=3
LogInit: FAudioDevice initialized.
LogAudio: Display: Audio Device (ID: 3) registered with world 'Minimal_Default'.
LogLoad: Game class is 'GameModeBase'
LogWorld: Bringing World /Game/StarterContent/Maps/UEDPIE_0_Minimal_Default.Minimal_Default up for play (max tick rate 0) at 2023.05.04-23.04.29
LogWorld: Bringing up level for play took: 0.001339
LogOnline: OSS: Created online subsystem instance for: :Context_3
LogROS: Error: [OnError] Error in Websocket.
PIE: Server logged in
PIE: Play in editor total start time 0.099 seconds.
LogROS: Error: [OnError] Error in Websocket.
LogROS: Error: [Run] Could not connect to the rosbridge server (IP <IP_ADDRESS>, port 9393)!
LogROS: Error: [Run] Could not connect to the rosbridge server (IP <IP_ADDRESS>, port 9393)!
LogSlate: Updating window title bar state: overlay mode, drag disabled, window buttons hidden, title bar hidden
LogWorld: BeginTearingDown for /Game/StarterContent/Maps/UEDPIE_0_Minimal_Default
LogWorld: UWorld::CleanupWorld for Minimal_Default, bSessionEnded=true, bCleanupResources=true
LogSlate: InvalidateAllWidgets triggered.  All widgets were invalidated
LogPlayLevel: Display: Shutting down PIE online subsystems
LogSlate: InvalidateAllWidgets triggered.  All widgets were invalidated
LogSlate: Updating window title bar state: overlay mode, drag disabled, window buttons hidden, title bar hidden
LogUObjectHash: Compacting FUObjectHashTables data took   0.34ms
LogPlayLevel: Display: Destroying online subsystem :Context_3
LogDebuggerCommands: Repeating last play command: Selected Viewport
LogPlayLevel: PlayLevel: No blueprints needed recompiling
PIE: New page: PIE session: Minimal_Default (May 5, 2023, 1:06:35 AM)
LogPlayLevel: Creating play world package: /Game/StarterContent/Maps/UEDPIE_0_Minimal_Default
LogPlayLevel: PIE: StaticDuplicateObject took: (0.003730s)
LogPlayLevel: PIE: Created PIE world by copying editor world from /Game/StarterContent/Maps/Minimal_Default.Minimal_Default to /Game/StarterContent/Maps/UEDPIE_0_Minimal_Default.Minimal_Default (0.003792s)
LogSubsystemCollection: Failed to initialize subsystem dependency (WorldPartitionSubsystem)
LogChaos: FPhysicsSolverBase::AsyncDt:-1.000000
LogAIModule: Creating AISystem for world Minimal_Default
LogPlayLevel: PIE: World Init took: (0.000808s)
LogUObjectHash: Compacting FUObjectHashTables data took   0.38ms
LogAudio: Display: Creating Audio Device:                 Id: 4, Scope: Unique, Realtime: True
LogAudioMixer: Display: Audio Mixer Platform Settings:
LogAudioMixer: Display:     Sample Rate:                          48000
LogAudioMixer: Display:     Callback Buffer Frame Size Requested: 1024
LogAudioMixer: Display:     Callback Buffer Frame Size To Use:    1024
LogAudioMixer: Display:     Number of buffers to queue:           2
LogAudioMixer: Display:     Max Channels (voices):                0
LogAudioMixer: Display:     Number of Async Source Workers:       0
LogAudio: Display: AudioDevice MaxSources: 32
LogAudio: Display: Audio Spatialization Plugin: None (built-in).
LogAudio: Display: Audio Reverb Plugin: None (built-in).
LogAudio: Display: Audio Occlusion Plugin: None (built-in).
LogAudioMixerSDL: Display: Initialized SDL using pulseaudio platform API backend.
LogAudioMixer: Display: Initializing audio mixer using platform API: 'SDL2'
LogAudioMixerSDL: Opening default audio device (device index -1)
LogAudioMixer: Display: Using Audio Hardware Device Default Audio Device
LogAudioMixer: Display: Initializing Sound Submixes...
LogAudioMixer: Display: Creating Master Submix 'MasterSubmixDefault'
LogAudioMixer: Display: Creating Master Submix 'MasterReverbSubmixDefault'
LogAudioMixer: Display: Output buffers initialized: Frames=1024, Channels=6, Samples=6144, InstanceID=4
LogAudioMixer: Display: Starting AudioMixerPlatformInterface::RunInternal(), InstanceID=4
LogInit: FAudioDevice initialized.
LogAudio: Display: Audio Device (ID: 4) registered with world 'Minimal_Default'.
LogLoad: Game class is 'GameModeBase'
LogWorld: Bringing World /Game/StarterContent/Maps/UEDPIE_0_Minimal_Default.Minimal_Default up for play (max tick rate 0) at 2023.05.04-23.06.35
LogWorld: Bringing up level for play took: 0.001266
LogOnline: OSS: Created online subsystem instance for: :Context_4
PIE: Server logged in
PIE: Play in editor total start time 0.106 seconds.
LogROS: Error: [OnError] Error in Websocket.
LogROS: Error: [OnError] Error in Websocket.
LogROS: Error: [Run] Could not connect to the rosbridge server (IP <IP_ADDRESS>, port 9393)!
LogROS: Error: [Run] Could not connect to the rosbridge server (IP <IP_ADDRESS>, port 9393)!
LogViewport: Scene viewport resized to 1152x1204, mode Windowed.

rostopic list log(after run roslaunch tiago_mujoco tiago_display.launch):
dacheng@dacheng-Legion-5-Pro-16ACH6H:~$ rostopic list /clicked_point /initialpose /move_base_simple/goal /mujoco/object_joint_states /mujoco/object_states /mujoco/robot_joint_states /mujoco/sensors_3D /mujoco/visualization_marker_array /mujoco/world_joint_states /rosout /rosout_agg /tf /tf_static /tiago/base_footprint /tiago/cmd_vel /tiago/joint_states
after run roslaunch tiago_mujoco tiago_display.launch:
`dacheng@dacheng-Legion-5-Pro-16ACH6H:~$ roslaunch tiago_mujoco tiago_display.launch
... logging to /home/dacheng/.ros/log/b6771c68-eabe-11ed-874f-81090c3b8986/roslaunch-dacheng-Legion-5-Pro-16ACH6H-7293.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://dacheng-Legion-5-Pro-16ACH6H:39887/
SUMMARY
PARAMETERS

/rosdistro: noetic
/rosversion: 1.16.0
/tiago/arm_left_controller/constraints/arm_left_1_joint/goal: 0.02
/tiago/arm_left_controller/constraints/arm_left_2_joint/goal: 0.02
/tiago/arm_left_controller/constraints/arm_left_3_joint/goal: 0.02
/tiago/arm_left_controller/constraints/arm_left_4_joint/goal: 0.02
/tiago/arm_left_controller/constraints/arm_left_5_joint/goal: 0.02
/tiago/arm_left_controller/constraints/arm_left_6_joint/goal: 0.02
/tiago/arm_left_controller/constraints/arm_left_7_joint/goal: 0.02
/tiago/arm_left_controller/constraints/goal_time: 0.6
/tiago/arm_left_controller/constraints/stopped_velocity_tolerance: 5.0
/tiago/arm_left_controller/gains/arm_left_1_joint/d: 50
/tiago/arm_left_controller/gains/arm_left_1_joint/i: 100
/tiago/arm_left_controller/gains/arm_left_1_joint/p: 2000
/tiago/arm_left_controller/gains/arm_left_2_joint/d: 50
/tiago/arm_left_controller/gains/arm_left_2_joint/i: 100
/tiago/arm_left_controller/gains/arm_left_2_joint/p: 2000
/tiago/arm_left_controller/gains/arm_left_3_joint/d: 50
/tiago/arm_left_controller/gains/arm_left_3_joint/i: 100
/tiago/arm_left_controller/gains/arm_left_3_joint/p: 2000
/tiago/arm_left_controller/gains/arm_left_4_joint/d: 50
/tiago/arm_left_controller/gains/arm_left_4_joint/i: 100
/tiago/arm_left_controller/gains/arm_left_4_joint/p: 2000
/tiago/arm_left_controller/gains/arm_left_5_joint/d: 50
/tiago/arm_left_controller/gains/arm_left_5_joint/i: 100
/tiago/arm_left_controller/gains/arm_left_5_joint/p: 2000
/tiago/arm_left_controller/gains/arm_left_6_joint/d: 50
/tiago/arm_left_controller/gains/arm_left_6_joint/i: 100
/tiago/arm_left_controller/gains/arm_left_6_joint/p: 2000
/tiago/arm_left_controller/gains/arm_left_7_joint/d: 50
/tiago/arm_left_controller/gains/arm_left_7_joint/i: 100
/tiago/arm_left_controller/gains/arm_left_7_joint/p: 2000
/tiago/arm_left_controller/joints: ['arm_left_1_join...
/tiago/arm_left_controller/type: effort_controller...
/tiago/arm_right_controller/constraints/arm_right_1_joint/goal: 0.02
/tiago/arm_right_controller/constraints/arm_right_2_joint/goal: 0.02
/tiago/arm_right_controller/constraints/arm_right_3_joint/goal: 0.02
/tiago/arm_right_controller/constraints/arm_right_4_joint/goal: 0.02
/tiago/arm_right_controller/constraints/arm_right_5_joint/goal: 0.02
/tiago/arm_right_controller/constraints/arm_right_6_joint/goal: 0.02
/tiago/arm_right_controller/constraints/arm_right_7_joint/goal: 0.02
/tiago/arm_right_controller/constraints/goal_time: 0.6
/tiago/arm_right_controller/constraints/stopped_velocity_tolerance: 5.0
/tiago/arm_right_controller/gains/arm_right_1_joint/d: 50
/tiago/arm_right_controller/gains/arm_right_1_joint/i: 100
/tiago/arm_right_controller/gains/arm_right_1_joint/p: 2000
/tiago/arm_right_controller/gains/arm_right_2_joint/d: 50
/tiago/arm_right_controller/gains/arm_right_2_joint/i: 100
/tiago/arm_right_controller/gains/arm_right_2_joint/p: 2000
/tiago/arm_right_controller/gains/arm_right_3_joint/d: 50
/tiago/arm_right_controller/gains/arm_right_3_joint/i: 100
/tiago/arm_right_controller/gains/arm_right_3_joint/p: 2000
/tiago/arm_right_controller/gains/arm_right_4_joint/d: 50
/tiago/arm_right_controller/gains/arm_right_4_joint/i: 100
/tiago/arm_right_controller/gains/arm_right_4_joint/p: 2000
/tiago/arm_right_controller/gains/arm_right_5_joint/d: 50
/tiago/arm_right_controller/gains/arm_right_5_joint/i: 100
/tiago/arm_right_controller/gains/arm_right_5_joint/p: 2000
/tiago/arm_right_controller/gains/arm_right_6_joint/d: 50
/tiago/arm_right_controller/gains/arm_right_6_joint/i: 100
/tiago/arm_right_controller/gains/arm_right_6_joint/p: 2000
/tiago/arm_right_controller/gains/arm_right_7_joint/d: 50
/tiago/arm_right_controller/gains/arm_right_7_joint/i: 100
/tiago/arm_right_controller/gains/arm_right_7_joint/p: 2000
/tiago/arm_right_controller/joints: ['arm_right_1_joi...
/tiago/arm_right_controller/type: effort_controller...
/tiago/gripper_left_left_finger/gains/gripper_left_left_finger_joint/d: 50
/tiago/gripper_left_left_finger/gains/gripper_left_left_finger_joint/i: 100
/tiago/gripper_left_left_finger/gains/gripper_left_left_finger_joint/p: 2000
/tiago/gripper_left_left_finger/joint: gripper_left_left...
/tiago/gripper_left_left_finger/type: effort_controller...
/tiago/gripper_left_right_finger/gains/gripper_left_right_finger_joint/d: 50
/tiago/gripper_left_right_finger/gains/gripper_left_right_finger_joint/i: 100
/tiago/gripper_left_right_finger/gains/gripper_left_right_finger_joint/p: 2000
/tiago/gripper_left_right_finger/joint: gripper_left_righ...
/tiago/gripper_left_right_finger/type: effort_controller...
/tiago/gripper_right_left_finger/gains/gripper_right_left_finger_joint/d: 50
/tiago/gripper_right_left_finger/gains/gripper_right_left_finger_joint/i: 100
/tiago/gripper_right_left_finger/gains/gripper_right_left_finger_joint/p: 2000
/tiago/gripper_right_left_finger/joint: gripper_right_lef...
/tiago/gripper_right_left_finger/type: effort_controller...
/tiago/gripper_right_right_finger/gains/gripper_right_right_finger_joint/d: 50
/tiago/gripper_right_right_finger/gains/gripper_right_right_finger_joint/i: 100
/tiago/gripper_right_right_finger/gains/gripper_right_right_finger_joint/p: 2000
/tiago/gripper_right_right_finger/joint: gripper_right_rig...
/tiago/gripper_right_right_finger/type: effort_controller...
/tiago/head_controller/constraints/goal_time: 2.0
/tiago/head_controller/constraints/head_1_joint/goal: 0.02
/tiago/head_controller/constraints/head_2_joint/goal: 0.02
/tiago/head_controller/constraints/stopped_velocity_tolerance: 5.0
/tiago/head_controller/gains/head_1_joint/d: 50
/tiago/head_controller/gains/head_1_joint/i: 100
/tiago/head_controller/gains/head_1_joint/p: 2000
/tiago/head_controller/gains/head_2_joint/d: 50
/tiago/head_controller/gains/head_2_joint/i: 100
/tiago/head_controller/gains/head_2_joint/p: 2000
/tiago/head_controller/joints: ['head_1_joint', ...
/tiago/head_controller/type: effort_controller...
/tiago/joint_state_controller/publish_rate: 60
/tiago/joint_state_controller/type: joint_state_contr...
/tiago/mujoco_sim/add_odom_joints: True
/tiago/mujoco_sim/pub_base_pose_rate: 60.0
/tiago/mujoco_sim/pub_joint_states/world_bodies_rate: 60.0
/tiago/mujoco_sim/pub_object_state_array/world_bodies_rate: 0.0
/tiago/mujoco_sim/pub_tf/world_bodies_rate: 0.0
/tiago/mujoco_sim/robot: /home/dacheng/muj...
/tiago/mujoco_sim/root_frame_id: map
/tiago/mujoco_sim/spawn_and_destroy_objects_rate: 0.0
/tiago/mujoco_sim/world: /home/dacheng/muj...
/tiago/robot_description: <?xml version="1....
/tiago/torso_controller/constraints/goal_time: 0.6
/tiago/torso_controller/constraints/stopped_velocity_tolerance: 5.0
/tiago/torso_controller/constraints/torso_lift_joint/goal: 0.001
/tiago/torso_controller/gains/torso_lift_joint/d: 50
/tiago/torso_controller/gains/torso_lift_joint/i: 100
/tiago/torso_controller/gains/torso_lift_joint/p: 2000
/tiago/torso_controller/joints: ['torso_lift_joint']
/tiago/torso_controller/type: effort_controller...

NODES
/tiago/
controller_manager (controller_manager/controller_manager)
mujoco_sim (mujoco_sim/mujoco_sim_node)
robot_state_publisher (robot_state_publisher/robot_state_publisher)
rqt_robot_steering (rqt_robot_steering/rqt_robot_steering)
rviz (rviz/rviz)
ROS_MASTER_URI=http://localhost:11311
process[tiago/mujoco_sim-1]: started with pid [7354]
process[tiago/robot_state_publisher-2]: started with pid [7355]
process[tiago/controller_manager-3]: started with pid [7356]
process[tiago/rqt_robot_steering-4]: started with pid [7357]
process[tiago/rviz-5]: started with pid [7358]
[ INFO] [1683234400.407338594]: Get ROS parameters from server
[ INFO] [1683234400.408582291]: Set disable_gravity to true
[ INFO] [1683234400.409064767]: Set world from /home/dacheng/mujoco_ws/src/mujoco_robots/tiago/tiago_mujoco/model/world.xml
[ WARN] [1683234400.409353848]: Robot names not found in parameter server, searching for robot names from urdf...
[ INFO] [1683234400.418540385]: Found 1 robots: [tiago]
[ INFO] [1683234400.419780729]: Initializing MuJoCo simulator...
[ INFO] [1683234400.419807060]: Copying model in /home/dacheng/mujoco_ws/src/mujoco_sim/model/tmp...
[ INFO] [1683234400.420644968]: Adding odom joints for model tiago...
[ INFO] [1683234400.420675978]: Add 3 odom joints for model tiago successfully
[ INFO] [1683234400.420946830]: Save models in /home/dacheng/mujoco_ws/src/mujoco_sim/model/tmp successfully
[ INFO] [1683234400.444739242]: Reload model in /home/dacheng/mujoco_ws/src/mujoco_robots/tiago/tiago_mujoco/model/tiago.xml complete
[ INFO] [1683234400.445562622]: Getting joints of model tiago...
[ INFO] [1683234400.446033365]: Initialize model tiago with 33 joints successfully
[ INFO] [1683234400.446345424]: Initialize MuJoCo simulator successfully
[ INFO] [1683234400.446400251]: Initializing ROS interface...
[ INFO] [1683234400.463202413]: Started [/mujoco/screenshot] service.
[ INFO] [1683234400.463580474]: Started [/mujoco/reset] service.
[ INFO] [1683234400.463986751]: Started [/mujoco/spawn_objects] service.
[ INFO] [1683234400.464395543]: Started [/mujoco/destroy_objects] service.
[ WARN] [1683234400.464620298]: joint_inits not found, will set to default value (0)
[ INFO] [1683234400.466926588]: Initialize ROS interface successfully
[ INFO] [1683234400.466949497]: Initializing OpenGL...
[ INFO] [1683234400.668165671]: Initialize OpenGL successfully...
PluginManager._discover() force discovery of plugins
RospkgPluginProvider._find_plugins() crawling for plugins of type 'qt_gui'
ValueError: bad marshal data (unknown type code)
Fatal Python error: could not initialize part 1
Python runtime state: initialized
Current thread 0x00007f7aac482280 (most recent call first):
File "", line 241 in _call_with_frames_removed
File "", line 1229 in create_module
File "", line 573 in module_from_spec
File "", line 676 in _load_unlocked
File "", line 1149 in _find_and_load_unlocked
File "", line 1178 in _find_and_load
File "", line 241 in _call_with_frames_removed
File "", line 1234 in _handle_fromlist
File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui_cpp/cpp_binding_helper.py", line 39 in
File "", line 241 in _call_with_frames_removed
File "", line 936 in exec_module
File "", line 690 in _load_unlocked
File "", line 1149 in _find_and_load_unlocked
File "", line 1178 in _find_and_load
File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui_cpp/cpp_plugin_provider.py", line 33 in
File "", line 241 in _call_with_frames_removed
File "", line 936 in exec_module
File "", line 690 in _load_unlocked
File "", line 1149 in _find_and_load_unlocked
File "", line 1178 in _find_and_load
File "/opt/ros/noetic/lib/python3/dist-packages/rqt_gui/ros_plugin_provider.py", line 79 in load
File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/recursive_plugin_provider.py", line 60 in discover
File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/composite_plugin_provider.py", line 57 in discover
File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/plugin_manager.py", line 153 in _discover
File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/plugin_manager.py", line 120 in discover
File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/plugin_manager.py", line 170 in get_plugins
File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/plugin_manager.py", line 163 in find_plugins_by_name
File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/main.py", line 587 in main
File "/opt/ros/noetic/lib/python3/dist-packages/rqt_gui/main.py", line 62 in main
File "/opt/ros/noetic/lib/rqt_robot_steering/rqt_robot_steering", line 8 in
Extension modules: yaml._yaml, xxsubtype, shiboken2.shiboken2, PySide2.QtCore, QtCore, PySide2.QtGui, QtGui, PySide2.QtWidgets, QtWidgets, PySide2.QtHelp, QtHelp, PySide2.QtPositioning, PySide2.QtLocation, QtLocation, PySide2.QtNetwork, PySide2.QtMultimedia, QtMultimedia, PySide2.QtMultimediaWidgets, QtMultimediaWidgets, QtNetwork, PySide2.QtOpenGL, QtOpenGL, QtPositioning, PySide2.QtPrintSupport, QtPrintSupport, PySide2.QtQml, QtQml, PySide2.QtQuick, QtQuick, PySide2.QtQuickWidgets, QtQuickWidgets, PySide2.QtScript, QtScript, PySide2.QtScriptTools, QtScriptTools, PySide2.QtSensors, QtSensors, PySide2.QtSql, QtSql, PySide2.QtSvg, QtSvg, PySide2.QtTest, QtTest, PySide2.QtWebChannel, QtWebChannel, PySide2.QtWebEngine, QtWebEngine, PySide2.QtWebEngineCore, QtWebEngineCore, PySide2.QtWebEngineWidgets, QtWebEngineWidgets, PySide2.QtWebSockets, QtWebSockets, PySide2.QtX11Extras, QtX11Extras, PySide2.QtXml, QtXml, PySide2.QtXmlPatterns, QtXmlPatterns, python_qt_binding.QtCore, python_qt_binding.QtGui, python_qt_binding.QtWidgets, python_qt_binding.QtHelp, python_qt_binding.QtLocation, python_qt_binding.QtMultimedia, python_qt_binding.QtMultimediaWidgets, python_qt_binding.QtNetwork, python_qt_binding.QtOpenGL, python_qt_binding.QtPositioning, python_qt_binding.QtPrintSupport, python_qt_binding.QtQml, python_qt_binding.QtQuick, python_qt_binding.QtQuickWidgets, python_qt_binding.QtScript, python_qt_binding.QtScriptTools, python_qt_binding.QtSensors, python_qt_binding.QtSql, python_qt_binding.QtSvg, python_qt_binding.QtTest, python_qt_binding.QtWebChannel, python_qt_binding.QtWebEngine, python_qt_binding.QtWebEngineCore, python_qt_binding.QtWebEngineWidgets, python_qt_binding.QtWebSockets, python_qt_binding.QtX11Extras, python_qt_binding.QtXml, python_qt_binding.QtXmlPatterns (total: 87)
[tiago/rqt_robot_steering-4] process has died [pid 7357, exit code -6, cmd /opt/ros/noetic/lib/rqt_robot_steering/rqt_robot_steering __name:=rqt_robot_steering __log:=/home/dacheng/.ros/log/b6771c68-eabe-11ed-874f-81090c3b8986/tiago-rqt_robot_steering-4.log].
log file: /home/dacheng/.ros/log/b6771c68-eabe-11ed-874f-81090c3b8986/tiago-rqt_robot_steering-4*.log
[tiago/mujoco_sim-1] process has finished cleanly
log file: /home/dacheng/.ros/log/b6771c68-eabe-11ed-874f-81090c3b8986/tiago-mujoco_sim-1*.log
[tiago/rviz-5] process has finished cleanly
log file: /home/dacheng/.ros/log/b6771c68-eabe-11ed-874f-81090c3b8986/tiago-rviz-5*.log`
after run echo $ROS_MASTER_URI:
dacheng@dacheng-Legion-5-Pro-16ACH6H:~$ echo $ROS_MASTER_URI
http://localhost:11311

Many thanks!!!

Ok I think your rosbridge have some problem, it doesn't run properly. Maybe try to remove and install it again?
If that is not working, try to remove it and use the package from source instead: https://github.com/RobotWebTools/rosbridge_suite
Just clone this packge inside the src folder in your workspace and build it again, then source it and launch it again.
Hope that work!

Thanks again for your help.
I uninstall the rosbridge and built it from source, then it works.
Now the rosbridge is connected, but when I run rostopic echo joint_states,there is no response come from MuJoCo ,and  it still doesn't move.
1.webm
check the video.
2.webm

well it doesn't work like that, you have to manually drag the robot from Content into the viewport in Unreal Editor and then manually configure the correct parameter. You can revise again on https://github.com/HoangGiang93/URoboViz/wiki/2.-Setup-a-robot#3-use-the-robot-anim and https://github.com/HoangGiang93/URoboViz/wiki/3.-Control-a-robot-kinematically

Thank you Hoang!!!You are very nice.

You're welcome :)


Address plotter events only from system namespace

Prevents plotter from receiving events from outside namespace.
Signed-off-by: Sima Nadler<EMAIL_ADDRESS>Resolves issue #666

@simanadler, thank you for addressing this important topic. Please give the PR a descriptive name reflecting it focus/contribution.

@shlomitk1 will #717 cover this?

@shlomitk1 will #717 cover this?

Yes, it will.

@simanadler @shlomitk1 can this be closed?


Unable to load redis on php8.1

Describe the bug
I had a working version of many php's on my laptop. After a single extension update which triggered a large brew upgrade, I started having issues. I found them described in the issue list here and indeed, a new reinstall of the php fixed them except for php 8.1 where I still get an error with redis.
Tried a lot of things that I found on the internet such as these 2, but did not manage to get it fixed:
https://github.com/phpredis/phpredis/issues/2056
PHP versions
8.1
To Reproduce
brew install<EMAIL_ADDRESS>Expected behavior
A smooth running redis after the install. :)
Screenshots/Logs
PHP Warning:  PHP Startup: Unable to load dynamic library<EMAIL_ADDRESS>(tried<EMAIL_ADDRESS><EMAIL_ADDRESS>0x0009): symbol not found in flat namespace '_php_msgpack_serialize'<EMAIL_ADDRESS><EMAIL_ADDRESS>0x0009): tried<EMAIL_ADDRESS>(no such file<EMAIL_ADDRESS>(no such file<EMAIL_ADDRESS>(no such file))) in Unknown on line 0
Additional context
Are you willing to submit a PR?

Please update the tap and reinstall<EMAIL_ADDRESS>brew update
brew reinstall<EMAIL_ADDRESS>


Adonis loads 1/6 of the time in studio play test

Adonis only loads like 1/6 of the time in studio play test, making it way harder to test my plugins.

Could you check for errors in the console and if there are any, post them here?

None, it acts like its loaded sucessfully, make a message when you unload it too.

Make sure you are using test servers and NOT solo/play mode. Using a test server with test clients should work without issue for plugin testing.


Update tutorials with new reference genome files?

Original workshop tutorials used .fna and .gff files - now we've added a .gbk file also (specifically for use in snippy). Are the "new" .fna and .gff different to those used in the earlier tutorials (e.g. spades and prokka). Does it matter? If so, update/redo those tutorials and update the screenshots.

Will re-do with the new set of files in case they are different.


Fix the reservoir sampling algorithm.

I'm not even sure how that code could run.
I changed the names to fit the wikipedia page closely.

Ahah, I just git-blamed it, and I'm the original author.
Oh well =')

I think this deserves some tests :-)

I've written some tests, you tell me if the style is write. :)


How to bind to file input?

I'm trying to bind to a file input, but it seems I only have the options to bind to the value, which gives the fake filepath and filename.
What I need is to bind to the full file object, like this:
lastModified:<PHONE_NUMBER>000
lastModifiedDate: Thu Oct 30 2014 12:30:14 GMT+0100 (CET)
name: "someImage.jpg"
size: 207450
type: "image/jpeg"
webkitRelativePath: ""

which you basically get by querying:
document.getElementById('myFileInput').files[0]
How can I do that?

I'll add a file/files bind. In the mean time you can use the change binding to get the files:
<input id="myFileInput" type="text" data-bind="value: fileName, change: fileChange">

Template.body.viewmodel({
  fileName: '',
  fileChange: function() {
    var file = document.getElementById('myFileInput').files[0];
    // Do something with file
  }
})

A little clunky but it will do until I add the file/files bind.

thanks, this works for me!

Pick up 1.6.0
You can now do:
<input type="input" data-bind="file: file, change: singleFileChange">
<input type="input" data-bind="files: files, change: multipleFileChange">

Template.body.viewmodel({
  file: null,
  singleFileChange: function() {
    // Do something with the object: this.file()
  },
  files: [],
  multipleFileChange: function() {
    // Do something with the array: this.files()
  }
})

Really awesome! Thanks man.


Update Python to 3.6

Hi,
this is my first buildmaster-config pull request! 😄
I updated the Travis CI configuration file to the latest and stable Python version (3.4 -> 3.6).
--Suriyaa Sundararuban (My Python profile) (My Bugs Profile)

ping @zware @vstinner

Thanks, but I'm going to decline this one.  We use 3.4 on Travis because the actual server is currently running 3.4.  When the server gets updated, we'll update what Travis is using as well :)


Unless this is intended

Can't reproduce


Add Node 16 support

Volto starts with Node 16 and all unit tests pass. I guess we should wait for gh actions to provide Node 16. Then do a release. @sneridagh can you point me to our Node policy in docs again? I guess it would make sense to add a paragraph there that we start to support a new node version as soon as it is out, what do you think? The sooner we start with a new version the longer an old Volto version will support it (in the future).

On 26/10/2021 it becomes LTS, so scheduled to release by then!


Travis Build is showing error

Actual Behaviour
Travis Build showing error
Expected Behaviour
Travis needs to be relinked with repository
Steps to reproduce it
Add steps to reproduce bugs or add information on the place where the feature should be implemented. Add links to a sample deployment or code.
Log for the issue
Screenshots of the issue
Where-ever possible add a screenshot of the issue.

Would you like to work on the issue?
I think maintainer can link Travis only.

@aashutoshrathi Thanks for reporting this. There is already an issue opened for this #1515.
Closing this


Add cyber chef to readme

It's a really good resource that I go to whenever I try to decipher anything

Can you make one change in the README.md file before I merge it?
Instead of [Cyber Chef](https://gchq.github.io/CyberChef/) is a good cryptography tool.
Just write ``Cyber Chef `

Done

Thank you, I will merge the PR


Fails on generators

Hi! This is a useful project, but appears to fail on generators.  Namely, this function:
import time
from timeout_decorator import timeout

@timeout(seconds=0.5)
def sleeper(s):
    for j in range(10):
        time.sleep(s)
        yield j

runs fine regardless of the value of s: try list(sleeper(0.1)), or list(sleeper(1)), for example.
Also, setting use_signals=False, makes everything fail after seconds:
@timeout(seconds=0.5, use_signals=False)
def sleeper(s):
    for j in range(10):
        time.sleep(s)
        yield j

For example, list(sleeper(0.01)), or even just sleeper(0) both throw an error after 0.5s. Indeed,
for j in sleeper(0.1):
    print(j)

does not print anything before failing after 0.5s.

Same here. The decorator works fine under "normal" conditions, but fail with decorators.


BUG: The Accept and Reject Cookies Buttons are not properly aligned

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
The Accept and Reject Cookies Buttons are misaligned.
Here's a screenshot,

These Buttons can be aligned inside this cookie box.
Hey PA @anuragverma108
Please assign me this issue under GSSOC24.
Thank You!
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

work on it also add some padding and bg colour to cross button!!

work on it also add some padding and bg colour to cross button!!

Sure!

work on it also add some padding and bg colour to cross button!!

Sir by padding you mean?
Do you mean that the cross button should be aligned to right?

It looks like this...what else changes you want me to make before I submit this PR?


string embedding

Ooh, here's an idea for embedding strings: proc macro that you pass a string literal "foo" to, generates code that looks like
{
    static STRING: StaticStr<[u8; len of strlit]> = StaticStr::new(*b"foo");
    let s: &StaticStr<[u8]> = &STRING;
    // SAFETY: s was generated from a utf8 string literal
    unsafe { &*(s as *const _ as *const StaticStr<str>) }
}

And b"foo" is the bytestring representation of the bytes of the string literal passed to the macro

Oh, though maybe that wouldn't work, cause the hash value of str depends on the hash secret in vm

Maybe we could have a global OnceCell<HashSecret>, and in vm init we set state.hash_secret to *HASH_SECRET.get_or_init(|| make_secret()), so that the whole process always has the same hash secret; pretty sure that's what CPython does anyway

that sounds like more to string interning for constant string, right? I thought vm can hold a vec of PyStringRef for that.
In this PR, I am trying short string embedding here. It will reuse fat pointer memory allocated for Box.

Ah, okay, that makes sense, I guess I misinterpreted what you meant by embedding

Looking at the source for embed-str -- is there a reason you did (1..=MAX_SIZE).contains(&s.len()) and not s.is_empty()?

Also, when you assume_init() for EmbeddedStr, I don't think that's actually all initialized -- you only copy_nonoverlapping() len bytes, after that I think it's uninitialized. You might want to store EmbeddedStr/EmbeddingStr as a MaybeUninit<[usize; 2]/[u8; SIZE]> and read the mode by reading only the exact byte that actually holds the metadata. Have you tried running the tests with cargo miri? That would probably iron out UB

@Kroisse introduced https://docs.rs/string_cache/ for string interning

Looking at the source for embed-str -- is there a reason you did (1..=MAX_SIZE).contains(&s.len()) and not s.is_empty()?

I think that's compact expression for !s.is_empty() && s <= MAX_SIZE
About mode, i'd better to use exact byte from byte array. But does it actually need to be stored as MaybeUninit? we can access only to initailized bytes and it doesn't have any drop behavior.

I think this PR requires benchmark before merging

I think that's compact expression for !s.is_empty() && s <= MAX_SIZE

Oh, lol, I completely missed the const MAX_SIZE before that, I thought MAX_SIZE was like usize::MAX or something

But does it actually need to be stored as MaybeUninit? we can access only to initailized bytes and it doesn't have any drop behavior.

Yeah, unfortunately, it's still UB even if you're not accessing them, since you can't trust that the compiler won't optimize it to access some of the uninitialized memory -- there's a good article I read about it but I can't find it right now.

It seems that the embed_str crate does not check the invalid unicode points?


xkeyboard not updating %name% or %layout% on every switch

My win key is set to change the keyboard layout with setxkbmap -option grp:lwin_toggle -layout us,de -variant ,qwerty which is executed by i3 when it starts, so that I can quickly toggle between layouts while writing. Most of the time the %name% / %layout% reflects the switch without any problem, but if I continuously press the win key to change it, after a dozen times it doesn't update and is not reflecting the change anymore for a few more switches Sometimes I have to press it twice more and sometimes three times before it reflects again the correct layout, but the layout correctly changes in the background even though xkeyboard module doesn't show it on the bar. This doesn't happen when I mouse click it.

Could you try this patch to see if it fixes it
diff --git a/include/modules/xkeyboard.hpp b/include/modules/xkeyboard.hpp
index 839665b..64040b6 100644
--- a/include/modules/xkeyboard.hpp
+++ b/include/modules/xkeyboard.hpp
@@ -46,7 +46,6 @@ namespace modules {
     static constexpr const char* EVENT_SWITCH{"xkeyboard/switch"};

     connection& m_connection;
-    event_timer m_xkbnotify{};
     unique_ptr<keyboard> m_keyboard;

     label_t m_layout;
diff --git a/src/modules/xkeyboard.cpp b/src/modules/xkeyboard.cpp
index 65fbd12..f2a4bb1 100644
--- a/src/modules/xkeyboard.cpp
+++ b/src/modules/xkeyboard.cpp
@@ -171,7 +171,7 @@ namespace modules {
    * Handler for XCB_XKB_NEW_KEYBOARD_NOTIFY events
    */
   void xkeyboard_module::handle(const evt::xkb_new_keyboard_notify& evt) {
-    if (evt->changed & XCB_XKB_NKN_DETAIL_KEYCODES && m_xkbnotify.allow(evt->time)) {
+    if (evt->changed & XCB_XKB_NKN_DETAIL_KEYCODES) {
       query_keyboard();
       update();
     }
@@ -181,7 +181,7 @@ namespace modules {
    * Handler for XCB_XKB_STATE_NOTIFY events
    */
   void xkeyboard_module::handle(const evt::xkb_state_notify& evt) {
-    if (m_keyboard && evt->changed & XCB_XKB_STATE_PART_GROUP_STATE && m_xkbnotify.allow(evt->time)) {
+    if (m_keyboard && evt->changed & XCB_XKB_STATE_PART_GROUP_STATE) {
       m_keyboard->current(evt->group);
       update();
     }
@@ -190,8 +190,8 @@ namespace modules {
   /**
    * Handler for XCB_XKB_INDICATOR_STATE_NOTIFY events
    */
-  void xkeyboard_module::handle(const evt::xkb_indicator_state_notify& evt) {
-    if (m_xkbnotify.allow(evt->time) && m_keyboard) {
+  void xkeyboard_module::handle(const evt::xkb_indicator_state_notify&) {
+    if (m_keyboard) {
       m_keyboard->set(m_connection.xkb().get_state(XCB_XKB_ID_USE_CORE_KBD)->lockedMods);
       update();
     }

I tried the patch. It doesn't appear to have fixed it. Once in a dozen switches it ignores at least one and sometimes two. Also the number of switches until one is ignored is not fixed, sometimes it happens after more other times after fewer. I tried switching it at a slower rate to see if the speed is playing any role, it doesn't seem to.

What version are you running by the way? polybar -vv

Before the latest pull, the one that was initially installed:
polybar 2.4.0-3-gd9de16e-git

Features: +alsa +curl +i3 -mpd +network

Build type: Release
Compiler: /usr/bin/c++
Compiler flags: -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong  -Wall -Wextra -Werror -O3 -pedantic -pedantic-errors -ffunction-sections -fdata-sections
Linker flags:  -Wl,-O1,--sort-common,--as-needed,-z,relro -Wl,--gc-sections

ALSA_SOUNDCARD              default
BSPWM_SOCKET_PATH           /tmp/bspwm_0_0-socket
BSPWM_STATUS_PREFIX         W
BUILDER_SPACE_TOKEN         %__
CONNECTION_TEST_IP          <IP_ADDRESS>
PATH_ADAPTER                /sys/class/power_supply/%adapter%
PATH_BACKLIGHT_MAX          /sys/class/backlight/%card%/max_brightness
PATH_BACKLIGHT_VAL          /sys/class/backlight/%card%/brightness
PATH_BATTERY                /sys/class/power_supply/%battery%
PATH_CPU_INFO               /proc/stat
PATH_MEMORY_INFO            /proc/meminfo
PATH_TEMPERATURE_INFO       /sys/class/thermal/thermal_zone%zone%/temp

Could you apply this patch and see if you receive the events:
diff --git a/src/modules/xkeyboard.cpp b/src/modules/xkeyboard.cpp
index 65fbd12..c6d9de4 100644
--- a/src/modules/xkeyboard.cpp
+++ b/src/modules/xkeyboard.cpp
@@ -171,6 +171,7 @@ namespace modules {
    * Handler for XCB_XKB_NEW_KEYBOARD_NOTIFY events
    */
   void xkeyboard_module::handle(const evt::xkb_new_keyboard_notify& evt) {
+    printf("xkb_new_keyboard_notify(%i)\n", evt->changed);
     if (evt->changed & XCB_XKB_NKN_DETAIL_KEYCODES && m_xkbnotify.allow(evt->time)) {
       query_keyboard();
       update();
@@ -181,6 +182,7 @@ namespace modules {
    * Handler for XCB_XKB_STATE_NOTIFY events
    */
   void xkeyboard_module::handle(const evt::xkb_state_notify& evt) {
+    printf("xkb_state_notify (%i == %i)\n", evt->group, xkb_util::get_current_group(m_connection, XCB_XKB_ID_USE_CORE_KBD));
     if (m_keyboard && evt->changed & XCB_XKB_STATE_PART_GROUP_STATE && m_xkbnotify.allow(evt->time)) {
       m_keyboard->current(evt->group);
       update();
@@ -191,6 +193,7 @@ namespace modules {
    * Handler for XCB_XKB_INDICATOR_STATE_NOTIFY events
    */
   void xkeyboard_module::handle(const evt::xkb_indicator_state_notify& evt) {
+    printf("xkb_indicator_state_notify\n");
     if (m_xkbnotify.allow(evt->time) && m_keyboard) {
       m_keyboard->set(m_connection.xkb().get_state(XCB_XKB_ID_USE_CORE_KBD)->lockedMods);
       update();

but do you get the events printed?

I get the events printed in the terminal except when xkeyboard doesn't update on the bar, it ignores that one.

When I execute it, right after I press the win key (only once) to switch the layout for the first time, it prints xkb_new_keyboard_notify(0) 10 times followed by a xkb_state_notify (0 == 0)

Here is the pattern, this is when it happens:
xkb_state_notify (0 == 0)
xkb_indicator_state_notify
xkb_state_notify (1 == 1)
xkb_indicator_state_notify
xkb_state_notify (0 == 0)
xkb_indicator_state_notify
xkb_state_notify (1 == 0)
xkb_indicator_state_notify
xkb_state_notify (0 == 0)
xkb_indicator_state_notify

xkb_state_notify (1 == 0) doesn't match

That's what it prints as well as (0 == 1) other times.

diff --git a/src/modules/xkeyboard.cpp b/src/modules/xkeyboard.cpp
index 65fbd12..450cabe 100644
--- a/src/modules/xkeyboard.cpp
+++ b/src/modules/xkeyboard.cpp
@@ -37,9 +37,10 @@ namespace modules {
     // clang-format off
     m_connection.xkb().select_events_checked(XCB_XKB_ID_USE_CORE_KBD,
         XCB_XKB_EVENT_TYPE_NEW_KEYBOARD_NOTIFY | XCB_XKB_EVENT_TYPE_STATE_NOTIFY | XCB_XKB_EVENT_TYPE_INDICATOR_STATE_NOTIFY, 0,
-        XCB_XKB_EVENT_TYPE_NEW_KEYBOARD_NOTIFY | XCB_XKB_EVENT_TYPE_STATE_NOTIFY | XCB_XKB_EVENT_TYPE_INDICATOR_STATE_NOTIFY, 0, 0, nullptr);
+        XCB_XKB_EVENT_TYPE_NEW_KEYBOARD_NOTIFY | XCB_XKB_EVENT_TYPE_STATE_NOTIFY | XCB_XKB_EVENT_TYPE_INDICATOR_STATE_NOTIFY, ~0U, ~0U, nullptr);
     // clang-format on

+
     // Create keyboard object
     query_keyboard();

@@ -123,9 +124,8 @@ namespace modules {
       return false;
     }

-    size_t current_group{m_keyboard->current() + 1UL};
-
-    if (current_group >= m_keyboard->size()) {
+    size_t current_group{m_keyboard->current()};
+    if (++current_group >= m_keyboard->size()) {
       current_group = 0;
     }

@@ -171,7 +171,7 @@ namespace modules {
    * Handler for XCB_XKB_NEW_KEYBOARD_NOTIFY events
    */
   void xkeyboard_module::handle(const evt::xkb_new_keyboard_notify& evt) {
-    if (evt->changed & XCB_XKB_NKN_DETAIL_KEYCODES && m_xkbnotify.allow(evt->time)) {
+    if (evt->changed & XCB_XKB_NKN_DETAIL_KEYCODES) {
       query_keyboard();
       update();
     }
@@ -181,20 +181,21 @@ namespace modules {
    * Handler for XCB_XKB_STATE_NOTIFY events
    */
   void xkeyboard_module::handle(const evt::xkb_state_notify& evt) {
-    if (m_keyboard && evt->changed & XCB_XKB_STATE_PART_GROUP_STATE && m_xkbnotify.allow(evt->time)) {
+    if (evt->group == evt->lockedGroup) {
       m_keyboard->current(evt->group);
       update();
+    } else {
+      m_keyboard->current(m_connection.xkb().get_state(XCB_XKB_ID_USE_CORE_KBD)->lockedGroup);
+      update();
     }
   }

   /**
    * Handler for XCB_XKB_INDICATOR_STATE_NOTIFY events
    */
-  void xkeyboard_module::handle(const evt::xkb_indicator_state_notify& evt) {
-    if (m_xkbnotify.allow(evt->time) && m_keyboard) {
-      m_keyboard->set(m_connection.xkb().get_state(XCB_XKB_ID_USE_CORE_KBD)->lockedMods);
-      update();
-    }
+  void xkeyboard_module::handle(const evt::xkb_indicator_state_notify&) {
+    m_keyboard->set(m_connection.xkb().get_state(XCB_XKB_ID_USE_CORE_KBD)->lockedMods);
+    update();
   }
 }

I applied it, still happens. At this point I'm starting to think if it's possible to be an external issue. We should probably wait for someone else to confirm it as well. It's not critical, it happens every 20 switches or so.

New info:
After some sleep and a few more tests, I noticed that when the layout changes and xkeyboard doesn't show it on the bar, it remains so until I press ctrl or alt. So for example I toggle between DE and US and at some point when I switch it again to US it doesn't change on the bar. it still says DE and if I press alphanumeric keys it still doesn't update. But as soon as I press either Ctrl or Alt, xkeyboard updates to the correct layout. Hopefully someone else reading this will test and confirm it as well.

Could you update to 2.4.1 and verify if this still is an issue

Yup, the update fixed it, thanks. I can change the layout all day long now, it doesn't happen anymore. Good job tracking it down.


Fix for showing datasources with same name but with different clusters

Fixes #1989

@ankurp  could u add a alembic migration and fix the tests ?

@bkyryliuk Updating.

@bkyryliuk I am having a hard time trying to create a migration that can remove the unique constraint on datasource_name. Can you or someone help me out as I cannot remove the constraint because the constraint does not have a name.

@ankurp check out utils.generic_find_constraint_name and how it's used in other migrations, we've had this problem before and that was part of the solution. You can also find where the original constraint was created and remove it. That makes sure that people upgrading from a fresh db won't have to create / delete it.

Closing old PRs with broken build or merge conflict, feel free to re-open once merge conflicts are sorted out.


[Electrostar] Clean announcement recordings

https://u.davwheat.dev/ogQdDsTr.mpga

https://github.com/davwheat/rail-announcements/issues/218#issue-2316359407


Fixed task alignment issue.

The line,  https://github.com/Be-Secure/ansible-role-oah-shell (under oah-requirement.yml file) is having a indentation issue, hence the line was not reading.
Now corrected the indentation.
@asa1997
Please review the change
@sumodgeorge

@jobyko LGTM


Added CSI_ENDPOINT env variable to nfs and smb drivers

Why this is needed? Those used to be working without it

I'd argue it is mainly for completeness. There is no real downside to specifying these anyway, so why not go with the docker standard?

Ah yes, it is mentioned in https://github.com/moby/moby/blob/master/docs/cluster_volumes.md#basic-requirements
Let’s merge this then.


ESP32 unexpectedly disconnected from WiFi AP

I connect ESP32 board to WiFi and do HTTP POST the sensor data to cloud server every 30 seconds. It works fine for around 6 minutes then it show messages:
rbk
bcn_timout,ap_probe_send_start
ap_probe_send over, rest wifi status to disassoc
state: 5 -> 0 (1)
n:6 0, o:6 0, ap:255 255, sta:6 2, prof:1
Then ESP32 was disconnected from WiFi and could not reconnect.

Thanks for reporting this @MakerAsia . We're tracking this one on our internal issue tracker as well, we'll update you ASAP once we have a fix.

Fixed in 4f93b49e.


HTML5 attribute for reverse ordered lists. It's as simple as  Woul...

HTML5 attribute for reverse ordered lists. It's as simple as <ol reversed></ol> Would be great to see compatibility lists for the same.

This issue was imported from Google Moderator
Moderator votes: +29
Issue added by imohkay on 2013-03-22
To vote this issue up or down, simply include +1 or -1 in your comment.

+1

+1

+1

Now available at http://caniuse.com/#feat=ol-reversed


Upgrade typedoc dependency

Upgrading typedoc to 0.26.x has caused issues in our doc building process and thus can't be done by dependabot.

Ignored this minor version in dependabot:

https://github.com/FuelLabs/fuels-ts/pull/2765#issuecomment-2227851864

Working on this issue in parallel with #2610
Draft PR #2650


dedup / debounce calls

Idea for a new hook from bede
"Has anyone here had to develop a pattern for ‘debouncing’ (not quite debouncing) requests using feathers-client? e.g. I have two calls to the same find, but only care about the result of one:"
app('projects').find(…);
// While request is happening request is made again
app('projects').find(…);
// Should just return promise from first request

https://github.com/feathersjs/feathers-rest/issues/91#issuecomment-263636928

This is likely similar to https://github.com/feathersjs/feathers-batch.

So feathers-batch de-dups identical calls? Info, thanks.

feathers-batch just allows to batch several calls into one.

This might be useful: https://github.com/jhurliman/node-rate-limiter


Enable running isort on-save in vscode

Currently isort only runs when you run the command on vscode. This is the official document about how to run it https://code.visualstudio.com/docs/python/editing#_sort-imports
But to achieve the same quality of imports definition across the development team, enabling running isort on save would be helpful. This blob post seems helpful about how to set it up on vscode.
https://code.visualstudio.com/docs/python/editing#_sort-imports
This can be worked on after #4 is merged

This has now being configured following the guide here: https://copdips.com/2020/04/making-isort-compatible-with-black.html


Add .editorconfig file

...to make sure we're formatting our code in the same way & avoid lots of git conflicts

I call dibs


Remove fixtures not present in supported platforms

Thanks for this. I have removed the ones we are not using any longer.


npm install --save react-sortable-tree doesn't work as expected

I have a small react project where I was using autocomplete successfully with react-sortable-tree, but now when i try and build the project i get these kinds of errors -
ERROR in ../react-sortable-tree/~/dnd-core/lib/HandlerRegistry.js
Module not found: Error: Can't resolve 'asap' in '/Users/anirudh.vyas/git_staging/react-sortable-tree/node_modules/dnd-core/lib'

What could I be missing?

Have you tried deleting your node_modules directory and installing again?

Closed due to inactivity.


chore: release main

:robot: I have created a release beep boop
@markdown-confluence/cli: 5.1.0
5.1.0 (2023-05-09)
Bug Fixes

Move SettingsLoaders to own files to help with TreeShaking (f241a11)

Dependencies

deps: bump puppeteer/puppeteer in /packages/cli (56496e9)
The following workspace dependencies were updated

devDependencies

@markdown-confluence/lib bumped from 5.0.1 to 5.1.0
@markdown-confluence/mermaid-puppeteer-renderer bumped from 5.0.1 to 5.1.0

@markdown-confluence/lib: 5.1.0
5.1.0 (2023-05-09)
Features

Add support for mentions (f17dd84)
ADF To Markdown (7257893)
Diff page details to see if they have changed. If so then publish page. (7e30ca8)
Handle smartcards storing URL without page name on the end (d489f83)

Bug Fixes

Add keywords to lib package (a3043b0)
Circular imports (4f49798)
Fix issues with puppeteer rendering (01824b6)
Move SettingsLoaders to own files to help with TreeShaking (f241a11)
Remove debug console.log (bb56ed9)
Replace all spaces not just first one (c01ae97)
Settings path (d1c43e6)
Tests (4f91706)

@markdown-confluence/mermaid-electron-renderer: 5.1.0
5.1.0 (2023-05-09)
Bug Fixes

Fix issues with puppeteer rendering (01824b6)

Dependencies

The following workspace dependencies were updated

dependencies

@markdown-confluence/lib bumped from 5.0.1 to 5.1.0

@markdown-confluence/mermaid-puppeteer-renderer: 5.1.0
5.1.0 (2023-05-09)
Bug Fixes

Fix issues with puppeteer rendering (01824b6)

Dependencies

deps: bump puppeteer from 20.0.0 to 20.1.2 (1504a57)
The following workspace dependencies were updated

dependencies

@markdown-confluence/lib bumped from 5.0.1 to 5.1.0

obsidian-confluence: 5.1.0
5.1.0 (2023-05-09)
Features

ADF To Markdown (7257893)

Bug Fixes

Move SettingsLoaders to own files to help with TreeShaking (f241a11)

Documentation

Update Obsidian docs to remove need for BRAT install (9fc8fc8)

Dependencies

The following workspace dependencies were updated

dependencies

@markdown-confluence/lib bumped from 5.0.1 to 5.1.0
@markdown-confluence/mermaid-electron-renderer bumped from 5.0.1 to 5.1.0

obsidian-confluence-root: 5.1.0
5.1.0 (2023-05-09)
Features

Add support for mentions (f17dd84)
ADF To Markdown (7257893)
Diff page details to see if they have changed. If so then publish page. (7e30ca8)
Handle smartcards storing URL without page name on the end (d489f83)

Bug Fixes

Add keywords to lib package (a3043b0)
Circular imports (4f49798)
Fix issues with puppeteer rendering (01824b6)
Move SettingsLoaders to own files to help with TreeShaking (f241a11)
Remove debug console.log (bb56ed9)
Replace all spaces not just first one (c01ae97)
Settings path (d1c43e6)
Tests (4f91706)

Documentation

Update Obsidian docs to remove need for BRAT install (9fc8fc8)

Dependencies

deps: bump actions/checkout from 3.1.0 to 3.5.2 (7720376)
deps: bump github/codeql-action from 2.3.2 to 2.3.3 (d1ee1ea)
deps: bump puppeteer from 20.0.0 to 20.1.2 (1504a57)
deps: bump puppeteer/puppeteer in /packages/cli (56496e9)
deps: bump step-security/harden-runner from 2.3.1 to 2.4.0 (4cd8c72)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/markdown-confluence/markdown-confluence/releases/tag/obsidian-confluence-v5.1.0 :sunflower:

:robot: Release is at https://github.com/markdown-confluence/markdown-confluence/releases/tag/%40markdown-confluence/lib-v5.1.0 :sunflower:

:robot: Release is at https://github.com/markdown-confluence/markdown-confluence/releases/tag/%40markdown-confluence/mermaid-electron-renderer-v5.1.0 :sunflower:

:robot: Release is at https://github.com/markdown-confluence/markdown-confluence/releases/tag/%40markdown-confluence/mermaid-puppeteer-renderer-v5.1.0 :sunflower:

:robot: Release is at https://github.com/markdown-confluence/markdown-confluence/releases/tag/obsidian-confluence-root-v5.1.0 :sunflower:


Inconsistent TS2345 error when using function generics

Bug Report

🔎 Search Terms

Inconsistent 2345
function generics
extends 2345
generics 2345

🕗 Version & Regression Information

This changed from version 4.7.4+ and above

⏯ Playground Link

Playground link with relevant code
💻 Code

function func<T extends { foo: 1 }>(arg: T): void {}

func({ foo: 1, bar: 1 });

🙁 Actual behavior
bar property sometimes displayed as valid and sometimes produce an error:
Argument of type '{ foo: 1; bar: number; }' is not assignable to parameter of type '{ foo: 1; }'.
  Object literal may only specify known properties, and 'bar' does not exist in type '{ foo: 1; }'.(2345)

When playing with the code live and change bar to bar222 or ba sometimes the error shown and sometimes not.
Refreshing the playground link with the changes always remove the error.
https://user-images.githubusercontent.com/534911/190869020-376ff387-56ff-48b3-83e4-43261b2b4d78.mov
🙂 Expected behavior

Always display as valid without any error.
{ foo: 1, bar: 1 } is a valid subtype of { foo: 1 } and so can legally be used to instantiate T.

Maybe related to https://github.com/microsoft/TypeScript/issues/49490

Expected behavior: Always display an error for unknown properties.

The correct behavior is for there to be no error here: excess property checks aren’t intended to apply to generic constraints.  { foo: 1, bar: 1 } is a valid subtype of { foo: 1 } and so can legally be used to instantiate T.

@fatcerberus you are right, I've updated the issue description.
Although this case can make it harder to implement ORM projections (like Prisma) where you need to selected type as T but also limit the allowed properties in the select object to allow only existing properties.

This looks similar to some other bugs we've seen reported where weird errors show up while typing

I also encounter the similar situation when passing function paramter in different ways
interface AAA {
  hyYears: Array<any>;
}

function func(process: AAA) {
  console.log(process);
}

const unresolveParams = {
  hyYears: [],
  periodDataId: 1,
};

func(unresolveParams); // why this line can't detect the extra parameter

func({
  hyYears: [],
  periodDataId: 1, //  ts(2345) detect the extra parameter. Argument of type '{ hyYears: undefined[]; periodDataId: number; func(unresolveParams: any): any; }' is not assignable to parameter of type 'AAA'
});

If I only bisected this correctly, the regression has been introduced by https://github.com/microsoft/TypeScript/pull/36747

@JonathonChen your case is not a bug, you can learn more about this here

I was using the editor with TS built from different commits. I was doing that within the TS repo itself so I could pretty easily jump between commits/builds

Darn 🙁
I haven't yet found the right fourslash calls to get this reproducing, so into the server RPC logs I go...

Got it:
////declare function func<T extends { foo: 1 }>(arg: T): void;
////
////func({ foo: 1, bar/*1*/: 1 });

goTo.marker("1");
edit.insert("2");
verify.completions({ exact: undefined });
verify.noErrors();

(I spent all that time figuring out how to assert in fourslash that there are no completions so I cold perform the request.)

You may interested in a similar issue I filed in the realm of "errors that only show up while typing": https://github.com/microsoft/TypeScript/issues/51661
I don't know if it's the same underlying cause, or if my brief investigation into it was way off the mark or not, but food for thought.

@OxleyS unfortunately, this looks like a different problem, especially given the call stack shared here

Amazing! 🙌
I can confirm it resolved on nightly build using the playground link.

I ran into similar issue, initially with generics, but the simplified to even without generics. I am still not sure what was causing inconsistencies in different situations, but I did find that having a property with the name "name" seemed to cause the error reporting, I dont know if word is reserved or something,  either way thought would share if its useful at all https://www.typescriptlang.org/play?#code/FAFwngDgpgBAsmA8gIwFZQMYhgXhgb2GBhgCcoBDAEwHsA7AGzBgDcKGBXKAZwC4DiJMpVqNmdCgFso-biFIBLOgHMA3IIC+6rUQz05MACIBBACrH+CFOiy4BJNpx79CQmBOn8ARI65eANJqBOrr62NxQIADCFNg4ggAUvjLwSGiYIADaPuxc3F4AugCUuAB8iRR0CpLsfKnWGUWWaTZxpTAJrkIAdL2V1bWBbsl1yUMwGkXqwHp0BgDuNKQA1tx2EdGxnR4yXnRQ8zAYsV6ToXPhABY0HAxUABIULFAAoqSkS+uRMSAJCSU4dr-ModAFA-DuKQpPYHGAANVyUC8EyKRQSJnMUyIQA

I see no error in the above snippet, so if you're having a problem and can reproduce it without generics, I would suggest making a new issue as that's very likely different.

Great thank you, before I create an issue I would appreciate if you could take a glance at
https://www.typescriptlang.org/play?ssl=16&ssc=30&pln=15&pc=1#code/FAehGUAsEMAcFMAEB3AlgF0ogdtAtkgGarwA2AJsOgJ4KIDyARgFbwDG6A6hpAHL7wACgCcA9rEQBeRAG9cBAFwBndMNTYA5gF8A3MGBtR2FYlhrs6JsymIAFKJYKr7Lj34ER4gJSSAfIeNRUngAOlJRDXsWL30zdUsWWzkBBQAiADdoUgBXeFStGLiLK1tbH18k+Xg0yDJwxCVIUWzyREYkeGExYQB+fK8vRDBsUURO7v0wBoFEQ3IkUBBuTERoRHJUQkJO+AsGmAQqWiRnDmXIABFN7eFd9E8JaRlMnOqVc209AyMTIvQrrZWGxRZhOFguc4Am53B7lAJKIKhcKRBzMGLAP5QkrPLK5NIvXL9DHmf7XEplPxJAnVVJjLqiYT9QZTcYMoA
It's a little clearer than the above one but same thing. The fact there is no error is the issue as I understand, it should not accept function, but seems to when field is called 'name', just to make sure its not something already known. Thanks

This PR issue in particular is about inconsistent errors in the editor while modifying code, so your sample is definitely not related.
But, yes, I'm pretty sure your code behaves that way because functions have a name property and so satisfy the first object type in your example. e.g.:

Nice, thanks for clarifying, feel free to hide or delete my posts if useful, cheers.


setting DATABASE_URL doesn't ignore defaultEnv from .db-migraterc

I'm submitting a...

[ ] Bug report
[x] Feature request
[ ] Question

Current behavior
running db-migrate with DATABASE_URL defined does not ignore defaultEnv from .db-migraterc
Expected behavior
running db-migrate with DATABASE_URL respects that value and doesn't try to read defaultEnv from .db-migraterc
Minimal reproduction of the problem with instructions

export DATABASE_URL=mysql://<some-valid-connection-string>
create a .db-migraterc with a defaultEnv configured.  I chose local instead of dev for my example.
Run db-migrate.
You will see something like "environment 'local' is not defined"

What is the motivation / use case for changing the behavior?
When setting database URL, the intent is that it is defining everything about your environment. To respect the defaultEnv setting from .db-migraterc seems to contradict that
Environment

db-migrate version: 0.11.1
plugins with versions: unknown, don't think I'm using plugins?
db-migrate driver with versions:
mysql 1.1.10

Additional information:
- Node version: 8.9.4
- Platform:  MacOS 10.13

Others:

Actually I think the 'DATABASE_URL' is totally ignored. I wanted to use it to override my database.json but cannot get it to work.

I run into similar problem with mongodb url, escaping connection string by double quotes worked for me. export DATABASE_URL="..."


[BUILD/CI Bug]: Report for buildkite/fastcheck/pr/metrics-tracing-test and suggesting a solution.

Your current environment
PyTorch version: 2.3.1+cu121
Is debug build: False
CUDA used to build PyTorch: 12.1
ROCM used to build PyTorch: N/A
OS: Ubuntu 22.04.4 LTS (x86_64)
GCC version: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Clang version: Could not collect
CMake version: version 3.30.1
Libc version: glibc-2.35
Python version: 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] (64-bit runtime)
Python platform: Linux-6.5.0-45-generic-x86_64-with-glibc2.35
Is CUDA available: True
CUDA runtime version: 12.5.40
CUDA_MODULE_LOADING set to: LAZY
GPU models and configuration: GPU 0: NVIDIA GeForce RTX 4090
Nvidia driver version: 535.183.06
cuDNN version: Probably one of the following:
/usr/lib/x86_64-linux-gnu/libcudnn.so.9.1.0
/usr/lib/x86_64-linux-gnu/libcudnn_adv.so.9.1.0
/usr/lib/x86_64-linux-gnu/libcudnn_cnn.so.9.1.0
/usr/lib/x86_64-linux-gnu/libcudnn_engines_precompiled.so.9.1.0
/usr/lib/x86_64-linux-gnu/libcudnn_engines_runtime_compiled.so.9.1.0
/usr/lib/x86_64-linux-gnu/libcudnn_graph.so.9.1.0
/usr/lib/x86_64-linux-gnu/libcudnn_heuristic.so.9.1.0
/usr/lib/x86_64-linux-gnu/libcudnn_ops.so.9.1.0
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True
CPU:
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Address sizes:                      48 bits physical, 48 bits virtual
Byte Order:                         Little Endian
CPU(s):                             64
On-line CPU(s) list:                0-63
Vendor ID:                          AuthenticAMD
Model name:                         AMD Ryzen Threadripper PRO 5975WX 32-Cores
CPU family:                         25
Model:                              8
Thread(s) per core:                 2
Core(s) per socket:                 32
Socket(s):                          1
Stepping:                           2
Frequency boost:                    enabled
CPU max MHz:                        7006.6401
CPU min MHz:                        1800.0000
BogoMIPS:                           7186.94
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 invpcid_single hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd amd_ppin brs arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif v_spec_ctrl umip pku ospke vaes vpclmulqdq rdpid overflow_recov succor smca fsrm
Virtualization:                     AMD-V
L1d cache:                          1 MiB (32 instances)
L1i cache:                          1 MiB (32 instances)
L2 cache:                           16 MiB (32 instances)
L3 cache:                           128 MiB (4 instances)
NUMA node(s):                       1
NUMA node0 CPU(s):                  0-63
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        Not affected
Vulnerability L1tf:                 Not affected
Vulnerability Mds:                  Not affected
Vulnerability Meltdown:             Not affected
Vulnerability Mmio stale data:      Not affected
Vulnerability Retbleed:             Not affected
Vulnerability Spec rstack overflow: Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass:    Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected
Versions of relevant libraries:
[pip3] flashinfer==0.1.2+cu121torch2.3
[pip3] mypy==1.9.0
[pip3] mypy-extensions==1.0.0
[pip3] numpy==1.26.4
[pip3] nvidia-nccl-cu12==2.20.5
[pip3] torch==2.3.1
[pip3] torchvision==0.18.1
[pip3] transformers==4.43.3
[pip3] triton==2.3.1
[conda] Could not collect
ROCM Version: Could not collect
Neuron SDK Version: N/A
vLLM Version: 0.5.3.post1
vLLM Build Flags:
CUDA Archs: 5.2 6.0 6.1 7.0 7.2 7.5 8.0 8.6 8.7 9.0+PTX; ROCm: Disabled; Neuron: Disabled
GPU Topology:
GPU0    CPU Affinity    NUMA Affinity   GPU NUMA ID
GPU0     X      0-63    0               N/A
Legend:
X    = Self
SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
PIX  = Connection traversing at most a single PCIe bridge
NV#  = Connection traversing a bonded set of # NVLinks
🐛 Describe the bug
Problem
Hello! I want to report a bug for buildkite/fastcheck/pr/metrics-tracing-test.
When proceeding with PR #6926 , unlike the previous PR, an ValueError occurred in the metrics-tracing-test.
[2024-08-02T04:09:43Z]     def __post_init__(self):
[2024-08-02T04:09:43Z]         if not is_otel_installed() and self.otlp_traces_endpoint is not None:
[2024-08-02T04:09:43Z] >           raise ValueError("OpenTelemetry packages must be installed before "
[2024-08-02T04:09:43Z]                              "configuring 'otlp_traces_endpoint'")
[2024-08-02T04:09:43Z] E           ValueError: OpenTelemetry packages must be installed before configuring 'otlp_traces_endpoint'
[2024-08-02T04:09:43Z]
[2024-08-02T04:09:43Z] /usr/local/lib/python3.10/dist-packages/vllm/config.py:1588: ValueError

I traced the error and reproduced it in my local working space using the following command:
./venv/bin/pytest ./tests/tracing/test_tracing.py
>> FAILED tests/tracing/test_tracing.py::test_traces - ValueError: OpenTelemetry packages must be installed before configuring 'otlp_traces_endpoint'

After brief debugging, we identified that the cause of the issue originated from importing the opentelemetry in vllm/tracing.py.
Solution
:thinking: I suggest that the code in vllm/tracing.py needs to be changed as follows for it to work correctly:
From this
from opentelemetry.semconv.ai import SpanAttributes as BaseSpanAttributes

To this
# "semconv.ai" -> `semconv_ai`
from opentelemetry.semconv_ai import SpanAttributes as BaseSpanAttributes

After modification,  the result should be showed as follows:
tests/tracing/test_tracing.py .                                                                                [100%]

============================================================================ 1 passed in 15.05s ============================================================================

Also, could you please check if similar metrics-tracing-test bug reports have been submitted by others in the latest vLLM? (like #6999 ?)

I will commit the modification in the PR #6926 .

Hi, can you submit a separate pr to fix this? I can help review and merge, thanks.

Hello @youkaichao ! I've just submitted a separate PR #7065.
I forgot that submitting a separate PR would make code review more efficient for the vLLM managers. :bow:


Release v0.4.5 did a break change

The PR "Replace winapi dependency with windows-sys"  (https://github.com/rust-lang/socket2/pull/303) breaks public apis, cause dns-lookup are failed to compile on windows https://github.com/keeperofdakeys/dns-lookup/issues/22. dns-lookup calls getnameinfo from winapi, but now socket2 exports SockAddr from windows-sys, which are incompatible with SockAddr from winapi.

I've yanked v0.4.5 for now.

@Thomasdezeeuw  👍

@Thomasdezeeuw I am working on shifting dns-lookup from winapi to window_sys, I am using your master branch instead of crates.io and it seems to be working, I will make a pull in dns-lookup soon.

@Thomasdezeeuw I am working on shifting dns-lookup from winapi to window_sys, I am using your master branch instead of crates.io and it seems to be working, I will make a pull in dns-lookup soon.

Sounds good, but unfortunately we still can't make a breaking change in a v0.4.x release, so the switch to window_sys will have to go into v0.5.

@Thomasdezeeuw I am working on shifting dns-lookup from winapi to window_sys, I am using your master branch instead of crates.io and it seems to be working, I will make a pull in dns-lookup soon.

Sounds good, but unfortunately we still can't make a breaking change in a v0.4.x release, so the switch to window_sys will have to go into v0.5.

Oh yeah, no problem, just wanted to inform you about the change in dns-lookup

For future reference, since socket2 is exposing the SOCKADDR type from the underlying windows_sys library via getaddrinfo/getnameinfo, any change to SOCKADDR in windows_sys will also change the SOCKADDR that socket2 uses. Apparently windows_sys has changed SOCKADDR A Few Times recently, which means the exact subversion of windows_sys needs to match in libraries using socket2.
Since both windows_sys and socket2 are version 0.X.Y, I'd suggest that anybody using these libraries hard code socket2 and windows_sys versions explicitly. We'll likely need to wait till both libraries are version 1.0 before we can get stable APIs.

Those changes are just aliases for the same underlying types. The actual layout of the struct is fixed as any changes to it would break ABI compatibility with Windows' system calls. So I don't think this is an issue.
Relying on 0.x libraries, especially exposing them in the public API as socket2 does, isn't great, but having to maintain these (public) types/type aliases ourselves wouldn't be an improvement either.


1.7.0 Broken legacy containers that used the --volumes-from option

Did upgrade today one of our servers  to docker v1.7.0 (running Ubuntu 14.04LTS), and discovered that all our legacy images using the --volumes-from flag would not start anymore:
# docker start foo_backend.production
Error response from daemon: Cannot start container foo.backend.production: Unable to setup mount point, neither source nor volume defined
Error: failed to start containers: [foo_backend.production]

# docker inspect foo_backend.production | jq .[0].Volumes
{
  "/srv/data": ""
}

# docker version
Client version: 1.7.0
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 0baf609
OS/Arch (client): linux/amd64
Server version: 1.7.0
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 0baf609
OS/Arch (server): linux/amd64

# docker info
Containers: 13
Images: 110
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 136
 Dirperm1 Supported: false
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.13.0-55-generic
Operating System: Ubuntu 14.04.2 LTS
CPUs: 8
Total Memory: 62.89 GiB
Name: fr-6f6e
ID: SUBT:ZILY:FYIX:KZQL:UMLN:HYYG:4X75:BA3J:346R:XSDJ:U5HR:2L63
WARNING: No swap limit support

# uname -a
Linux fr-6f6e 3.13.0-55-generic #94-Ubuntu SMP Thu Jun 18 00:27:10 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Hi!
Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

We're seeing also same errors with few "legacy" containers that have old-school bind mounts:
"Config": {
       ....
        "Volumes": {
            "/etc/mysql": {},
            "/var/lib/mysql": {}
        },
....
"HostConfig": {
        "Binds": [
            "/volumes/xyzdef/_var_lib_mysql:/var/lib/mysql"
        ],
"Volumes": {
        "/etc/mysql": "/data/docker/vfs/dir/84faf1a975042e1c1c0bd36803cb4e1d806de9f160551215751ca9a8c2768a22",
        "/var/lib/mysql": "/volumes/xyzdef/_var_lib_mysql"
    },
    "VolumesRW": {
        "/etc/mysql": true,
        "/var/lib/mysql": true
    }

ping @calavera

@mgcrea can you provide more info about those mount points? Things that can be helpful:

How they were created in the the parent container.
Full run command for the child container.
Inspect information for the parent container with old docker version, both Volumes and VolumesRW.
Inspect information for the child container with old docker version, both Volumes and VolumesRW.
Old docker version and info.

@mgcrea for what it's worth, the error seems correct. But I'm trying to figure out why your volumes end up in that scenario. that  "/srv/data": "" means that the volume mounted in /srv/data doesn't have a source or a volume mounted from.
@jnummelin your issue doesn't seem related to this issue. Do you get any error log? Those paths seem correct.

@calavera The log shows pretty much the same messages:
Handler for POST /containers/{name:.*}/start returned error: Cannot start container d3737856bf4877866f824f96c54de29da02343819361b53bf6f53253f8a0f686: Unable to setup mount point, neither source nor volume defined
 HTTP Error Cannot start container d3737856bf4877866f824f96c54de29da02343819361b53bf6f53253f8a0f686: Unable to setup mount point, neither source nor volume defined

The paths are correct as the container works perfectly on 1.3.3 docker. We're seeing this issue only when trying to upgrade to Docker 1.7.0

@calavera
The setup was something like this:
# docker run --volume /srv/data --name foo-bar.data.production ubuntu:trusty true
# docker run --detach --volumes-from foo-bar.data.production --name foo-bar.backend.production --expose 3030 --publish <IP_ADDRESS>:3030:3030 --publish <IP_ADDRESS>:3030:3030 --publish <IP_ADDRESS>:3030:3030 --env NODE_ENV=production --env NODE_PORT=3030 --env CLIENT_ID=foo mgcrea/nodejs

mgcrea/nodejs is an image that starts supervisord (ssh+nodejs+redis+mongo)
I can't rollback docker because the server is currently in production with sensitive data.

thank you guys, that makes a lot of sense. It looks like there are something missing deserializing those old configurations into 1.7. I'll take a look.

This is not an issue with deserializing configs but (at least for me) with order of execution. I've made a simple test case to illustrate the point: https://gist.github.com/zergin/d0d526a0e5fce1070552
@calavera This is a serious regression. It messes existing deployments that relay on ro/rw mounts for security. It works as expected with 1.6.2 and before.
It seems to be the same case as #14347


amqps:// connection not working without ssl

I am trying to connect with local docker container without ssl. but it don't have any option to disable it.

@anil-kaplan amqps:// indicates its an SSL connection. I think what you're after is to replace your connection prefix with amqp://.


make reflection analysis cover kotlin coroutines usage

If a controller method is kotlin coroutine suspend fun, it's return type will be Continuation<? super Bar>
In this situation, returnType.getActualTypeArguments()[0] will be ? super Bar, it's a WildcardType, and lower bounds is the exact return type Bar.
So we need to dig out the type Bar from the original wrapped Continuation type.
If just skip the WildcardType, suspend fun will be considered as a method which return Object.
Adding a lot of @TypeHint is very bad for migrating old projects to spring native, I want to analyze directly in spring aot to get the actual return value of suspend fun.

@czp3009 Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.

@czp3009 Thank you for signing the Contributor License Agreement!

Interesting proposal that could maybe fix #769 more easily than originally expected, could you please update webflux-kotlin to remove those manual hints and see if that works?
Also could you please update the PR to perform this type inferience only when this type is a Continuation to avoid side effects and keep an optimal footprint when that's not required?

Merged with additional refinements via #769, thanks a lot for this great PR!


Update version from 0.0.101 to 0.0.102

This is an automated update of version in pyproject.toml. This action is performed by a Github Action from publish.yml.

updated version from 0.0.101 to 0.0.102, @SuleyNL pls review


[network] add NetworkId to config to differentiate

Motivation
Each network device that is on a different network currently all log
the same way, which makes it difficult to determine which network that
one is looking at.  This allows us to differentiate both at a logging
level and later at a communication level between networks.
resolves #4012
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
Added tests to check that network handshakes work with the new network Ids.  This also means that both sides need to be updated for communication to work.
Related PRs
(If this PR adds or changes functionality, please take some time to update the docs at https://github.com/libra/website, and link to your PR here.)

:umbrella: The latest upstream changes (presumably 6eb4e3dd45bb0a4fbc6e5f10bfac86700bc580a7) made this pull request unmergeable. Please resolve the merge conflicts.

:umbrella: The latest upstream changes (presumably ae1137df8d858067a5f4e64fa7b67e33c6234b57) made this pull request unmergeable. Please resolve the merge conflicts.

Don't forget to rebase!

:umbrella: The latest upstream changes (presumably 99d4ab58472d43d059ed6295476db8a6d65712f1) made this pull request unmergeable. Please resolve the merge conflicts.

Don't forget to rebase!

Let's hope that the 3rd rebase is the charm

@bors-libra r=davidiw

:pushpin: Commit a22fbf9 has been approved by davidiw

:hourglass: Testing commit a22fbf9dcf8eb12c7a337e24ec5843ba761b2af2 with merge a2dc82cf215331eeb2e884a7837b1fdc759c0901...

:sunny: Test successful - checks-actions_land_blocking_test, checks-circle_commit_workflow
Approved by: davidiw
Pushing a2dc82cf215331eeb2e884a7837b1fdc759c0901 to master...


Fix encoding shift_jis CustomerName only

I also got similar problem with this PR #9.
The problem is caused that qs-iconv module returns empty string when a field type number and a field value 0.
interface IExecTranArgs {
  ...
  CardSeq?: number
  ...
}

const execTranArgs = {
  ...
  // In this case, iconv-lite(used by qs-iconv) encode method returns a empty buffer list..
  // So it will be changed to empty string.
  CardSeq: 0,
  ...
}

const execTranArgs = {
  ...
  // In this case, iconv-lite(used by qs-iconv) encode method returns a buffer list includes a value 48 (decimal value of char '0').
  // So it will be changed to string '0'.
  CardSeq: '0',
  ...
}

I checked the PR #9. Separating method to post and postWithEncodeShiftJIS is also good this solution. But I worry to face with a same problem I mentioned above when I use a method postWithEncodeShiftJIS.
In my opinion, post body does not need to encode fields to shift_jis because usually fields have alphanumeric values, and if some of fields need to encode to shift_jis such as CustomerName then it should be encoded before calling post method.
Please check my approach.

Pull Request Test Coverage Report for Build 166

3 of 3 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 91.968%

Totals

Change from base Build 161:
0.0%

Covered Lines:
201

Relevant Lines:
209

💛  - Coveralls

I released this with #9 as v1.0.1. Thanks.


fix!: PolygonComponent no longer modifies _vertices

Description

PolygonComponent used to modify the contents of the _vertices list passed to it by offsetting them all by _topLeft. This prevented the user from using the same vertices list again, such as in another call to PolygonComponent. This PR stops PolygonComponent from directly modifying the list vectors and instead add the _topLeft offset where needed within internal code.
This is a breaking change since PolygonComponent's .vertices getter will now return the original, unmodified vertices rather than with the offset added.
Checklist

[X] The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
[X] I have followed the Contributor Guide when preparing my PR.
[X] I have updated/added tests for ALL new/updated/fixed functionality.
[X] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
[X] I have updated/added relevant examples in examples or docs.

Breaking Change?

Yes, to obtain the previous values of PolygonComponent .vertices subtract the polygon's top-left point vector from all vectors in the list returned the new output.

[X] Yes, this PR is a breaking change.
[ ] No, this PR is not a breaking change.

Related Issues

containsLocalPoint also has be modified

@ufrshubham I've just tried running the minimal code to reproduce provided in #1545 and it throws an exception when clicking: "Unsupported operation: Can only apply this effect to SizeProvider". So I don't know.

@ufrshubham I've just tried running the minimal code to reproduce provided in #1545 and it throws an exception when clicking: "Unsupported operation: Can only apply this effect to SizeProvider". So I don't know.

Ohh, my bad! I misread the description and thought this PR was fixing that issue 😅


Bugfix/pi in profile page

https://jira.movember.com/browse/TN-3217
Follow up fix to the comment
Scenario tested:

User unchecked all staff roles (staff, admin staff, clinician and primary investigator roles) ON the profile page
check only the Primary Investigator role on the profile page.

The fix is to display warning to user, note this will still result in ONLY the Primary Investigator role being selected, what to do here?  Do you auto-check one of the required roles? (i.e. staff, admin staff or clinician)?
(see screenshot):

@achen2401 I do want to clarify that the system did not actually save the PI only state, it just appeared to from a UI standpoint. The saved state was still PI + the previous role!

thanks @sierramatice I did fix that in this PR - the primary investigator role will be saved (without previous role(s)) in the scenario.


Using the output template to save to TXT

Checklist

[x] I'm asking a question
[x] I've looked through the README and FAQ for similar questions
[x] I've searched the bugtracker for similar questions including closed ones

Question

Hi. I simply wish to know how to use the Output template to pull video data such as the upload date and view count and save to a text document. Is this possible to do, and can you provide an example command?
youtube-dl --get-id --get-duration --get-title https://www.youtube.com/watch?v=NEmdbcW7D3Q >> example.txt pulls the ID, duration, and title and saves as a text document, as an example. But I am confused as to how to use the output template.

--write-info-json                Write video metadata to a .info.json file


Fixes issue with crashing linter rule, adds missing unit tests

Streamlines the auto-fix tests by using a test fixture setup for all auto fix tests
Adds our first multi-output unit test to the auto fix roster
Fixes a linting rule that was known to crash using some percy enhancements

The failure is, ironically, caused by the new WARNINGs error code. Exit code of 100 should be ignored by that GitHub action (as we are purposefully publishing this package as noarch)