CONTROLLER MANAGER NOT AVAILABLE

I did all the installations properly and all the controller packages are present but i am getting this error as controller manager  is not available  and also some error in  Loading parameter files panda_controller.yaml
" an error string (message, file name, or formatted message) will be truncated
[gzserver-1] [ERROR] [1712762426.399338901] [gazebo_ros2_control]: parser error Couldn't parse parameter override rule: '--param robot_description:=<?xml version="1.0" ?  "
but the same files when my friends are running in their system , there is no such error
The terminal log is :
ros2 launch panda_ros2_moveit2 panda_interface.launch.py
[INFO] [launch]: All log files can be found below /home/chytra/.ros/log/2024-04-10-20-50-15-816998-chytra-30077
[INFO] [launch]: Default logging verbosity is set to INFO
--- Cranfield University ---
(c) IFRA Group
ros2_RobotSimulation --> PANDA ROBOT
Launch file -> panda_interface.launch.py
Robot configuration:

Cell layout:

Option N1: PANDA ROBOT alone.
Option N2: PANDA ROBOT on top of a pedestal.
Please select: 1

End-effector:

No EE variants for this robot.
[INFO] [gzserver-1]: process started with pid [30078]
[INFO] [gzclient-2]: process started with pid [30080]
[INFO] [spawn_entity.py-3]: process started with pid [30082]
[INFO] [static_transform_publisher-4]: process started with pid [30084]
[INFO] [robot_state_publisher-5]: process started with pid [30086]
[static_transform_publisher-4] [WARN] [1712762422.478853131] []: Old-style arguments are deprecated; see --help for new-style arguments
[static_transform_publisher-4] [INFO] [1712762422.517003713] [static_transform_publisher]: Spinning until stopped - publishing transform
[static_transform_publisher-4] translation: ('0.000000', '0.000000', '0.000000')
[static_transform_publisher-4] rotation: ('0.000000', '0.000000', '0.000000', '1.000000')
[static_transform_publisher-4] from 'world' to 'base_link'
[robot_state_publisher-5] [INFO] [1712762422.559233237] [robot_state_publisher]: got segment end_effector_frame
[robot_state_publisher-5] [INFO] [1712762422.559639404] [robot_state_publisher]: got segment panda_hand
[robot_state_publisher-5] [INFO] [1712762422.559688412] [robot_state_publisher]: got segment panda_leftfinger
[robot_state_publisher-5] [INFO] [1712762422.559720011] [robot_state_publisher]: got segment panda_link0
[robot_state_publisher-5] [INFO] [1712762422.559747348] [robot_state_publisher]: got segment panda_link1
[robot_state_publisher-5] [INFO] [1712762422.559773791] [robot_state_publisher]: got segment panda_link2
[robot_state_publisher-5] [INFO] [1712762422.559800464] [robot_state_publisher]: got segment panda_link3
[robot_state_publisher-5] [INFO] [1712762422.559826760] [robot_state_publisher]: got segment panda_link4
[robot_state_publisher-5] [INFO] [1712762422.559852680] [robot_state_publisher]: got segment panda_link5
[robot_state_publisher-5] [INFO] [1712762422.559879619] [robot_state_publisher]: got segment panda_link6
[robot_state_publisher-5] [INFO] [1712762422.559905156] [robot_state_publisher]: got segment panda_link7
[robot_state_publisher-5] [INFO] [1712762422.559930500] [robot_state_publisher]: got segment panda_link8
[robot_state_publisher-5] [INFO] [1712762422.559956524] [robot_state_publisher]: got segment panda_rightfinger
[robot_state_publisher-5] [INFO] [1712762422.559983152] [robot_state_publisher]: got segment world
[spawn_entity.py-3] [INFO] [1712762423.663336869] [spawn_entity]: Spawn Entity started
[spawn_entity.py-3] [INFO] [1712762423.664368659] [spawn_entity]: Loading entity published on topic robot_description
[spawn_entity.py-3] /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/qos.py:307: UserWarning: DurabilityPolicy.RMW_QOS_POLICY_DURABILITY_TRANSIENT_LOCAL is deprecated. Use DurabilityPolicy.TRANSIENT_LOCAL instead.
[spawn_entity.py-3]   warnings.warn(
[spawn_entity.py-3] [INFO] [1712762423.669789230] [spawn_entity]: Waiting for entity xml on robot_description
[spawn_entity.py-3] [INFO] [1712762423.682461718] [spawn_entity]: Waiting for service /spawn_entity, timeout = 30
[spawn_entity.py-3] [INFO] [1712762423.683465258] [spawn_entity]: Waiting for service /spawn_entity
[gzserver-1] [WARN] [1712762425.645150010] [rcl]: Found remap rule 'model_states:=model_states'. This syntax is deprecated. Use '--ros-args --remap model_states:=model_states' instead.
[gzserver-1] [WARN] [1712762425.645884793] [rcl]: Found remap rule 'link_states:=link_states'. This syntax is deprecated. Use '--ros-args --remap link_states:=link_states' instead.
[gzserver-1] [INFO] [1712762425.669927246] [ros2_grasp.gazebo_ros_state]: Publishing states of gazebo models at [/ros2_grasp/model_states]
[gzserver-1] [INFO] [1712762425.671777571] [ros2_grasp.gazebo_ros_state]: Publishing states of gazebo links at [/ros2_grasp/link_states]
[spawn_entity.py-3] [INFO] [1712762425.696032370] [spawn_entity]: Calling service /spawn_entity
[spawn_entity.py-3] [INFO] [1712762426.265439714] [spawn_entity]: Spawn status: SpawnEntity: Successfully spawned entity [panda]
[gzserver-1] [INFO] [1712762426.371852073] [gazebo_ros2_control]: Loading gazebo_ros2_control plugin
[gzserver-1] [INFO] [1712762426.383758528] [gazebo_ros2_control]: Starting gazebo_ros2_control plugin in namespace: /
[gzserver-1] [INFO] [1712762426.383949624] [gazebo_ros2_control]: Starting gazebo_ros2_control plugin in ros 2 node: gazebo_ros2_control
[gzserver-1] [INFO] [1712762426.394198297] [gazebo_ros2_control]: connected to service!! robot_state_publisher
[gzserver-1] [INFO] [1712762426.396132022] [gazebo_ros2_control]: Received urdf from param server, parsing...
[gzserver-1] [INFO] [1712762426.396355166] [gazebo_ros2_control]: Loading parameter files /home/chytra/dev_ws/install/panda_ros2_gazebo/share/panda_ros2_gazebo/config/panda_controller.yaml
[gzserver-1] [rcutils|error_handling.c:65] an error string (message, file name, or formatted message) will be truncated
[gzserver-1] [ERROR] [1712762426.399338901] [gazebo_ros2_control]: parser error Couldn't parse parameter override rule: '--param robot_description:=transmission_interface/SimpleTransmissionhardware_interface/PositionJointInterface1transmission_interface/SimpleTransmissionhardware_interface/PositionJointInterface1</transmissi, at ./src/rcl/arguments.c:343
[gzserver-1]
[INFO] [spawn_entity.py-3]: process has finished cleanly [pid 30082]
[INFO] [spawner-6]: process started with pid [30238]
[spawner-6] [INFO] [1712762429.989689920] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[spawner-6] [INFO] [1712762432.010950208] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[spawner-6] [INFO] [1712762434.030649837] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[spawner-6] [INFO] [1712762436.052943414] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[spawner-6] [ERROR] [1712762438.073568862] [spawner_joint_state_broadcaster]: Controller manager not available
[ERROR] [spawner-6]: process has died [pid 30238, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner joint_state_broadcaster --controller-manager /controller_manager --ros-args'].
[INFO] [spawner-7]: process started with pid [30288]
[spawner-7] [INFO] [1712762441.936157430] [spawner_panda_arm_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [INFO] [1712762443.955729383] [spawner_panda_arm_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [INFO] [1712762445.979329911] [spawner_panda_arm_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [INFO] [1712762448.001306249] [spawner_panda_arm_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [ERROR] [1712762450.021742045] [spawner_panda_arm_controller]: Controller manager not available
[ERROR] [spawner-7]: process has died [pid 30288, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner panda_arm_controller -c /controller_manager --ros-args'].
[INFO] [spawner-8]: process started with pid [30329]
[spawner-8] [INFO] [1712762453.554101046] [spawner_panda_handleft_controller]: Waiting for '/controller_manager' node to exist
[spawner-8] [INFO] [1712762455.573604561] [spawner_panda_handleft_controller]: Waiting for '/controller_manager' node to exist
[spawner-8] [INFO] [1712762457.594105775] [spawner_panda_handleft_controller]: Waiting for '/controller_manager' node to exist
[spawner-8] [INFO] [1712762459.614263799] [spawner_panda_handleft_controller]: Waiting for '/controller_manager' node to exist
[spawner-8] [ERROR] [1712762461.636650464] [spawner_panda_handleft_controller]: Controller manager not available
[ERROR] [spawner-8]: process has died [pid 30329, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner panda_handleft_controller -c /controller_manager --ros-args'].
[INFO] [spawner-9]: process started with pid [30371]
[spawner-9] [INFO] [1712762465.244838456] [spawner_panda_handright_controller]: Waiting for '/controller_manager' node to exist
[spawner-9] [INFO] [1712762467.270624642] [spawner_panda_handright_controller]: Waiting for '/controller_manager' node to exist
[spawner-9] [INFO] [1712762469.293777957] [spawner_panda_handright_controller]: Waiting for '/controller_manager' node to exist
[spawner-9] [INFO] [1712762471.315332582] [spawner_panda_handright_controller]: Waiting for '/controller_manager' node to exist
[spawner-9] [ERROR] [1712762473.336833637] [spawner_panda_handright_controller]: Controller manager not available
[ERROR] [spawner-9]: process has died [pid 30371, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner panda_handright_controller -c /controller_manager --ros-args'].
[INFO] [moveJs_action-10]: process started with pid [30422]
[ERROR] [moveJs_action-10]: process has died [pid 30422, exit code 127, cmd '/home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveJs_action --ros-args -r __node:=moveJs_action --params-file /tmp/launch_params_cnzlvory --params-file /tmp/launch_params_vg7z7r5z --params-file /tmp/launch_params_injx5idf --params-file /tmp/launch_params_yfiuqqtx --params-file /tmp/launch_params_39tw1u91'].
[INFO] [moveG_action-11]: process started with pid [30424]
[ERROR] [moveG_action-11]: process has died [pid 30424, exit code 127, cmd '/home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveG_action --ros-args -r __node:=moveG_action --params-file /tmp/launch_params_98e24b_q --params-file /tmp/launch_params_zz6y2x6j --params-file /tmp/launch_params_fo721929 --params-file /tmp/launch_params_p9_0ctv7 --params-file /tmp/launch_params_99f7y28b'].
[INFO] [moveL_action-12]: process started with pid [30426]
[ERROR] [moveL_action-12]: process has died [pid 30426, exit code 127, cmd '/home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveL_action --ros-args -r _node:=moveL_action --params-file /tmp/launch_params_cf861v5u --params-file /tmp/launch_params_qhi7g7zi --params-file /tmp/launch_params_qesb5kje --params-file /tmp/launch_params_pjbeg5s7 --params-file /tmp/launch_params_dhl6t1t'].
[INFO] [moveRs_action-13]: process started with pid [30428]
[ERROR] [moveRs_action-13]: process has died [pid 30428, exit code 127, cmd '/home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveRs_action --ros-args -r __node:=moveRs_action --params-file /tmp/launch_params_0xpmwvnn --params-file /tmp/launch_params_ycy7_o6r --params-file /tmp/launch_params_oowt1mbp --params-file /tmp/launch_params_lcphfjzj --params-file /tmp/launch_params_ukfup4dq'].
[INFO] [moveXYZ_action-14]: process started with pid [30430]
[ERROR] [moveXYZ_action-14]: process has died [pid 30430, exit code 127, cmd '/home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveXYZ_action --ros-args -r __node:=moveXYZ_action --params-file /tmp/launch_params_a48ju8p3 --params-file /tmp/launch_params_phfizuus --params-file /tmp/launch_params_4mjl30oo --params-file /tmp/launch_params_0gw7ghri --params-file /tmp/launch_params_e383iqzc'].
[INFO] [moveXYZW_action-15]: process started with pid [30432]
[ERROR] [moveXYZW_action-15]: process has died [pid 30432, exit code 127, cmd '/home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveXYZW_action --ros-args -r __node:=moveXYZW_action --params-file /tmp/launch_params_7ivyzydo --params-file /tmp/launch_params_agw5gj2t --params-file /tmp/launch_params_ob70g6yd --params-file /tmp/launch_params_5cfjjtma --params-file /tmp/launch_params_q3lr_a7o'].
[INFO] [moveYPR_action-16]: process started with pid [30434]
[ERROR] [moveYPR_action-16]: process has died [pid 30434, exit code 127, cmd '/home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveYPR_action --ros-args -r __node:=moveYPR_action --params-file /tmp/launch_params_kuxbihi6 --params-file /tmp/launch_params_8cg5yx9w --params-file /tmp/launch_params_fz8jiwt6 --params-file /tmp/launch_params_9pr9wyjz --params-file /tmp/launch_params_sc0zqcbu'].
[INFO] [moveROT_action-17]: process started with pid [30436]
[ERROR] [moveROT_action-17]: process has died [pid 30436, exit code 127, cmd '/home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveROT_action --ros-args -r __node:=moveROT_action --params-file /tmp/launch_params_h94yd1lk --params-file /tmp/launch_params_9s7h5bmi --params-file /tmp/launch_params_dyt1u58l --params-file /tmp/launch_params_b86_qbtz --params-file /tmp/launch_params_d7ocwqct'].
[INFO] [moveRP_action-18]: process started with pid [30438]
[ERROR] [moveRP_action-18]: process has died [pid 30438, exit code 127, cmd '/home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveRP_action --ros-args -r __node:=moveRP_action --params-file /tmp/launch_params_ywn58f50 --params-file /tmp/launch_params_jrxgbjr9 --params-file /tmp/launch_params_gyr0jfph --params-file /tmp/launch_params_zesxmfll --params-file /tmp/launch_params_6cks045n'].
[INFO] [attacher_action.py-19]: process started with pid [30440]
[moveJs_action-10] /home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveJs_action: error while loading shared libraries: libmoveit_move_group_interface.so.2.5.4: cannot open shared object file: No such file or directory
[moveG_action-11] /home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveG_action: error while loading shared libraries: libmoveit_move_group_interface.so.2.5.4: cannot open shared object file: No such file or directory
[moveL_action-12] /home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveL_action: error while loading shared libraries: libmoveit_move_group_interface.so.2.5.4: cannot open shared object file: No such file or directory
[moveRs_action-13] /home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveRs_action: error while loading shared libraries: libmoveit_move_group_interface.so.2.5.4: cannot open shared object file: No such file or directory
[moveXYZ_action-14] /home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveXYZ_action: error while loading shared libraries: libmoveit_move_group_interface.so.2.5.4: cannot open shared object file: No such file or directory
[moveXYZW_action-15] /home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveXYZW_action: error while loading shared libraries: libmoveit_move_group_interface.so.2.5.4: cannot open shared object file: No such file or directory
[moveYPR_action-16] /home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveYPR_action: error while loading shared libraries: libmoveit_move_group_interface.so.2.5.4: cannot open shared object file: No such file or directory
[moveROT_action-17] /home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveROT_action: error while loading shared libraries: libmoveit_move_group_interface.so.2.5.4: cannot open shared object file: No such file or directory
[moveRP_action-18] /home/chytra/dev_ws/install/ros2_actions/lib/ros2_actions/moveRP_action: error while loading shared libraries: libmoveit_move_group_interface.so.2.5.4: cannot open shared object file: No such file or directory
[INFO] [rviz2-20]: process started with pid [30461]
[INFO] [move_group-21]: process started with pid [30463]

i have some question ,did you solve it?

you can try install gazebo_humble_ros2_controler version=0.4.6,if you are using 0.4.7, i had a same question

Were you able to solve it?

you can try install gazebo_humble_ros2_controler version=0.4.6,if you are using 0.4.7, i had a same question

How did you install: install gazebo_humble_ros2_controler version=0.4.6?

first uninstall
sudo apt remove gazebo_humble_ros2_controler
then
cd  ros2_ws/src
git clone -b 0.4.6 https://github.com/ros-controls/gazebo_ros2_control.git
cd ..
colcon build

@chytra3, I'm encountering the same issues. Up until a month ago, the simulation was running smoothly; however, for the past ten days, I've faced the parser error and the controller manager error.
It appears to be a recurring problem with this repository. A similar issue concerning parser problems has been documented here: https://github.com/IFRA-Cranfield/ros2_RobotSimulation/issues/27

first uninstall sudo apt remove gazebo_humble_ros2_controler then cd ros2_ws/src git clone -b 0.4.6 https://github.com/ros-controls/gazebo_ros2_control.git cd .. colcon build

I am about to try the solution proposed by @cncowboy. Fingers crossed.

Try removing all of the comments in your URDF/xacro files. This is what fixed it for me.

first uninstall sudo apt remove gazebo_humble_ros2_controler then cd ros2_ws/src git clone -b 0.4.6 https://github.com/ros-controls/gazebo_ros2_control.git cd .. colcon build

thank youu
this worked !!!
this is the only difference that i found between the working system (left one) and mine (right one )


Add Mode L2 bridged wstETH config

[x] mainnet config
[x] example of seed config for mainnet

To run:
yarn start configs/mode/mainnet.yml

$ ts-node src/state-mate.ts configs/mode/mainnet.yml
? No ABI directory found at configs/mode/abi. Download? yes
ERROR: Failed to download contract info from api.etherscan.io: NOTOK
{
  "status": "0",
  "message": "NOTOK",
  "result": "Missing/Invalid API Key"
}
Trace
    at logError (/home/dzhon/workspace/state-mate/src/state-mate.ts:247:11)
    at logErrorAndExit (/home/dzhon/workspace/state-mate/src/state-mate.ts:251:3)
    at _loadContractInfoFromEtherscanExplorer (/home/dzhon/workspace/state-mate/src/state-mate.ts:621:5)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async /home/dzhon/workspace/state-mate/src/state-mate.ts:686:51
    at async iterateDeployedAddresses (/home/dzhon/workspace/state-mate/src/state-mate.ts:655:7)
    at async downloadAndSaveAbis (/home/dzhon/workspace/state-mate/src/state-mate.ts:684:3)
    at async doChecks (/home/dzhon/workspace/state-mate/src/state-mate.ts:749:7)
    at async main (/home/dzhon/workspace/state-mate/src/state-mate.ts:817:5)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.


PHP Config tweak 'opcache.enable_file_override=1' breaks updater

PHP Version
7.4.33, 8.0.25, 8.1.12
Shopware Version
<IP_ADDRESS>
Actual behaviour
opcache.enable_file_override=1 is probably returning stale data and you will encounter errors like this while updating via admin-backend:
{"code":0,"message":"The file "vendor/react/promise/src/functions.php" was not supposed to exist.","file":"YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/knplabs/gaufrette/src/Gaufrette/Filesystem.php","line":63,"trace":"#0 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Update/src/Steps/UnpackStep.php(111): GaufretteFilesystem->rename()n#1 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Update/src/Controller/BatchController.php(95): ShopwareRecoveryUpdateStepsUnpackStep->run()n#2 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Update/src/app.php(96): ShopwareRecoveryUpdateControllerBatchController->unpack()n#3 [internal function]: Closure->{closure}()n#4 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func()n#5 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/Route.php(281): SlimHandlersStrategiesRequestResponse->__invoke()n#6 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): SlimRoute->__invoke()n#7 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/Route.php(268): SlimRoute->callMiddlewareStack()n#8 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/App.php(503): SlimRoute->run()n#9 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Update/src/app.php(71): SlimApp->__invoke()n#10 [internal function]: Closure->{closure}()n#11 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()n#12 [internal function]: SlimDeferredCallable->__invoke()n#13 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()n#14 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): SlimApp->Slim{closure}()n#15 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/App.php(392): SlimApp->callMiddlewareStack()n#16 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/App.php(297): SlimApp->process()n#17 YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Update/index.php(39): SlimApp->run()n#18 YOUR_SHOPWARE_ROOT/public/recovery/update/index.php(6): require_once('...')n#19 {main}"}

YOUR_SHOPWARE_ROOT/vendor/shopware/recovery/Common/vendor/knplabs/gaufrette/src/Gaufrette/Filesystem.php at line 63 throws UnexpectedFile($targetKey):
 55     public function rename($sourceKey, $targetKey)
 56     {
 57         self::assertValidKey($sourceKey);
 58         self::assertValidKey($targetKey);
 59
 60         $this->assertHasFile($sourceKey);
 61
 62         if ($this->has($targetKey)) {
 63             throw new Exception\UnexpectedFile($targetKey);
 64         }
 65
 66         if (!$this->adapter->rename($sourceKey, $targetKey)) {
 67             throw new \RuntimeException(sprintf('Could not rename the "%s" key to "%s".', $sourceKey, $targetKey));
 68         }
 69
 70         if ($this->isFileInRegister($sourceKey)) {
 71             $this->fileRegister[$targetKey] = $this->fileRegister[$sourceKey];
 72             unset($this->fileRegister[$sourceKey]);
 73         }
 74
 75         return true;
 76     }

Expected behaviour
with opcache.enable_file_override=0 updating works without any errors
Steps to Reproduce?
Tested and reproducible with common PHP versions (7.4, 8.0, 8.1) while upgrading from shopware <IP_ADDRESS> to <IP_ADDRESS>... but other updates will probably fail as well.
Filed this bug to be fixed in the docs as well here: https://github.com/shopware/docs/issues/777

It looks like you are updating using Zip. You should not use the Zip way and Use composer update instead.
I guess in the Web Updater is missing a opcache_reset call

As stated above this problem occurs only using the shopware admin-backend (web updater). Updates via zip file or composer are working fine.
To make things a bit more clear:
There is no bug in FroshTools but setting the recommended PHP config value  opcache.enable_file_override=1 breaks the shopware web updater! So it should either be removed from the tweaks (and docs) or shopware needs to fix their use of opcache file overwrites.
Right now if you stick to the docs (https://developer.shopware.com/docs/guides/hosting/performance/performance-tweaks#php-config-tweaks) or go by the FroshTools recommendation (https://github.com/FriendsOfShopware/FroshTools/blob/main/src/Components/Health/Checker/PerformanceChecker/PhpSettingsChecker.php#L50) your shopware-installation won't be updatable via the admin-backend (and leave you in a broken state after trying).

Hi @kr31n3r,
while it's no bug in froshtools, you might report it at shopware instead of here 🤔

See https://github.com/shopware/docs/issues/777#issuecomment-1332038494
tbh: nobody should use the web updater.


Current bower registration is for v1.1.4 not v1.1.5

The current bower registration (and the latest release in GitHub) is v1.1.4. v1.1.5 supports IE11 and hasn't changed for a while - it would be good if bower install jquery-fullscreen gave people the latest version.

+1


Add support for SET params with array

#236
Signed-off-by: Pavel Ershov<EMAIL_ADDRESS>

Hello @mad,
this PR allows to produce translation for setting collections in properties. However in my case it still fails on JanusGraph with Property value [[1, 2]] is of type class java.util.ArrayList is not supported.
Have you managed to configure it on JanusGraph side? If so, could you please share configuration.

I defined property with String[].class datatype, and StringArraySerializer do conversion from Iterable to String[]

Hello @mad,
could you please share your JanusGraph configuration?
attributes.custom.attribute1.attribute-class = java.lang.String[].class
attributes.custom.attribute1.serializer-class = org.janusgraph.graphdb.database.serialize.attribute.StringArraySerializer

Fails on startup in my case.

Hello @dwitry
class Scratch {
    public static void main(String[] args) {
        JanusGraph graph = JanusGraphFactory.open("inmemory");
        JanusGraphManagement mgmt = graph.openManagement();
        mgmt.makePropertyKey("P").dataType(String[].class).make();
        mgmt.commit();

        GraphTraversalSource traversal = graph.traversal();

        traversal.addV("A").property("P", Lists.newArrayList("a", "b")).iterate();
        Assert.assertArrayEquals(new String[] { "a", "b" }, (String[]) traversal.V().values("P").next());
        graph.close();
    }
}

It appears to me that this feature requires ArrayList<String> serialization not String[], @mad please correct if I'm wrong
Tested with https://github.com/pluradj/janusgraph-attribute-serializer
Merged to tinkerpop334
Resolves #236

@dwitry
No, default StringArraySerializer it is enough for handle String[] and all Iterable see StandardSerializer and ArraySerializer.convertInternal
But if we defined property with ArrayList data type we need to register special serializer that provided by https://github.com/pluradj/janusgraph-attribute-serializer


single thread cause core dump

I make the source code to generate the libopenblas*.a, and use the APIs in my.a. Then I make a new.so  including both libopenblas*.a and my.a,  and make an executable file that reference this new.so to test my code. When I use the multi-thread libopenblas*.a(just use "make ONLY_CBLAS=1"), the main() function works normally. but when I use the single-thread libopenblas*.a(use "make USE_THREAD=0"), the main() causes core dump--"segmentation fault(core dump)".
I tried version 0.2.18 and 0.2.20, but both has the core dump, even I just called functions that donot call openblas APIs.
My platform is allwinner-R16, CPU is ARMV7, and I made the libopenblas*.a with cross compiler.

Did you do a "make clean" before the second "make" with different options (the "make USE_THREAD=0") ?
Can you use a debugger (such as gdb) on that platform to find where the core dump occurs ?

@martin-frbg  thank you very much.

yes,  I make clean  first.
as i used a *.so, the gdb on my device noticed that "warning: unable to find dynamic linker breakpoint function. GDB will be unable to debug shared library initializers and track explicitly loaded dynamic code."
so it didnot tell the function having core dump. I will change *.so to just call *.c file, and use GDB to have a try. then I will update the results.

@qiankunhuanying  From your first post, looks like you have used the following steps to compile.
Compiling for Multithread - "make ONLY_CBLAS=1"
Compiling for single thread - "make USE_THREAD=0"
If the above are the steps that you followed, then they are not consistent with each other.
Could you try compiling single thread with "make ONLY_CBLAS=1 USE_THREAD=0" just to confirm that it is not related to using the make param. "ONLY_CBLAS=1"

Such crash is usually sign of calling convention mismatch, i.e ld.so calls library initialiser function before main()
probably best start is to run 'file' command against libc and init on the target system and your built .so files

@ashwinyes
I didnot describe concretely in my first post,

compiling for Multithread, I used
"make clean
make TARGET=ARMV7 HOSTCC=gcc CC=$TOOLCHAIN_BIN/arm-openwrt-linux-gcc AR=$TOOLCHAIN_BIN/arm-openwrt-linux-ar USE_THREAD=1 ONLY_CBLAS=1"
or
"make clean
make TARGET=ARMV7 HOSTCC=gcc CC=$TOOLCHAIN_BIN/arm-openwrt-linux-gcc AR=$TOOLCHAIN_BIN/arm-openwrt-linux-ar ONLY_CBLAS=1"

compiling for single thread, I used
"make clean
make TARGET=ARMV7 HOSTCC=gcc CC=$TOOLCHAIN_BIN/arm-openwrt-linux-gcc AR=$TOOLCHAIN_BIN/arm-openwrt-linux-ar USE_THREAD=0 ONLY_CBLAS=1"
So ,the difference is just the USE_THREAD

@martin-frbg @ashwinyes
I tried to call the functions ,which call openblas APIs, directely( not wrapper to a lib**.so) in main() by pthread_create() . Result is the same (core dump with single thread libopenblas.a, and the functions in pthread_create() didnot enter any more; normal with multithread libopenblas.a).
but if I call the functions() in main(), just as "function1(); function2() ;", it can work normally.
So ,I tried just linking libopenblas.a without calling my other functions. the same result comes.
As ,I used -lpthread and ./libopenblas.a in makefile , I guess maybe libopenblas.a of single thread would change the -lpthread, so it caused the confusion of pthread_create()? or there is a libpthread.so in libopenblas.a?

i also have a coredump when single thread.
my step is:
make clean
make USE_THREAD=0
make install
my test pragram is muti-thread runing in a docker with one cpu,the error info is:
BLAS : Program is Terminated. Because you tried to allocate too many memory regions.
Segmentation fault
that is why?
if i use single thread type,whether should i need set NUM_THREADS

@poryfly I also got your error info once, unfortunately, I saw the file USAGE.md, and get the information below:

"#### Program is Terminated. Because you tried to allocate too many memory regions

In OpenBLAS, we mange a pool of memory buffers and allocate the number of
buffers as the following.
#define NUM_BUFFERS (MAX_CPU_NUMBER * 2)

This error indicates that the program exceeded the number of buffers.
Please build OpenBLAS with larger NUM_THREADS. For example, make NUM_THREADS=32 or make NUM_THREADS=64.  In Makefile.system, we will set
MAX_CPU_NUMBER=NUM_THREADS."
And I set NUM_THREADS=64, but nothing changed... I have been very confused.

@qiankunhuanying @poryfly Could you let us know how many threads your program has running concurrently? And which OpenBLAS APIs are your threads calling?

@ashwinyes i just want to test single thread.so my docker(ubuntu) just have one cpu.my pragram has 5 threads.I call cblas_sgemm

@ashwinyes

For this issue, finally I reduced to just 2 threads, the main thread and the new thread created by pthread_create(). In this situation, if I use multithread openblas, core dump occured. But if I just call the function in main thread ,not using pthread_create(), it work normally.
As the interfaces that call Openblas APIs are provided by other people, I donot know the concrete APIs.

@poryfly I was able to reproduce your problem. And setting NUM_THREADS to a higher value solved the issue.
Here is how NUM_BUFFERS is defined.
(common.h) #define NUM_BUFFERS (MAX_CPU_NUMBER * 2)
(Makefile.system) -DMAX_CPU_NUMBER=$(NUM_THREADS)
(Makefile.system) - NUM_THREADS = $(NUM_CORES)
NUM_CORES is the number of cores on the machine where you are building OpenBLAS.
So if you are building from a docker with one cpu, NUM_CORES=1 and hence NUM_BUFFERS=2. This will not be enough for 5 threads. So if I hardcode NUM_THREADS=3, then NUM_BUFFERS=6 and it solves the problem.

@ashwinyes i have a question.now when i use single thread--USE_THREAD=0,why i should set NUM_THREADS.i think single thread donot need set NUM_THREADS

You are setting NUM_THREADS because eventually it is used to calculate NUM_BUFFERS, regardless of OpenBLAS  being single threaded or multithreaded.
When you call an API like SGEMM, it needs its own buffers to work on. So if you have a multithreaded program and you call SGEMM from multiple threads at the same, each invocation of SGEMM will require its own buffer.
Hope you understood. Agree that usage of word THREADS is a little misleading.

Did that fix your issue, @poryfly? Am asking as I'm running into a similar problem and want to know if this might help before really digging into it.


[Regression] Editor gets stuck when opening Sprite2D uv dialog

Tested versions
Reproducible since 241d45d063060cfddf77093d2cf0aad087118e35, related to https://github.com/godotengine/godot/pull/92731
System information
Linux Mint 21.3 (Virginia) - X11 - Vulkan (Mobile) - integrated AMD Unknown (RADV RENOIR) () - AMD Ryzen 7 4800U with Radeon Graphics (16 Threads)
Issue description
Godot editor gets stuck ( seems infinite loop ) when opening Sprite2D uv dialog.
Steps to reproduce

Add a Sprite2D to scene and attach a texture to it ( e.g. icon.svg ).

Click any of the following options:

Then editor is stuck.

Minimal reproduction project (MRP)
N/A

Thanks for the report! Consolidating in https://github.com/godotengine/godot/issues/92804, as this is due to the same cause.


HDDS-9563. Containerize website development server

This PR adds the required changes for creation of a docker file, which anybody can run with docker-compose and check changes on the go.
No package installations required.
What will this PR will do?

It will build an image with the node_modules already installed in it.
docker-compose up will create a container with the local changes mounted on this container.
Site will be available to view on localhost:3000 (default port mapping in the container)

What this means for the end-user?

While the site can be deployed without an image needing to be built, as discussed in the JIRA, we can make the developer work much smoother with a containerized environment
Any new contributor can just simply spin up a container from the image, and make changes in their local development directory
These changes will be picked up by the container in the mounted volume and live changes will be visible on localhost:3000

Thank you @errose28 for the review and for the improved ReadMe file reference.
The latest commit addressed the review comments.


Using figure elements with span-columns mixin results in sadness

It appears that mozilla and chrome both have a margin-before applied to figure elements. This causes the figure to take up a few ems more space than expected; breaking the grid :'(
A "workaround" is to remove the margin-before css attribute on all figures:
figure {
  -moz-margin-before: 0;
  -webkit-margin-before: 0;
  margin-before: 0;
}

My thinking is this may be something we want to merge in upstream somehow? Perhaps updating bourbon?

From my perspective, this is a Bitters, or maybe even normalize.css, feature.


Kafka/Python compatibility notes

Update the readme as discussed on #44.

Merging despite unrelated test failures.


Rounding Options Puzzle

I have a puzzle which has perplexed me.
Below, I list real-life use cases for how users want to round their numbers in Intl.NumberFormat.  I am trying to figure out some set of options that is capable of expressing these various different rounding strategies.
Compact Notation Rounding

Input
Style 1
Style 2
Style 3

1,234,000
1234K
1234K
1234K

123,400
123K
123K
123K

12,340
12K
12K
12.3K

1,234
1.2K
1.2K
1.23K

1,034
1K
1.0K
1.03K

.1034
.1
.10
.103

.1234
.12
.12
.123

English Descriptions

Style 1: When there are 2 or more digits before the decimal separator, round to the nearest integer.  Otherwise, round to 2 significant digits.  Strip trailing zeros.
Style 2: When there are 2 or more digits before the decimal separator, round to the nearest integer.  Otherwise, round to 2 significant digits.  Retain trailing zeros.
Style 3: When there are 3 or more digits before the decimal separator, round to the nearest integer.  Otherwise, round to 3 significant digits.  Strip trailing zeros.

Thoughts
Style 1 could be expressed as minFrac=0, maxFrac=0, and minSig=2, and when minSig is in conflict with maxFrac, minSig wins, except that we strip trailing zeros.  In other words, we could make Style 1 be expressed as:
{
  minimumFractionDigits: 0,
  maximumFractionDigits: 0,
  minimumSignificantDigits: 2
}

However, this approach is not capable of expressing Style 2.
We could have an option like "applyFractionGreaterThanIntDigits", which would mean to use minFrac/maxFrac when there are a certain number of integer digits, and minSig/maxSig when there are fewer.  This is not a very pretty option, but it is capable of expressing all three styles:

Option
Style 1
Style 2
Style 3

minimumFractionDigits
0
0
0

maximumFractionDigits
0
0
0

minimumSignificantDigits
1
2
1

maximumSignificantDigits
2
2
3

applyFractionGreaterThanIntDigits
2
2
3

Currency Rounding

Input
Style 1
Style 2
Style 3
Style 4

1
$1.00
$1
$1.00
$1.00

1.01
$1.01
$1.01
$1.00
$1.00

1.04
$1.04
$1.04
$1.05
$1.00

1.12
$1.12
$1.12
$1.10
$1.10

English Descriptions

Style 1: Round with 2 fixed fraction digits.
Style 2: Round with 2 fixed fraction digits, but strip trailing zeros if the fraction is zero.
Style 3: Nickel rounding: round to the nearest 0.05; display 2 fraction digits.
Style 4: Dime rounding: round to the nearest 0.1; display 2 fraction digits.

Thoughts
A simple boolean option "stripFractionWhenEmpty" would solve Style 2.
A simple boolean option "nickelRounding" would solve Style 3.
About Trailing Zeros
Note that minFrac already serves absolutely no purpose other than retaining trailing zeros.
Given that minFrac is really only about retaining trailing zeros, for Style 4, we could let minFrac be greater than maxFrac, but it is weird for a minimum to be greater than a maximum.
Since a lot of the problems in this section, as well as Style 2 in the previous section, involve various different ways of treating trailing zeros, maybe we could introduce a "trailingZeroStyle" option, an enum with several different options that encompass all of the use cases.
Distance Rounding

Input
Style 1
Style 2

60
50 yards
50 yards

220
200 yards
200 yards

450
450 yards
450 yards

490
500 yards
500 yards

530
550 yards
500 yards

590
600 yards
600 yards

English Descriptions

Style 1: Round to the nearest 50.
Style 2: Round to the nearest 50 when below 500, and the nearest 100 when above 500.

Thoughts
Style 1 can be represented by a variant of nickelRounding.  We could name the option nickelRoundingMagnitude, and if set, it would override fraction and significant rounding.  Alternatively, we could allow minFrac/maxFrac to be less than zero, in which case they express the power of 10 at which you round.
Style 2 involves a cutoff.  If we can't figure out how to support it, we could declare it out of scope.
Maybe we should throw the minFrac/maxFrac stuff out the door (keep it for backwards compatibility), and devise a whole new way of thinking about rounding strategies.
@echeran @ryzokuken

For the compact notation rounding, I was thinking that in the style of the idea of nickelRoundingMagnitude, we could explicitly control the style of compact rounding by keying the options by the magnitude of the compact number.
If this is what we have now:
{
  minimumFractionDigits: 0,
  maximumFractionDigits: 0,
  minimumSignificantDigits: 2
}

then what I'm thinking might be a new sibling key in that options map:
{
  roundingByMagnitude:
    {
      2: {minimumFractionDigits: 0,  maximumFractionDigits: 0},
      1: {minimumFractionDigits: 0,  maximumFractionDigits: 0},
      0: {minimumSignificantDigits: 2},
      -1: {minimumSignificantDigits: 2},
    }
}

In that example, we could say that any value with a magnitude less than the lowest key value (-1) takes the options for that lowest key value (magnitude = -1).  A similar thing for compact numbers with magnitudes 3, 4, and higher taking the options in the value of the largest key (mag = 2).
This functionality is still independent (orthogonal) to the need for stripFractionWhenEmpty, which happens after the conversion to compact (the "misc" in number -> compact -> rounding -> misc).

I think this is minimal set of options that covers all use cases except the distance cutoff case:

trailingZeros:

"auto" = obey mininumFractionDigits or minimumSignificantDigits (default behavior).
"strip" = always remove trailing zeros.
"stripIfInteger" = remove them only when the entire fraction is zero.
optional: "keep" = always keep trailing zeros according to the rounding magnitude.

nickelRounding:

true = the last digit before rounding should be a 0 or a 5.
false = the last digit can be any digit from 0 through 9 (default behavior).

In addition, we would make the following changes to the semantics of the existing options.  Note: I am using minSig, maxSig, minFrac, and maxFrac instead of the real, longer names, only to make this shorter and easier to read.

minSig, maxSig, minFrac, and maxFrac are allowed to coexist.

If a minimum comes into conflict with a maximum, the minimum wins.
Trailing zeros are retained according to the new trailingZeros option.

minSig can be greater than maxSig, and minFrac can be greater than maxFrac.

This enables the "dime rounding" use case.

minFrac and maxFrac can be less than zero.

This enables the first "distance rounding" use case.

I know options 2 and 3 are not very pretty, but I think they get the job done.  It's a starting point.
Examples
// Compact Style 1 (default for notation: "compact")
{
    minFrac: 0,
    maxFrac: 0,
    minSig: 2,
    trailingZeros: "strip"
}

// Compact Style 2 (retain trailing zeros)
{
    minFrac: 0,
    maxFrac: 0,
    minSig: 2
}

// Compact Style 3 (more significant digits)
{
    minFrac: 0,
    maxFrac: 0,
    minSig: 3,
    trailingZeros: "strip"
}

// Currency Style 1 (default currency style)
{
    minFrac: 2,
    maxFrac: 2
}

// Currency Style 1 Alternative with trailingZeros: "keep"
{
    maxFrac: 2,
    trailingZeros: "keep"
}

// Currency Style 2 (strip trailing zeros if they are all zero)
{
    minFrac: 2,
    maxFrac: 2,
    trailingZeros: "stripIfInteger"
}

// Currency Style 3 (nickel rounding)
{
    minFrac: 2,
    maxFrac: 2,
    nickelRounding: true
}

// Currency Style 4 (dime rounding)
{
    minFrac: 2,
    maxFrac: 1
}

// Distance Style 1 (nearest 50)
{
    maxFrac: -1,
    nickelRounding: true
}

Thoughts?

Algorithm for resolving minFrac, maxFrac, minSig, and maxSig.  I still need to think through the edge cases like 9.9999:

Let x be the input number.
Let mag be the base 10 algorithm of x, rounded down.
Let minSigScale be mag - minSig + 1
Let maxSigScale be mag - maxSig + 1
Let minScale be the maximum of (-1 * minFrac) and minSigScale
Let maxScale be the minimum of (-1 * maxFrac) and maxSigScale
If minScale > maxScale, let maxScale be minScale

Problem: this algorithm doesn't work for the dime rounding case. :(

If we could reinvent the existing rounding settings from scratch, I might propose that they be:

fractionDigits = combination of [minimum/maximum]FractionDigits
significantDigits = combination of [minimum/maximum]SignificantDigits
trailingZeros = enum explained above ("keep", "strip", "stripIfInteger")

Default: "keep"

If both fractionDigits and significantDigits are present, we could say that they have the semantics described for Compact Notation Rounding, where fractionDigits is a "maximum" and significantDigits is a "minimum".  The algorithm could be cleanly stated as:

Let result be ToRawPrecision(x, significantDigits)
If result.[[FractionDigitsCount]] <= fractionDigits:

Let result be ToRawFixed(x, fractionDigits)

We still need to cover the nickel and dime rounding cases.  We could shim it in as a more restricted version of ICU's rounding increment setting:

roundingIncrement = an integer, either 1 or 5 with any number of zeros.

Example values: 1 (default), 5, 10, 50, 100
Nickel rounding: { fractionDigits: 2, roundingIncrement: 5 }
Dime rounding: { fractionDigits: 2, roundingIncrement: 10 }

Here's how to express all the rounding styles using these four options:
// Compact Style 1 (default for notation: "compact")
{
    fractionDigits: 0,
    significantDigits: 2,
    trailingZeros: "strip",
}

// Compact Style 2 (retain trailing zeros)
{
    fractionDigits: 0,
    significantDigits: 2,
}

// Compact Style 3 (more significant digits)
{
    fractionDigits: 0,
    significantDigits: 3,
    trailingZeros: "strip",
}

// Currency Style 1 (default currency style)
{
    fractionDigits: 2,
}

// Currency Style 2 (strip trailing zeros if they are all zero)
{
    fractionDigits: 2,
    trailingZeros: "stripIfInteger"
}

// Currency Style 3 (nickel rounding)
{
    fractionDigits: 2,
    roundingIncrement: 5,
}

// Currency Style 4 (dime rounding)
{
    fractionDigits: 2,
    roundingIncrement: 10,
}

// Distance Style 1 (nearest 50)
{
    fractionDigits: 0,
    roundingIncrement: 50
}

Great!  Okay, so then working backwards, how do we map this onto the existing options?
We could say that if both minFrac/maxFrac and minSig/maxSig are present, then we use a slightly modified version of the above algorithm for resolving them:

Let result be ToRawPrecision(x, minSig, maxSig)
If result.[[FractionDigitsCount]] <= minFrac:  // TODO: minFrac or maxFrac here?

Let result be ToRawFixed(x, minFrac, maxFrac)

As it is currently, if a trailing zero is to be retained, it must be "protected" by minFrac or maxFrac.
The styles can then be expressed as:
// Compact Style 1 (default for notation: "compact")
{
    minFrac: 0,
    maxFrac: 0,
    minSig: 2,
    maxSig: 2,
    trailingZeros: "strip",
}

// Compact Style 2 (retain trailing zeros)
{
    minFrac: 0,
    maxFrac: 0,
    minSig: 2,
    maxSig: 2,
}

// Compact Style 3 (more significant digits)
{
    minFrac: 0,
    maxFrac: 0,
    minSig: 3,
    maxSig: 3,
    trailingZeros: "strip",
}

// Currency Style 1 (default currency style)
{
    minFrac: 2,
    maxFrac: 2,
}

// Currency Style 2 (strip trailing zeros if they are all zero)
{
    minFrac: 2,
    maxFrac: 2,
    trailingZeros: "stripIfInteger"
}

// Currency Style 3 (nickel rounding)
{
    minFrac: 2,
    maxFrac: 2,
    roundingIncrement: 5,
}

// Currency Style 4 (dime rounding)
{
    minFrac: 2,
    maxFrac: 2,
    roundingIncrement: 10,
}

// Distance Style 1 (nearest 50)
{
    minFrac: 0,
    maxFrac: 0,
    roundingIncrement: 50
}

Thoughts?  @ryzokuken @echeran

In the previous comment, I see the progression of thought from fractionDigits and significantDigits and how it maps onto the existing options to achieve the originally categorized styles.  But I don't know if that solves some of the outlier cases (ex: 123,400 and 1,234,000).
We have:
// Compact Style 1 (default for notation: "compact")
{
    minFrac: 0,
    maxFrac: 0,
    minSig: 2,
    maxSig: 2,
    trailingZeros: "strip",
}

But for Style 1, the input 1,234,00 after compact rounding becomes 123K, which has 3 significant digits, more than maxSig: 2.  I think that was where we were noticing before in our previous discussion (@sffc @ryzokuken ) that the parameters to achieve Style 1 are not consistent across all cases in the original table, where each case corresponds to a different magnitude.  And the current compact number format code (Style 1) effectively does magnitude-based logic for the compact number, just described differently (checking whether the num of digits in the integer part of the compact rounded floating point is < 2).
To the comment before that, that lays out 3 changes, in which changes ("options"?) 2 & 3 are admittedly ugly, I still prefer to avoid that if at all possible.  I understand the motivation -- simplify the logic / algorithm -- but the tradeoff / cost comes in the mental overhead of mixed semantics.  We allow minFrac to be greater than maxFrac only if we explain that we additionally reinterpret their meanings as guaranteed number of fractional digits including trailing zeroes, and max fractional significant digits.  "Mental overhead" is a usually a sign of complexity -- in this case, it's the intertwining of 2 different semantics in one term.  Allowing this kind of complexity to leak to the user seems undesirable to me.
I don't know how to get around the magnitude-dependent way in which the desired formatting behavior seem to be defined (ex: 123,400 -> 123K; 1,234 -> 1.2K).  I'd prefer to have that fact just be represented clearly in the user-provided data, which makes it explicit and flexible for the user.

But for Style 1, the input 123400 after compact rounding becomes 123K, which has 3 significant digits, more than maxSig: 2.

Right.  The behavior is unintuitive in the compact notation case, but it is consistent with the algorithm, which is clean and simple.

To the comment before that, that lays out 3 changes, in which changes ("options"?) 2 & 3 are admittedly ugly, I still prefer to avoid that if at all possible. I understand the motivation -- simplify the logic / algorithm -- but the tradeoff / cost comes in the mental overhead of mixed semantics.

Noted.  We may be able to get around the mixed semantics if we use the roundingIncrement option for dime rounding instead of the minFrac > maxFrac solution.
Maybe we could propose the four options (trailingZeros, roundingIncrement, and the new fractionDigits and significantDigits options), and consider [min/max][Frac/Sig] as a historical artifact, which can still be used, but which have odd behavior in some cases.
Or maybe we can take the less-clean version of the algorithm for mixing minSig with maxFrac, combined with trailingZeros and roundingIncrement.

I don't know how to get around the magnitude-dependent way in which the desired formatting behavior seem to be defined (ex: 123,400 -> 123K; 1,234 -> 1.2K). I'd prefer to have that fact just be represented clearly in the user-provided data, which makes it explicit and flexible for the user.

Also noted.  The option you suggested makes the magnitude cutoff explicit.  We'd still need the roundingIncrement and trailingZeros options in order to cover currency and distance.

Note to self: I intend to make a little web app to demonstrate the three main approaches listed in this thread.  This will help us better understand the limitations of each option.

Here's my latest attempt.  I think it's the cleanest one so far.  Keep maximum* talking about rounding magnitude, and minimum* talking about display magnitude (trailing zeros).  Then, introduce a mode for both rounding and display magnitude to choose the smaller or the greater of the two conflicting options, called "loose" and "strict" below.
I also made an HTML page for playing around a bit, available here.
Examples
maxFrac = 0, maxSig = 2

maxMode=loose
maxMode=strict

1234
1200

123
120

12
12

1.2
1

.1
0

minFrac = 1, minSig = 2

minMode=loose
minMode=strict

80.0
80

8.0
8.0

.80
.8

maxFrac = 0, maxSig = 2, maxMode = loose

minSig=1
minSig=2

1034
1034

103
103

10
10

1
1.0

.1
.1

Just to make this more concrete: here is my updated set of options:

roundingPreference

"significantDigits" (default): ignore fraction digit settings if present.
"higherMagnitude": when maximumFractionDigits and maximumSignificantDigits conflict, favor the one that results in rounding at a higher magnitude (fewer significant digits in the resulting output)
"lowerMagnitude": when maximumFractionDigits and maximumSignificantDigits conflict, favor the one that results in rounding at a lower magnitude (more significant digits in the resulting output)

roundingIncrement: behavior proposed at https://github.com/tc39/proposal-intl-numberformat-v3/issues/8#issuecomment-619304130: either 1 or 5 followed by any number of zeros.
trailingZeroDisplay

"auto": current behavior. Keep trailing zeros according to minimumFractionDigits and minimumSignificantDigits.
"stripIfInteger": same as "auto", but remove the fraction digits if they are all zero.

Bikeshed for the roundingPreference option:

roundingPriority: "significantDigits", "morePrecision", "lessPrecision"

Here's a visualization:

2021-03-11 TC39-TG2 notes: https://github.com/tc39/ecma402/blob/master/meetings/notes-2021-03-11.md#rounding-options-puzzle-8

Please fill out this Doodle if you would like to attend a deep-dive to work this out:
https://doodle.com/poll/zbf68rcw6k9ztre9?utm_source=poll&utm_medium=link

2021-04-06: @gibson042 is now aligned with my mental model given the following explanation: maximumFractionDigits must be interpreted to mean, "round the number at a specific power of 10".  So, for example, "maximumFractionDigits: 2" means "round the number at 10^-2" or equivalently "round the number at the hundredths place".
So, for instance, if we had the settings
{
    maximumFractionDigits: 2,
    maximumSignificantDigits: 2
}

Those settings mean:

Round the number at the hundredths place
Round the number after the second significant digit

Now, consider the number "4.321".  maximumFractionDigits wants to round at the hundredths place, producing "4.32".  However, maximumSignificantDigits wants to round after two significant digits, producing "4.3".  We therefore have a conflict.
The new setting roundingPriority offers a hint on how to resolve this conflict.  There are three options:

roundingPriority: "significantDigits" means that significant digits always win a conflict.
roundingPriority: "morePrecision" means that the result with more precision wins a conflict.
roundingPriority: "lessPrecision" means that the result with less precision wins a conflict.

This resolution algorithm applies separately between the maximum digits settings and the minimum digits settings.  So, for example, suppose you had
{
    minimumFractionDigits: 2,
    minimumSignificantDigits: 2
}

Consider the input number "1".  minimumFractionDigits wants to retain trailing zeros up to the hundredths place, producing "1.00", whereas minimumSignificantDigits wants to retain only as many as are required to render two significant digits, producing "1.0".  We again have a conflict, and the conflict is resolved in the same way.
I will work on additional examples and explanations.  But I think we made a whole lot of progress in explaining this model in a way that makes sense.

I like that explanation, very clear. I suppose that logically there is one
additional possible option. But I don't know that the result would be
something that would find real-world application.

roundingPriority: "fractionDigits" means that fraction digits always
wins a conflict.

Mark
On Tue, Apr 6, 2021 at 2:48 PM Shane F. Carr @.***>
wrote:

2021-04-06: @gibson042 https://github.com/gibson042 is now aligned with
my mental model given the following explanation: maximumFractionDigits
must be interpreted to mean, "round the number at a specific power of 10".
So, for example, "maximumFractionDigits: 2" means "round the number at
10^-2" or equivalently "round the number at the hundredths place".
So, for instance, if we had the settings
{
maximumFractionDigits: 2,
maximumSignificantDigits: 2
}
Those settings mean:

Round the number at the hundredths place
Round the number after the second significant digit

Now, consider the number "4.321". maximumFractionDigits wants to round at
the hundredths place, producing "4.32". However, maximumSignificantDigits
wants to round after two significant digits, producing "4.3". We therefore
have a conflict.
The new setting roundingPriority offers a hint on how to resolve this
conflict. There are three options:

roundingPriority: "significantDigits" means that significant digits
always win a conflict.
roundingPriority: "morePrecision" means that the result with more
precision wins a conflict.
roundingPriority: "lessPrecision" means that the result with less
precision wins a conflict.

This resolution algorithm applies separately between the maximum digits
settings and the minimum digits settings. So, for example, suppose you had
{
minimumFractionDigits: 2,
minimumSignificantDigits: 2
}
Consider the input number "1". minimumFractionDigits wants to retain
trailing zeros up to the hundredths place, producing "1.00", whereas
minimumSignificantDigits wants to retain only as many as are required to
render two significant digits, producing "1.0". We again have a conflict,
and the conflict is resolved in the same way.
I will work on additional examples and explanations. But I think we made a
whole lot of progress in explaining this model in a way that makes sense.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/tc39/proposal-intl-numberformat-v3/issues/8#issuecomment-814459945,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACJLEMHZ5535GMKUNDPYIXTTHN6SRANCNFSM4MOWPKNQ
.


Extension removes all cell metadata on execute

Bug: Notebook Editor, Interactive Window, Editor cells
Steps to cause the bug to occur
1.) Open or create a notebook in using jupyter lab
2.) Save a few cells and insert cell metadata for those cells
3.) Save notebook and close
4.) Open same notebook in vscode
5.) Execute those cells
Actual behavior
All cell metadata is deleted upon execution of the cell in vscode
Expected behavior
Cells should inherit the metadata originally entered.

Your Jupyter and/or Python environment
Please provide as much info as you readily know

Jupyter server running:                       Local
Extension version:                               2020.1.58038
VS Code version:                                Version: 1.41.1
Setting python.jediEnabled:               ?
Python and/or Anaconda version:    Python 3.7.4
OS:                                                        Mac:
Virtual environment:                          conda

I am running this off of a docker container https://github.com/jupyter/docker-stacks/blob/master/scipy-notebook
I am not sure that matters. I can connect and run cells just fine. But the cell metadata is overwritten when executing the cells in vscode.
I did see this error in the console, but I'm not sure if it was related:
[E 13:27:18.397 LabApp] Notebook JSON is invalid: 'ename' is a required property

    Failed validating 'required' in error:

    On instance['cells'][0]['outputs'][0]:
    {'evalue': 'Error: Failed to connect to remote Jupyter notebook.\r\n'
               'Check that...',
     'output_type': 'error'}

Thank you for letting us know @gitjeff05. I've been trying it and I can also reproduce the issue. We'll get to it shortly.

@gitjeff05 We have fixed part of the issue, we now no longer add invalid metadata into the cells. I.e. the JSON is now valid when you attempt to open the notebook from Jupyter Notebooks/labs or similar.
However the issue with throwing away the metadata still exists.

Validated. Cell metadata is now maintained.


Add five bucks

Add five bucks

Nice feature! Add it to the README & I'll get this merged

Thanks for contributing @sea-erkin!


Don't override Authorization header when contents are bearer token (or any other token)

I found out that the requests lib is overriding the authorization header when a netrc file is in place, which is awesome. But in some cases you won't want this at all, and is a design flaw imo.
For example you use a bearer token, it gets replaced by the user/password from netrc.
Also see the issue here: https://github.com/python-social-auth/social-core/issues/43

This behaviour can be overridden by trust_env, which allows you to instruct Requests to ignore the .netrc file. Is that sufficient for your purposes?

Well, if you look at the issue of the social auth library, you may see that it's really nice to override the user/pass.
Short explanation about my situation related to social library:
I'm using a webservice that requires you to use the username/password HTTP authentication, for this I require  the use of .netrc which is perfect. But on the same domain/path there is a oAuth2 endpoint that uses the Authorization header with the oAuth tokens.
If the .netrc feature/standard is only supporting username/password, why not replacing header when not containing a bearer or any other token. This could be done with checking the contents if the header is manually provided.

So, I am open to that, but nervous about it. There are failure modes at either side, and trying to be "clever" may cause us to just be difficult to understand. The virtue of the model we have today is that it is very simple and consistent. So my question stands: do the functions currently available suffice for your use case?

Well I agree on the fact that it's not really nice to change such behavior right now as it's always breaking something. And indeed the usage of the trust_env is a good option, but in this case the author of the library should give us an option to enable/disable it as a backend developer. Also the trust_env will disable more environmental settings or behavior and not only the netrc function, like proxy settings if I understood right.
Another option would be turning it on/off per request that overrides the session trust_env, or have another way to not override one specific header.
Anyway, the module is already trying to be "clever" by replacing the whole header :smiley: . Which is great when you have full control over the Session.

So it is quite possible that the library wrapping requests should be setting trust_env to False if it is handling headers itself.

Yep, and that should be the case. But it remains that if you have mixed requests, like I have, it's kinda hard to manage. You need to have two sessions.

Well, you don't really. You can just flip the setting around as-and-when you need it.
However, here's a framework I'd consider for handling auth in the 3.0 branch. I'd welcome a PR to make this the case.

If the user sets an Authorization header themselves, either via the request or on the Session, we don't bother to look at the netrc file.
If they didn't, we look at the netrc file for basic auth.
If we get redirected, we fall back to only looking at the netrc file (which we already currently do).

Does that sound like a reasonable approach to your case?

That sounds like a pretty clear way to solve this case. Only downside is that it can cause breaking code. But it's better to not force override when user manually given the details in my opinion.
I'm not sure if I'm capable of doing the PR myself due to time limits.

I encountered this problem when trying to figure out why the python-digitalocean module was failing due to an unexpected authentication error.
The root cause turned out to be this default directive in my $HOME/.netrc:
default login anonymous password anonymous@
which I used, many years ago, to automate my anonymous FTP logins.
I'm surprised that this directive in my .netrc would cause Requests to automatically override the authentication information that is being specified explicitly by python-digitalocean, especially since the directive is merely setting default login information that is used when accessing a host that lacks an explicit machine entry in .netrc.
So I like @Lukasa's idea above: when the caller specifies an Authorization header, I think the .netrc directives (whether default or machine) should be ignored. Thanks!

Got bite by this one as well :(
To answer @Lukasa question:

do the functions currently available suffice for your use case?

I would say no, because trust_env is not only netrc, it's also REQUESTS_CA_BUNDLE for instance. Right now it's a little too much "take it or leave it" for the entire set of possible env stuff I could want to use :(

It would be nice to allow to disable reading from .netrc explicitly. Currently, it looks requests also handles an existing .netrc even if for requests.get which is expected to be a anonymous request in most cases.

How about provide a auth class something like NetrcAuth instead?

Coming here after spending several hours debugging an issue which ended up being the presence of a ~/.netrc file. This behavior violates POLA and should be explicitly enabled rather than enabled by default.

I lost half a day because I could not log to production any more, and I couldn't find the issue in our infrastructure. Found out it was because I stored my password in ~/.netrc and requests read it and added an Authorization header when I was using a Bearer instead, and got rejected from the server.
It should only happen with an explicit BasicAuth().

This issue still exists.
Ideally, requests would only use the credentials in the netrc when there is no authorization header explicitly supplied.

I think this behavior should be changed. I installed an FTP package that silently generated a sample ~/.netrc. This prevented me from using gcloud (the GCP CLI) because gcloud uses Requests and Requests prefers ~/.netrc over gcloud's OAuth headers. I agree fullly with Lord-of-the-Galaxy's suggestion.

I also just came across this behavior (based on a user report and it took us about a month to figure out that the presence of a .netrc was the "issue" in the user's environment)
It's quite incredible that python-requests will overwrite a header explicitly set by the programmer - I mean, I'm not writing headers={'Authorization': 'xyz'} for fun in my code!

I also spent a while debugging this exact problem, and I'll add my voice: requests should not override an explicitly set "Authentication" header.

It's disappointing to say the least.

I also struggled with this problem for about a day and had to dig deep into the http library to figure out that my .netrc file (which was valid but for another host was to blame). No warnings, nothing.
The behavior doesn't makes sens, and is also inconsistent.

If you set basic permissions in the request using the "auth" parameters, this is used, and .netrc is ignored
If you explicitly set "Authorization: Bearer ", in the header, then this is ignored, .netrc us used

I thin its fair to call this a bug, that has cos a lot of working hours for many people. In mycase i need to keep the .netrc file for another API
A workaround for the bug is somting like this
s=requests.Session()         s.trust_env=False     response = s.get(CUSTOMER_LOCATIONS_ENDPOINT, headers = hdr, data=data2, verify=None)
So 3 lines of code, instead of one for the same operation


the checkboxes in the grid are toggled only upon clicking on the checkbox twice

Repro Steps:

open a page that hosts this grid.
make sure there is at least one record in the grid.
click on the checkbox on one of the records

the record is checked.

do not move the mouse at all.
click on the checkbox once again.

the checkbox is not toggled.

Observed Results:

It takes two clicks to toggle a record (when the mouse is not moved)

Expected Results:

The record should be toggled upon clicking the checkbox once.

PS: The toggle functionality is working as expected when the mouse is moved between clicks.

Could not repro.

I tried repro'ing it. Looks like the issue is not with movement of the mouse, but with how fast I want to toggle the checkbox. This can be repro'ed if one keeps clicking on the checkbox (continuously, with no much delay between the clicks). It will be observed that only after a couple of clicks does the checkbox toggle.


Fix #5516: Refactor elasticsearch indexes to be same as entity specifications

Describe your changes :

Type of change :

[x] Improvement

Frontend Preview (Screenshots) :
For frontend related change, please link screenshots of your changes preview! Optional for backend related changes.

Checklist:

[x] I have read the CONTRIBUTING document.
[ ] I have commented on my code, particularly in hard-to-understand areas.
[ ] I have added tests that prove my fix is effective or that my feature works.
[x] All new and existing tests passed.

Reviewers

@vivekratnavel @Sachin-chaurasiya search responses and API is changed to be exactly like our entity schemas. This requires some changes on the UI side on how we query the apis.
@pmbrull lets sync and see what you need from the APIs
@ulixius9 this requires changes where ever we are querying elasticsearch in ingestion

@Sachin-chaurasiya Let's push required UI changes to this PR


andle wildcards in monitor destinations

Environment

ACC Version: 16.1.0
AS3 Version: 3.32.0
BIG-IP Version: 14.1.4

Summary
If there is no Ip address given in alias for tcp ( and maybe others) monitor but port is defined there is a problem with convertions.
Steps To Reproduce
Steps to reproduce the behavior:

Convert following config:

ltm monitor tcp /Common/test_target {
    adaptive disabled
    defaults-from /Common/tcp
    destination *.514
    interval 5
    ip-dscp 0
    recv none
    recv-disable none
    send none
    time-until-up 0
    timeout 3
}

Converted to:
{
    "class": "ADC",
    "schemaVersion": "3.31.0",
    "id": "urn:uuid:52857963-00c9-4a7b-b198-5e616808e7fe",
    "label": "Converted Declaration",
    "remark": "Auto-generated by AS3 Config Converter",
    "Common": {
        "class": "Tenant",
        "Shared": {
            "class": "Application",
            "template": "shared",
            "test_target": {
                "adaptive": false,
                "dscp": 0,
                "receive": "",
                "receiveDown": "",
                "send": "",
                "timeout": 3,
                "class": "Monitor",
                "monitorType": "tcp",
                "targetAddress": "*.514",
                "transparent": false,
                "reverse": false
            }
        }
    }
}

//////////////////OR :
ltm monitor tcp /Common/test_target {
    adaptive disabled
    defaults-from /Common/tcp
    destination *:514
    interval 5
    ip-dscp 0
    recv none
    recv-disable none
    send none
    time-until-up 0
    timeout 3
}

Converted to:
{
    "class": "ADC",
    "schemaVersion": "3.31.0",
    "id": "urn:uuid:bcc33d69-c4b2-49ef-b1cd-b604ceb2f6fa",
    "label": "Converted Declaration",
    "remark": "Auto-generated by AS3 Config Converter",
    "Common": {
        "class": "Tenant",
        "Shared": {
            "class": "Application",
            "template": "shared",
            "test_target": {
                "adaptive": false,
                "dscp": 0,
                "receive": "",
                "receiveDown": "",
                "send": "",
                "timeout": 3,
                "class": "Monitor",
                "monitorType": "tcp",
                "targetPort": 0,
                "transparent": false,
                "reverse": false
            }
        }
    }
}%

Observe the following error message once try to deploy first covnersion:

{
  "code": 422,
  "errors": [
    "/Common/Shared/test_target/targetAddress: should match format \"f5ip\""
  ],
  "declarationFullId": "",
  "message": "declaration is invalid"
}

Second one result in port 0 (in fact all ports)  instead of desired one.
Expected Behavior
Properly convert to target address and target port.
Actual Behavior
Wrong logic in conversion for wildcard IP and specific port given.

Issue forwarded to AS3 team: https://github.com/F5Networks/f5-appsvcs-extension/issues/528


Fixed grid item support

This PR adds support to fixed elements inside the grid. Those elements aren't affected by other elements rearrangement.

In this example the O letter has the fixed property

@ollija could you please review this PR and give me some feedback?

👍  Working well! Exactly what I needed for in my project.

@danbtl glad to hear that 😄

Awesome, many thanks @eduardojunio
Hope this'll be merged soon

Merged this into a fork. Works wonders. Thanks @eduardojunio.
Forked code: https://github.com/reidkersey/react-native-sortable-grid

Closing this PR since it has been 4 years already and the library maintainer didn't left any feedback.


0.57 Getting Started docs

React native 0.57 updated it's android dependencies so Android SDK Platform 23 is no longer valid,
So do these docs need to be updated?
Next, select the "SDK Tools" tab and check the box next to "Show Package Details" here as well. Look for and expand the "Android SDK Build-Tools" entry, then make sure that 23.0.1 is selected.

Resolved.


player.search fails to find any results for a query

Trying to search for a query always returns no search results when we have discord-player-youtubei registered.
Same issue persists with or without authentication
Adding debug info below
C:\Users\Febkosq8\Documents\Git\Jappan_Discord_Bot>npm list
<EMAIL_ADDRESS>C:\Users\Febkosq8\Documents\Git\Jappan_Discord_Bot
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>└──<EMAIL_ADDRESS>
Player Deps
[NOTICE] playerDeps being logged to console
Discord Player
--------------------------------------------------
- discord-player: 6.6.10
- discord-voip: 0.1.3
- discord.js: 14.15.3
- Node version: v20.13.1 (Detected Runtime: Node, Platform: win32 [x64])
- ffmpeg: 7.0-full_build-www.gyan.dev
- command: ffmpeg
- static: false
- libopus: true

Loaded Extractors:
--------------------------------------------------
com.retrouser955.discord-player.discord-player-youtubei
com.discord-player.spotifyextractor
com.discord-player.applemusicextractor
com.discord-player.soundcloudextractor
com.discord-player.vimeoextractor
com.discord-player.reverbnationextractor
com.discord-player.attachmentextractor

discord-voip
--------------------------------------------------
Core Dependencies
- discord-voip: 0.1.3
- @discord-player/opus: 0.1.2
- prism-media: 1.3.5

Opus Libraries
- mediaplex: 0.0.9
- @discordjs/opus: not found
- opusscript: not found

Encryption Libraries
- sodium-native: not found
- sodium: not found
- libsodium-wrappers: 0.7.13
- tweetnacl: not found

FFmpeg
- version: 7.0-full_build-www.gyan.dev
- libopus: yes
- static: no
--------------------------------------------------

index.js - Loading the extractor
...
const { Player, useMainPlayer } = require("discord-player");
const { YoutubeiExtractor } = require("discord-player-youtubei");
const player = new Player(client, { skipFFmpeg: false });
await player.extractors.register(YoutubeiExtractor, {});
await player.extractors.loadDefault((ext) => ext !== "YouTubeExtractor");
...

play.js
...
const query = interaction.options.getString("query");
const searchResult = await player.search(query, {
	requestedBy: interaction.user,
	fallbackSearchEngine: "youtubeSearch",
});
console.log({ searchResult });

if (!searchResult.hasTracks()) {
	return await interaction.editReply(`We found no tracks for ${query}!`);
} else {
	await PlayerHandler.playGuildPlayer({ interaction, searchResult });
}
...

output of searchResult on a sample play query of "boy bad"
{
  searchResult: SearchResult {
    player: Player {
      _events: [Object: null prototype] {},
      _eventsCount: 0,
      _maxListeners: undefined,
      requiredEvents: [Array],
      id: '1256888139293659136',
      nodes: [GuildNodeManager],
      voiceUtils: [VoiceUtils],
      extractors: [ExtractorExecutionContext],
      events: [PlayerEventsEmitter],
      routePlanner: null,
      version: '6.6.10',
      lyrics: [LrcLib],
      client: [Client],
      options: [Object],
      [Symbol(shapeMode)]: false,
      [Symbol(kCapture)]: false
    },
    _data: {
      query: 'boy bad',
      queryType: 'youtubeSearch',
      requestedBy: [User],
      extractor: undefined
    }
  }
}

Heyyy @febkosq8 could you try 1.0.2? This version includes fixes by @zijipia.
If that doesn't work, could you try manually searching with YouTubei.js?
typescript
import Innertube from "youtubei.js"

const tube = await Innertube.create()

console.log((await tube.search('boy bad')).results)

As per Discord, it is confirmed that search has been fixed and now streaming content is not working. Investigating this rn!

Solved with #5 and v1.0.7
Can play youtube songs and playlists now


WSS not connected

my web socket secure not connected in askless, but connect in another app, what is wrong?

I'm not sure, please check if your App is using the correct URL starting with wss:// and if the URL you mentioned is actually hosting the Askless backend server (not another server)
Please try to solve your problem searching about WebSocket encryption, I will close the issue because it doesn't look like an Askless issue


[#182] Add support for GenQuery2 to genquery.py module (4-3-stable)

The current implementation works, but it's still a WIP.

also consider the upcoming work with 'zone_hint'... in case the positional arguments in this PR should wait for that one first... not sure, discush!

I'll handle the zone hint after this PR is complete and merged. The zone hint will be an optional parameter, so there's nothing to worry about in regard to merge order.

just thinking it might be better to have zone hint before genquery parser option.   you're right, doesn't really matter in the long run.

@lwesterhof Do you rely on the total_rows member function?
GenQuery2 may not be able to support all functionality of the GenQuery python module due to GenQuery2 being very different from GenQuery1.
Thoughts?

I see two ways to support a zone hint.

(A) Modify the existing GenQuery1 MSIs to parse the zone hint from an existing input argument

We cannot add additional input parameters, hence the need for a little string-based parsing

(B) Or, add a new MSI for GenQuery1 which allows the zone hint to be set

Notice, I'm talking about the MSIs and not the python module being modified in this PR.

@lwesterhof Do you rely on the total_rows member function?
GenQuery2 may not be able to support all functionality of the GenQuery python module due to GenQuery2 being very different from GenQuery1.
Thoughts?

We do rely on it in a couple of instances. But I think we can easily work around those cases.

@lwesterhof Consider giving the current implementation a try in your test environment. Copying the file is all that's necessary. That would help a lot in figuring out what's missing.

Given the limitations of this interface, are there any plans to make a genquery2 iterator module that enables the GenQuery2-only features?

There aren't any plans at the moment. Not against it. Feel free to take a swing at designing the interface (no implementation yet) if you like. Happy to discuss more.

@lwesterhof Consider giving the current implementation a try in your test environment. Copying the file is all that's necessary. Your feedback would help a lot in figuring out what's missing.

We're on iRODS 4.2.12, so our test environments are stuck with Python 2 for now. We're planning to start the upgrade to iRODS 4.3.x soon. We'll definitely share our feedback once we get to test it.

Good to know. This is very close to completion so we'll move forward with testing and getting this merged.
We can always tweak and release a new version.

TODO: Add documentation to README.

This is now ready for final review.

The interface of the Query class likely needs to expose an option for sorting results when using GenQuery2. Providing that allows the Query class to cover more cases.

Added support for order-by. Just need to add tests.

New changes seem good.
I didn't realize that the in-line conditional for the order_by_clause operated that way. I thought that this...
>>> s = 'hello' + ' world' if False else ''
>>> s
''

...was going to do this:
>>> s = 'hello' + ' world' if False else ''
>>> s
'hello'

Good to know.

I actually didn't even think about that lol. I copied some existing lines and changed them to fit my needs. I guess I just got lucky.

TODO: Add GenQuery2 examples to README.

The only thing that remains now is writing up Query examples using GenQuery2.

I was thinking about rewording the additions to the Q&A section. If I decide to leave it as is, I'll go ahead and squash the commits.

looking good

Will squash tomorrow morning unless there are additional review comments.

Squashed. Will pound just before standup unless there are additional review comments.

#'d


Confused by change in documentation

Hi,
I'm a big fan of snakemake, and have found it to be invaluable in my research. When I re-visited the documentation recently, I noticed a change that I was confused by.
It looks like all the way up to version 5.82, the recommended directory structure was this:

link
From 5.9 on, the recommend directory structure for distribution switched to:

link
I'm having a hard time making sense of the new recommended structure, and it seems like there are several more advanced concepts being used, especially compared to the tutorial in the docs. It is tough to interpret for me to interpret how this works, and I can't seem to find other parts of the docs where rules are defined in separate .smk files.
I'm proposing that some additional documentation be added to make it clear how this project structure works, and what the benefits are. I'm happy to help if pointed in the right direction.
Thanks for an amazing framework!

smk is just an extension to signify that its a Snakefile. I think it stands for 'snakemake'. There are a couple different ways to use multiple snakefiles. You can read more about them in 'modularization'
https://snakemake.readthedocs.io/en/stable/snakefiles/modularization.html#includes
The docs could probably be elaborated upon.

That makes sense. Yeah, looking at the examples in the snakemake-worfklows repo, your explanation definitely matches with the techniques used. It seems like there is a gulf in the documentation between the tutorial in the docs, and this suggested project structure and the snakemake-workflow repos. Maybe needs an additional 'Advanced workflows' tutorial?
The typos you mentioned do also already make the docs more clear when they are fixed.

Good points raised here, I am now fixing the description and also add more details. Sorry for the hassle. Watch out for the next release :-).

Fixed in commit 601afb83.

Awesome, thanks for the additional details! I think that makes things a lot more clear.

Hey @johanneskoester, I don't want to belabor the point here, but it would be worth adding the previous project structure back in to the docs? For helping people get up and running w/ Snakemake, this is often the initial structure I recommend, and point them back to the previous docs.
For example:
A basic project structure is:
[previous]
A more modular/advanced project structure is:
[new]
Then, a workflow can be deployed... etc.


Lazy loading doesn't seem to be working

Hi,
I've been looking into ASP.NET Core 2.0 and the Angular template available in VS 2017.
A fresh install works fine, but it looks like there's no example using lazy-loading.
I wanted to try implement it based on https://github.com/aspnet/JavaScriptServices/commit/7ded0a0b60ce3a5356417a5d6102a376fe5f6802 .
In order to do so I've created a repository (using the default starter from VS2017) and added the following commit: https://github.com/frederikprijck/aspnet-angular-lazy-loading/commit/0edaa0889e1084dfad47d1674641b86c0e45332c
Note: I've disabled development build to ensure @ngtools/webpack was used.
Running the project available in the repository (https://github.com/frederikprijck/aspnet-angular-lazy-loading) results in the following error when navigating to counter.

Error: Uncaught (in promise): Error: Cannot find module './components/counter/counter.module.ngfactory'.
Error: Cannot find module './components/counter/counter.module.ngfactory'.
at webpackEmptyContext

Does the template require more changes in order to enable Lazy Loading?
Thanks

I find the cause of the error.
First of all, it was incorrect of me to try and use @ngtools/webpack. According to @MarkPieszak it's not supported in dev build.
So I had to npm install angular2-router-loader and add it to the webpack config.

We can't make any updates until the next quarter to the templates provided with dotnetcore 2.0, right @SteveSandersonMS ?
It'd be nice to have angular2-router-loader as a default for the Dev builds so others won't run into the same thing. I must of missed that one when looking at everything, apologies!

Thanks for reporting this! Closing this one in favour of #1195.

We can't make any updates until the next quarter to the templates provided with dotnetcore 2.0, right @SteveSandersonMS ?

We can make changes in the repo here any time, but when they actually ship in an updated .NET SDK depends on the .NET SDK shipping schedule :)

Yes, had this problem.  Glad I found this thread.... Dropped in the code as per #1195.  Worked like a charm!

It seems that angular2-router-loader is now angular-router-loader. But I tried to install angular-router-loader by following the instructions mentioned at https://www.npmjs.com/package/angular-router-loader, but it didnt work.
It seems that this package has a dependency on loader-utils , which npm was unable to install.
Can you please take a look?

I used the same template ASP.NET Core 2 & Angular in VS 2017 with lazy loading. It works good in dev mode after adding angular2-router-loader, it passes the production build (dotnet publish -c Release) but when deployed on Azure App Service I get the same error (ERROR Error: Uncaught (in promise): Error: Cannot find module './product/product.module.ngfactory'.).
webpack.config.js has the following line:
{ test: /\.ts$/, include: /ClientApp/, use: isDevBuild ? ['awesome-typescript-loader?silent=true', 'angular2-template-loader', 'angular2-router-loader'] : '@ngtools/webpack' }

Doesn't this mean that ngtools/webpack causes the problem? Is there any workaround for this?

@chsakell I have exact the same problem, dev build mode fine, production build builds fine but as soon as I start the generated project and call my lazy module I get the same error... did you find a solution?

Yes @fen89 , just use the same config for both dev and prod in webpack.config.js.
{ test: /\.ts$/, include: /ClientApp/, use: ['awesome-typescript-loader?silent=true', 'angular2-template-loader', 'angular2-router-loader'] },

That worked for me.

Is there any solution to this? I'm having the same problem today for the past 1 week..

We have the exact same problem with angular 6.1 AspNet Core and Azue App Service. @darlontrofy did you find a solution?

Try the new template.


Fixed Logout Functionality

Added an "onunload" method to delete the local storage objects from the browser on browser close. This way, we never have a local storage variable already initialized on browser open, and invoice always redirects to the login screen.

@peternsilva good point, we'll try looking into an Angular specific way to do it.


Marks on the fields

Hello, guys! Please add some like this marks on the field (blue points near linenumber on the picture).
https://www.raymond.cc/blog/delete-lines-that-doesnt-contain-specific-words-with-notepad/

Closing as a dupe of https://github.com/adobe/brackets/issues/12435


[release-4.15] Fix lca bundle with workload.openshift.io/allowed annotation

This is a manual cherry-pick of https://github.com/openshift-kni/lifecycle-agent/pull/346
(we had some conflicts with the version, hence the manual cherry-pick - we kept the 4.15.0 version in the bundle)
/assign donpenney @rauhersu

/lgtm


2339 Property 'style' does not exist on type 'Element'.

Some example of code:
class Test {
  constructor(elem:Element) {
    elem.style.color = 'red';
  };
}

let elem = document.querySelector('#test');
let test = new Test(elem);

This produces:
2339 Property 'style' does not exist on type 'Element'.
If I change elem:Element to elem:HTMLElement then is says:
2345 Argument of type 'Element' is not assignable to parameter of type 'HTMLElement'.   Property 'accessKey' is missing in type 'Element'.
I understand what querySelector might not always return HTML or SVG elements, but why Element does not have style property?

I am not the best one to answer the question about the DOM sepec. We do generate these from IE's definitions. it is possible that it is an issue. @zhengbli would be able to comment better here.
For your issue, i believe you need to use HTMLElement all the time; so assuming you do not use any SVG elements in this code path, casting should be safe.
class Test {
  constructor(elem:HTMLElement) {
    elem.style.color = 'red';
  };
}

let elem = <HTMLElement>document.querySelector('#test');
let test = new Test(elem);

@mhegazy yes, I now how to work around it right now, I was just confused what Element does not have style property. I am also not sure if it should have it, but it will be strange in a future to always cast any DOM requests (querySelector, getElementById, etc) to HTMLElement.

According to the MDN spec, Element interface doesn't have a style property, and querySelector does return Element.
However, in the case of getElementById, we made it convenient by returning HTMLElement by default, although it is different from the spec. I don't know if we should do the same thing for other methods that don't obviously return HTMLElement over Element in most of the time, as it does feel hacky and inconsistent.

I am not saying MDN  is wrong, I am pretty sure they are right, but they also say what Element have Element.onwheel :-)

that don't obviously return HTMLElement over Element in most of the time, as it does feel hacky and inconsistent.

Same for getElementById, it does not returns HTMLElement more often than, for example, querySelector because one can easily request inline SVG element by id.
I do not think svg or xml elements are more frequint for querySelector, but I can agree what for XPath that might not be true.
So, since querySelector returns Element then any developer should cast it to type they wanted (HTML, SVG, something else?). It would be good to have HTMLElement as a default for such methods, since (as far as I know :-)) HTML is default for the web.

DOM Level 3 IDL for Element does not contain it.

@kitsonk yes, I got it. Please treat now this issue as "Return HTMLElement by default instead of Element from dom request methods (getElement(s)By*, querySelector(All), etc)"

@NekR while i agree that an HTMLElement is more common target for querySelector/querySelectorAll, this change leaves users of SVGElements with one extra cast:
// with the current definition
querySelector(selectors: string): Element;

// this is how you access it
let htmlElement  = <HTMLElement>document.querySelector('#test');
let svgElement = <SVGElement>document.querySelector('#test');

// if it was changes to HTMLElement
querySelector(selectors: string): HTMLElement;

// this is how you access it
let htmlElement = document.querySelector('#test');
let svgElement = <SVGElement><Element>document.querySelector('#test');

That is a breaking change though, as it will break existing calls that expect to cast to SVGElement.

As I suggested in issue 424, querySelector/querySelectorAll etc. can return UniversalElement by default, which is an imaginary Element that extends all known sub-interfaces of Element. Thus no casts are ever needed, no matter for HTML or SVG.
Of cause this is not quite conformant to WebIDL of DOM specs, but I don't think there are many TS users that care about this problem.

Indeed, double casting seems weird. But it's also strange that TypeScript follows spec more than real use cases. What is a real benefit of returning Element for such methods except of being type-compatible with spec?
UniversalElement solution seems good. I do not know if it's possible, but something like that will help.

SVG elements really do exist.
If your JS runs over arbitrary DOM trees, it might encounter one, and we'd be wrong to not act as if that were the case.

Use a type guard. You need to check for null anyway.
let elem = querySelector("#test")
if (elem instanceof HTMLElement) {
    // elem.style
} else {
    throw new Error("element #test not in document")
}

SVG elements DO have 'style' property in browsers (including MS IE11 and Edge), so usually you don't have to check for its existence.
The exception is arbitrary XML elements, including MathML in Firefox ( Safari not tested ). MathML is dying and most web developers don't mix arbitrary XML in HTML, so this is not a problem in practice.

If someone are still lookking for the solution, I can suggest do the following simple solution. Becasue HTMLElement was extended from Element, so if we queried from the DOM, it's absolutely a HTMLElement, we can cast from Element to HTMLElement by using:
(document.querySelector('ion-nav') as HTMLElement)

Hope this help :)

@quangpdt
I have a bug:
Type 'Element' is not assignable to type 'HTMLElement'.Property 'accessKey' is missing in type 'Element'.
In:
		/** @type {HTMLElement} */ 		const enSentenceEl = /** @type {HTMLElement} */ sentenceEl.querySelector(".enSentence");
How it's possible?
After all, HTMLElement inherits from Element.
When do this:
const enSentenceEl = /** @type {HTMLElement} */ sentenceEl.querySelector(".enSentence");
Element type simply does not change. Still only: Element.

I needed only the first element so i used let elem = document.querySelector('#test')[0] instead. in your case you can loop over the array and apply the style.

when you know I specific ID in your HTML corresponds to a more specialized type than that returned by the DOM APIs I find the following pattern to be very useful and that it satisfies the typechecker while making the code more self documenting
declare global {
  interface Document {
    querySelector(s: '#test'): NodeList<Element & Extras>;
  }
}

@look997 Use type assertion:

as HTMLElement

I don't think that comment can change type.
@devcer querySelector returns one element, not array https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector

@kaziupir

@look997 Use type assertion:

W pliku JavaScript? Tam chyba się nie da tak?
Ja to mam w pliku js.

@look997 A to nie wiem, nigdy typescriptu nie używałem w pliku js. Może po prostu przejdź na używanie plików .ts. https://www.typescriptlang.org/docs/handbook/migrating-from-javascript.html

@Dok11 you can add that property to existing interface, i.e. just remove SVGElementEx extends  .

@NekR how will I change existing interface? You talk about file \lib.es6.d.ts?
Can you show simple example?

Sample in whatever place:
interface SVGElement {
	getTotalLength(): number;
}


Exclude new Cisco AppD packages

What does this PR do?
A customer has encountered instrumentation errors with what apparently are new AppD packages. This PR attempts to exclude them from instrumentation.
Checklist

[x] This is something else

[x] I have updated CHANGELOG.asciidoc

User confirmed that this fix works.


Does Maperture default to MapLibre?

I'm taking a pass at #147 and #146 and am noticing attribution watermarks for some styles and not others. The one that caught my eye is Mapbox's Streets style, which has a MapLibre watermark:

I couldn't tell with a quick glance whether MapLibre is the default, but this one definitely seems wrong. Not sure what the default should be, though, if that is the case here.

Hm this is a good point! It should be using Mapbox GL for these styles and only loading Maplibre as needed. Either way this should be more clear.

@kelsey-taylor To answer the question here: Maperture does not default to Maplibre. However, because of the way the CSS is bundled the Maplibre CSS overrides the Mapbox CSS and they use the same classes for many elements, so Maplibre styles end up dominating.
I'm going to open up a follow-up issue. We clearly at least need to make sure the logo is correct or remove it since this is going to be confusing.


rename variables, update help output

@ashwinathalye-cs what do you think about renaming some of the variables? Updated the help output also, to call out oauth2 language.


Search API is not working

var job = jobs.create('install', { project: project, title: project.name })
        .priority(extra.priority)
        .searchKeys(['title'])
        .save();

if project.name is testing1
curl -v http://localhost:8872/granaries/job/search?q=testing
[]
Will look at the tests and see if I can pinpoint the issue.

Have you found a solution for it?
I'm running into the same issue, even though I have defined indexes and also tried with reds, I still can't search it. All other JSON APIs are working but search?q= isn't.


Title Auto-Generation Doesn’t Respect Custom Context Length

Bug Report
Description
Bug Summary:
When a custom context length is set, it isn't respected by title auto-generation. As a result, the model is being re-loaded entirely with the default context when generating a title, adding unnecessary delay.
Steps to Reproduce:
Select 'Settings' > 'General' > 'Advanced Parameters' and set 'Context Length' to any value other than the default of 2048. Turn on title auto-generation.
Expected Behavior:
Title auto-generation should respect the custom context length, removing the need to reload the model.
Actual Behavior:
Title auto-generation did not respect the custom context length, causing the model to be reloaded with the default context of 2048.
Environment

Open WebUI Version: v0.1.123

Ollama (if applicable): 0.1.33

Operating System: Windows 11

Browser (if applicable): Chrome Version 124.0.6367.119

Reproduction Details
Confirmation:

[X ] I have read and followed all the instructions provided in the README.md.
[X ] I am on the latest version of both Open WebUI and Ollama.
[ ] I have included the browser console logs.
[ ] I have included the Docker container logs.

Installation Method
Open WebUI was installed using Docker.
Additional Information
Was able to confirm issue by checking Ollama server logs.

Should be fixed on our dev branch! Let us know if the issue persists!


Tutorial not working

Hello,
I was trying to get the tutorial project running, but the stated instructions did not work.
First, this:

In your viewmodel definition, change
var node1Input = new NodeInputViewModel();
to
var node1Input = new ValueNodeInputViewModel<string>();

It took some time until I found out that it requires the NodeNetworkToolkit, which fixed the issue.
Later on, the tutorial states:

To print the input value each time it changes, add the following code.
node1Input.ValueChanged.Subscribe(newValue =>     {         Console.WriteLine(newValue);     });

But visual studio says that there is no definition for "ValueChanged". I did not find any information about it in the docs or anywhere else in the internet. I tried different namespaces, workarounds or other fixes, but did not manage to get it running.
Is the documentation maybe outdated? I did not find information about for which version it was written.

It took some time until I found out that it requires the NodeNetworkToolkit, which fixed the issue.

Well, the tutorial does say that it uses NodeNetworkToolkit a couple of lines above but I guess I could add another quick note there.

Later on, the tutorial states:

To print the input value each time it changes, add the following code.
node1Input.ValueChanged.Subscribe(newValue =>     {         Console.WriteLine(newValue);     });

But visual studio says that there is no definition for "ValueChanged". I did not find any information about it in the docs or anywhere else in the internet. I tried different namespaces, workarounds or other fixes, but did not manage to get it running.

ValueChanged is a public member of ValueNodeInputViewModel so you should be able to access it. (Source code). Maybe you used NodeInputViewModel instead of the var keyword?