v2 segment support string encode(#1766)

#1766
major change

change data format of binary dict page, appending (dict page data) and (dict page offset) to binary dict page;
add new decoding method for new binary dict page format
add ut for segment test
set the elements of initial array to 0 ,when calling arena.AllocateNewBlock
hard code way to choose dict coding for string

0919 commit major change

change dict file format:when saving binary dict page, separate dict page from dict page,one dict page may have multi data pages;when reading a binary dict page,one ColumnReader keeps one dict page
loading dict when calling column_reader._read_page
3.rollback BinaryDictPage
no longer using memset(0) to inital column_zonemap.max_value

0926 17 commit major change

init column_zone_map min value column_zone_map slice's data array;
set char/varchar column_zone_map'max value size to 0
add ut for char column zone map query hit/miss

0929 10 commit major change

allocate mem for column_zone_map 's max and min value
direct copy content to column_zone_map's max and min value

I have check set_to_max in olap, I think original code has bug and this pr's code has fix it.
I check set_to_max used in two place of v1:

in zone map building. But for char/varchar type, there are no zone map for them, so there is no influence.
in split_range for query, I think the new max is larger than the old one, will not cause problems.
LGTM

I have check set_to_max in olap, I think original code has bug and this pr's code has fix it.
I check set_to_max used in two place of v1:

in zone map building. But for char/varchar type, there are no zone map for them, so there is no influence.
in split_range for query, I think the new max is larger than the old one, will not cause problems.
LGTM

LGTM

current commit is old version:in varchar's set_to_max,slice size set to 1,because set to max_string_value will cause UT core dump,I will see this case today

current commit is old version:in varchar's set_to_max,slice size set to 1
because set to max_string_value will cause delete_handler_test core dump,I will see this case today

current commit is old version:in varchar's set_to_max,slice size set to 1
because set to max_string_value will cause delete_handler_test core dump,I will see this case today

Core dump stack

#0  SLL_Next (t=0xffffffffffffffff) at src/linked_list.h:45
#1  SLL_TryPop (rv=, list=0x436dce0) at src/linked_list.h:69
#2  TryPop (rv=, this=0x436dce0) at src/thread_cache.h:220
#3  Allocate (oom_handler=0x25e5700 <tcmalloc::cpp_throw_oom(unsigned long)>, cl=5, size=64, this=) at src/thread_cache.h:379
#4  malloc_fast_pathtcmalloc::cpp_throw_oom (size=64) at src/tcmalloc.cc:1855
#5  tc_new (size=64) at src/tcmalloc.cc:1976
#6  0x0000000000c21672 in doris::WrapperField::WrapperField (this=0x4e07d40, rep=, variable_len=,
is_string_type=) at /home/wangbo36/incubator-doris/be/src/olap/wrapper_field.cpp:84
#7  0x0000000000c21b9e in doris::WrapperField::create (column=..., len=, len@entry=0)
at /home/wangbo36/incubator-doris/be/src/olap/wrapper_field.cpp:51
#8  0x0000000000cb88e1 in doris::ColumnDataWriter::init (this=0x4bc4780) at /home/wangbo36/incubator-doris/be/src/olap/rowset/column_data_writer.cpp:72
#9  0x0000000000ca273c in doris::AlphaRowsetWriter::_init (this=this@entry=0x4bf83c0)
at /home/wangbo36/incubator-doris/be/src/olap/rowset/alpha_rowset_writer.cpp:275
#10 0x0000000000ca3694 in doris::AlphaRowsetWriter::init (this=0x4bf83c0, rowset_writer_context=...)
at /home/wangbo36/incubator-doris/be/src/olap/rowset/alpha_rowset_writer.cpp:73
#11 0x0000000000c91b03 in doris::RowsetFactory::create_rowset_writer (context=..., output=output@entry=0x7fffcdf75318)
at /home/wangbo36/incubator-doris/be/src/olap/rowset/rowset_factory.cpp:50
#12 0x0000000000bc9b3f in doris::TabletManager::_create_inital_rowset (this=this@entry=0x4d5a180, tablet=..., request=...)
at /home/wangbo36/incubator-doris/be/src/olap/tablet_manager.cpp:1250
#13 0x0000000000bcc919 in doris::TabletManager::_internal_create_tablet (this=this@entry=0x4d5a180, alter_type=alter_type@entry=doris::SCHEMA_CHANGE,
request=..., is_schema_change_tablet=is_schema_change_tablet@entry=false, ref_tablet=..., data_dirs=...)
at /home/wangbo36/incubator-doris/be/src/olap/tablet_manager.cpp:371
#14 0x0000000000bcdd72 in doris::TabletManager::create_tablet (this=this@entry=0x4d5a180, request=..., stores=...)
at /home/wangbo36/incubator-doris/be/src/olap/tablet_manager.cpp:318
#15 0x0000000000b82642 in doris::StorageEngine::create_tablet (this=, request=...)
at /home/wangbo36/incubator-doris/be/src/olap/storage_engine.cpp:760
#16 0x0000000000b4fac3 in doris::TestDeleteConditionHandler::SetUp (this=0x4e08460)
at /home/wangbo36/incubator-doris/be/test/olap/delete_handler_test.cpp:173
#17 0x0000000002530f37 in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::)(), char const) ()
#18 0x000000000252ba9c in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::)(), char const) ()
#19 0x0000000002510df7 in testing::Test::Run() ()
#20 0x00000000025116ce in testing::TestInfo::Run() ()
#21 0x0000000002511d25 in testing::TestCase::Run() ()
#22 0x0000000002518899 in testing::internal::UnitTestImpl::RunAllTests() ()
#23 0x0000000002531eb3 in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::)(), char const) ()
#24 0x000000000252c7a2 in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::)(), char const) ()
#25 0x0000000002517570 in testing::UnitTest::Run() ()
#26 0x00000000009fb316 in RUN_ALL_TESTS () at /home/wangbo36/incubator-doris/thirdparty/installed/include/gtest/gtest.h:2233
#27 main (argc=, argv=0x7fffcdf75f88) at /home/wangbo36/incubator-doris/be/test/olap/delete_handler_test.cpp:951

@imay please review again

add comment for dict lazy init
2.merge master branch to resolve conflict


update grid params after gridSettings updates

closes #44

@cuire is it possible to publish this fix pls 🙏

@fabiot21 DONE


fix: Market data not available causes NaN values

Description of change
When the market data endpoint is down currency conversion displays NaN. The currency formatting PR partially resolves this by not displaying conversions if it can't perform them.
This PR keeps a cache of the last valid response from the market data endpoint and load this on startup to make sure we have at least some data.
Links to any relevant issues
Fixes https://github.com/iotaledger/firefly/issues/909
Type of change

Bug fix (a non-breaking change which fixes an issue)

How the change has been tested
Test on windows with no connection
Change checklist

[x] I have followed the contribution guidelines for this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

@obany if for some reason the user is migrating and the marketdata endpoint has never worked for the user (maybe it is the first time using the wallet) so there is no localStorage with marketData, the issue persists because I think the bug #909 makes reference to the balances  that use convertToFiat (in feat/migration it is used also in the setup routes like in Balance.svelte & Migrate.svelte)

@begonaalvarezd  The currency formatting PR which has just been merged resolves that, if the currency conversion can't take place it hides the currency version of amounts.


Feature/ Process MetadataCreated

Fixes #44 .
Changes proposed in this PR:

detect medata created event
store ddo
created integration test flow for publish and indec

hi @bogdanfazakas regarding : provider = new JsonRpcProvider('http://<IP_ADDRESS>:8545') it looks like we're running barge on the CI env, but what about locally? Do you think it would it make sense to use https://www.npmjs.com/package/ganache as dev dependency for instance? and make the tests run ganache on startup or something @alexcos20 what do you think? maybe not for this PR but something we might need often thanks

We already have ganache running in barge, because we also need to deploy contracts using certain logics

Can you also update the hashes for the events in this PR as well to decrease the conflicts? Otherwise, lgtm!

Can you also update the hashes for the events in this PR as well to decrease the conflicts? Otherwise, lgtm!

Don't worry about it, there will be no conflicts since we both have similar updates


UE 4.12.2 fails to compile "Basic Code" C++ project

Way to reproduce:

Install UE 4.12.2 via Epic Games launcher
New project -> C++ -> Basic Code, no starter content

Expected: editor opens newly-created project
Actual:
Running C:/Program Files (x86)/Epic Games/4.12/Engine/Binaries/DotNET/UnrealBuildTool.exe MyProject Development Win64 -project="C:/Users/m.radchenko/Documents/Unreal Projects/MyProject/MyProject.uproject" -editorrecompile -progress -noubtmakefiles -NoHotReloadFromIDE
@progress push 5%
Parsing headers for MyProjectEditor
  Running UnrealHeaderTool "C:\Users\m.radchenko\Documents\Unreal Projects\MyProject\MyProject.uproject" "C:\Users\m.radchenko\Documents\Unreal Projects\MyProject\Intermediate\Build\Win64\MyProjectEditor\Development\MyProjectEditor.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -installed
Reflection code generated for MyProjectEditor in 2,873731 seconds
@progress pop
Distributing 7 actions to XGE
xgConsole (0.1.12-x86_64-windows, rev: 7d13c4133, rustc: 1.7.0):
  xgConsole
  ../../Engine/Intermediate/Build/XGETasks.xml
  /Rebuild
  /NoWait
  /StopOnErrors
  /NoLogo
  /ShowTime
  /UseIdeMonitor
#0 1/7: @actionModuleVersionResource.rc.inl
#2 2/7: @actionPCLaunch.rc
Can't use octobuild for compiling file, use failback compilation: Error { repr: Os { code: 21, message: "\u{423}\u{441}\u{442}\u{440}\u{43e}\u{439}\u{441}\u{442}\u{432}\u{43e} \u{43d}\u{435} \u{433}\u{43e}\u{442}\u{43e}\u{432}\u{43e}." } }
#1 3/7: PCH.MyProject.h.cpp
PCH.MyProject.h.cpp
Can't use octobuild for compiling file, use failback compilation: Error { repr: Os { code: 21, message: "\u{423}\u{441}\u{442}\u{440}\u{43e}\u{439}\u{441}\u{442}\u{432}\u{43e} \u{43d}\u{435} \u{433}\u{43e}\u{442}\u{43e}\u{432}\u{43e}." } }
Can't use octobuild for compiling file, use failback compilation: Error { repr: Os { code: 21, message: "\u{423}\u{441}\u{442}\u{440}\u{43e}\u{439}\u{441}\u{442}\u{432}\u{43e} \u{43d}\u{435} \u{433}\u{43e}\u{442}\u{43e}\u{432}\u{43e}." } }
Can't use octobuild for compiling file, use failback compilation: Error { repr: Os { code: 21, message: "\u{423}\u{441}\u{442}\u{440}\u{43e}\u{439}\u{441}\u{442}\u{432}\u{43e} \u{43d}\u{435} \u{433}\u{43e}\u{442}\u{43e}\u{432}\u{43e}." } }
#4 4/7: MyProjectGameMode.cpp
MyProjectGameMode.cpp
#3 5/7: MyProject.cpp
MyProject.cpp
#5 6/7: MyProject.generated.cpp
MyProject.generated.cpp
#0 7/7: @actionUE4Editor-MyProject.dll
   Creating library C:\Users\m.radchenko\Documents\Unreal Projects\MyProject\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-MyProject.lib and object C:\Users\m.radchenko\Documents\Unreal Projects\MyProject\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-MyProject.exp

MyProject.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class TBaseDelegate<class FFixedUObjectArray *> & __cdecl FCoreDelegates::GetObjectArrayForDebugVisualizersDelegate(void)" (__imp_?GetObjectArrayForDebugVisualizersDelegate@FCoreDelegates@@SAAEAV?$TBaseDelegate@PEAVFFixedUObjectArray@@$$$V@@XZ) referenced in function "void __cdecl `dynamic initializer for 'GObjectArrayForDebugVisualizers''(void)" (??__EGObjectArrayForDebugVisualizers@@YAXXZ)
MyProjectGameMode.cpp.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl AGameMode::SetPause(class APlayerController *,class TBaseDelegate<bool>)" (?SetPause@AGameMode@@UEAA_NPEAVAPlayerController@@V?$TBaseDelegate@_N$$$V@@@Z)
MyProject.generated.cpp.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl AGameMode::SetPause(class APlayerController *,class TBaseDelegate<bool>)" (?SetPause@AGameMode@@UEAA_NPEAVAPlayerController@@V?$TBaseDelegate@_N$$$V@@@Z)
C:\Users\m.radchenko\Documents\Unreal Projects\MyProject\Binaries\Win64\UE4Editor-MyProject.dll : fatal error LNK1120: 2 unresolved externals
Cache statistic: hit 0 of 0 (0 %), read 0, write 0, total 0

ERROR: UBT ERROR: Failed to produce item: C:\Users\m.radchenko\Documents\Unreal Projects\MyProject\Binaries\Win64\UE4Editor-MyProject.dll
XGE execution time: 75,32 seconds

Octobuild 0.1.12 can't compile UE 4.12. Try latest version please.

Update: after installing Octobuild 0.1.13 and VS 2015 Community I now get this:
xgConsole (0.1.13-x86_64-windows, rev: 870377209, rustc: 1.9.0):
  xgConsole
  ../../Engine/Intermediate/Build/XGETasks.xml
  /Rebuild
  /NoWait
  /StopOnErrors
  /NoLogo
  /ShowTime
  /UseIdeMonitor
#1 1/7: @actionPCLaunch.rc
#2 2/7: @actionModuleVersionResource.rc.inl
Can't use octobuild for compiling file, use failback compilation: Error { repr: Os { code: 21, message: "\u{423}\u{441}\u{442}\u{440}\u{43e}\u{439}\u{441}\u{442}\u{432}\u{43e} \u{43d}\u{435} \u{433}\u{43e}\u{442}\u{43e}\u{432}\u{43e}." } }
#0 3/7: PCH.MyProject.h.cpp
PCH.MyProject.h.cpp
Can't use octobuild for compiling file, use failback compilation: Error { repr: Os { code: 21, message: "\u{423}\u{441}\u{442}\u{440}\u{43e}\u{439}\u{441}\u{442}\u{432}\u{43e} \u{43d}\u{435} \u{433}\u{43e}\u{442}\u{43e}\u{432}\u{43e}." } }
Can't use octobuild for compiling file, use failback compilation: Error { repr: Os { code: 21, message: "\u{423}\u{441}\u{442}\u{440}\u{43e}\u{439}\u{441}\u{442}\u{432}\u{43e} \u{43d}\u{435} \u{433}\u{43e}\u{442}\u{43e}\u{432}\u{43e}." } }
Can't use octobuild for compiling file, use failback compilation: Error { repr: Os { code: 21, message: "\u{423}\u{441}\u{442}\u{440}\u{43e}\u{439}\u{441}\u{442}\u{432}\u{43e} \u{43d}\u{435} \u{433}\u{43e}\u{442}\u{43e}\u{432}\u{43e}." } }
#4 4/7: MyProject.cpp
MyProject.cpp
#5 5/7: MyProjectGameMode.cpp
MyProjectGameMode.cpp
#3 6/7: MyProject.generated.cpp
MyProject.generated.cpp
#1 7/7: @actionUE4Editor-MyProject.dll
   Creating library C:\Users\m.radchenko\Documents\Unreal Projects\MyProject\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-MyProject.lib and object C:\Users\m.radchenko\Documents\Unreal Projects\MyProject\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-MyProject.exp
Cache statistic: hit 0 of 0 (0 %), read 0, write 0, total 0

XGE execution time: 48,45 seconds

This error caused by using Visual Studio 2013 instead of Visual Studio 2015.


error recovery takes long time

Context
System: Franka Disruption 3
System version: 5.2.1
libfranka version: 0.10.0
franka_ros version: 0.10.1
controller: position_joint_trajectory_controller
Problem
When an error happens (in particular cartesian reflexes as this is what we tested), the system takes a long and varying time to confirm it. This comes in two parts:

There is a significant time difference between the manipulator stopping during a trajectory (we carefully blocked the movement of the robot with our hands) and the cartesian reflex being reported by libfranka. Experimentally we found this can be up to 1 or 2 seconds.
Once the error is reported, we identify it through the robot mode message attribute published in /franka_state_controller/franka_states. When the robot mode is not "normal" (IDLE or MOVE), we check it and confirm it. A simplified version of the script to generate the ROS node we use for this can be find below.

The time difference between the error recovery request to be sent and the error recovery varies a lot.  In an experiment where we confirmed 11 errors, we found the following time differences in seconds:
1.0152
0.9475
15.9851
2.5994
0.3952
0.8022
1.2532
0.5220
2.1730
0.6632
3.0928
It can be seen that the confirmation is sometimes very quick, other times a bit longer and rarely it takes a very long time.
Part 2 of the problem is more critical for us.
Steps to reproduce part 2

Start all necessary nodes to run the robot including the franka_control node
Start the manipulator_error_manager node with the script below
Move the robot and produce a cartesian reflex by carefully blocking the robot's movement
Compare the timestamps of the logs printed by libfranka libfranka: Move command aborted: motion aborted by reflex! ["cartesian_reflex"] and Recovered from error
Repeat steps 3 and 4 multiple times

Steps to reproduce part 1

Start all necessary nodes to run the robot including the franka_control node
Start the manipulator_error_manager node with the script below
Move the robot and produce a cartesian reflex by carefully blocking the robot's movement
Observe how much time it takes for the robot light to turn red
Repeat steps 3 and 4 multiple times

Script of the node to confirm errors
#!/usr/bin/python3

import rospy
import traceback
import actionlib
import franka_msgs.msg as franka_msg

class ManipulatorErrorManager:
    '''
    class containing code the get the status of the panda manipulator and chnage this state (mainly confirming errors)
    '''
    def __init__(self):
        # Robot modes and their meaning:
        self.robot_modes_meaning = {'0': 'OTHER',
                                    '1': 'IDLE',
                                    '2': 'MOVE',
                                    '3': 'GUIDING',
                                    '4': 'REFLEX',
                                    '5': 'USER_STOPPED',
                                    '6': 'AUTOMATIC_ERROR_RECOVERY'}

        self.confirmation_cooldown_time = 0.2 # [s] cooldown time after an error confirmation attempt

        # Init attributes
        self.confirmation_time_stamp = rospy.Time.now() # time stamp the of the last confirmation attempt

        # Init subscriber to franka state
        rospy.Subscriber('/franka_state_controller/franka_states', franka_msg.FrankaState, self.__callback_status_information, queue_size=1)

        # Initialize action client for error recovery
        self.error_recovery_client = actionlib.SimpleActionClient('/franka_control/error_recovery', franka_msg.ErrorRecoveryAction)
        self.error_recovery_client.wait_for_server()

    def __callback_status_information(self, msg: franka_msg.FrankaState) -> None:
        ''' Callback method of the subscriber to the franka status topic
        - @param msg: the message that was send by the franka state interface
        Documentation about the status message: https://frankaemika.github.io/libfranka/structfranka_1_1RobotState.html
        '''
        duration_since_last_confirmation = (rospy.Time.now() - self.confirmation_time_stamp).to_sec()

        # If robot has an error and if not in cooldown time, confirm the error
        if not msg.robot_mode in [1, 2] and duration_since_last_confirmation > self.confirmation_cooldown_time:
            robot_mode_description = self.robot_modes_meaning[str(msg.robot_mode)]
            rospy.logwarn(f"Manipulator error detected. Robot mode: {robot_mode_description}")

            # Define action message
            goal_msg = franka_msg.ErrorRecoveryActionGoal()

            # Trigger action server -> confirm error
            self.error_recovery_client.send_goal_and_wait(goal_msg)

            # Reset confirmation time stamp
            self.confirmation_time_stamp = rospy.Time.now()

            rospy.loginfo("Manipulator error confirmed")

def main():
    try:
        rospy.loginfo('Starting Manipulator Error Manager Node')

        rospy.init_node('manipulator_error_manager')

        # Create error manager object
        error_manager = ManipulatorErrorManager()

        rospy.spin()

    except (rospy.ROSInterruptException, KeyboardInterrupt):
        return

    except:
        rospy.logfatal('uncaught error in manipulator_error_manager.py')
        rospy.logfatal(traceback.format_exc())
        return

if __name__ == '__main__':
    main()

I did not know that we had a system with name of "Disruption". :)

From our understanding, it is a FP3 with FCI

There is no "step 6". Maybe it was meant to be something else?

I corrected it. I changed the steps while writing them and forgot to update this last step.

Can you please further check how much time each of these steps are taking? It would be very helpful

It is not straight-forward for us to get the points 2 and 3 that you mention, but from the logs of the experiment I did before, i can get the times of the other 3 points, that is:

Cartesian Reflex, triggered by human interaction, is logged by libfranka with Move command aborted....
My script's subscriber callback is triggered and the error recovery action is called.
Recovered from error is logged, I think by the franka_control_node

The duration or time intervals between 1 and 3 are the times mentioned before:

In an experiment where we confirmed 11 errors, we found the following time differences in seconds:
1.0152 0.9475 15.9851 2.5994 0.3952 0.8022 1.2532 0.5220 2.1730 0.6632 3.0928

This table summarizes the durations:

Timestamp of 1 [s]
Timestamp of 2 [s]
Timestamp of 3 [s]
Duration from 1 to 2 [s]
%
Duration from 2 to 3 [s]
%
Duration from 1 to 3 [s]

1674054233.4735
1674054233.4757
1674054234.4887
0.0022
0.21%
1.0130
99.79%
1.0152

1674054239.9155
1674054239.9174
1674054240.8630
0.0019
0.20%
0.9456
99.80%
0.9475

1674054244.6415
1674054244.6441
1674054260.6266
0.0026
0.02%
15.9825
99.98%
15.9851

1674054658.3262
1674054658.3282
1674054660.9256
0.0020
0.08%
2.5974
99.92%
2.5994

1674054665.1468
1674054665.1502
1674054665.5420
0.0034
0.86%
0.3918
99.14%
0.3952

1674054670.5906
1674054670.5922
1674054671.3929
0.0016
0.20%
0.8007
99.80%
0.8022

1674054677.2169
1674054677.2263
1674054678.4701
0.0094
0.75%
1.2438
99.25%
1.2532

1674054681.0607
1674054681.0636
1674054681.5827
0.0029
0.56%
0.5191
99.44%
0.5220

1674054941.4138
1674054941.4158
1674054943.5868
0.0020
0.09%
2.1710
99.91%
2.1730

1674054951.7425
1674054951.7450
1674054952.4057
0.0025
0.37%
0.6607
99.63%
0.6632

1674054955.5605
1674054955.5621
1674054958.6533
0.0015
0.05%
3.0912
99.95%
3.0928

With this information, I would say the problem is in the operations done by the actions server

Then it is called "Franka Research 3" instead of "Franka Disruption 3" :D

In franka world the name of the system is Franka Disruption 3. Not sure what the difference is. The robot is black, but we can use the FCI.

In short, the "stopping" of the robot takes too long, which blocks the error recovery action.

Thank you for looking into it. Were you able to verify this was the reason? And what can be done to improve the time it takes?

Thank you for the verification. Please let me know if there is some improvement in this regard.

Good to hear. I will then run the experiment again, but with the Franka ROS on commit 2d458abad7390bb73771c91787c361c2b5cfa6ad, after the mentioned PR.
I will report then if the times are improved or not

I did the experiment again with the PR of #232 and unfortunately still got similar durations as the ones reported previously. Here there is a table with the new durations.

Timestamp of 1 [s]
Timestamp of 2 [s]
Timestamp of 3 [s]
Duration from 1 to 2 [s]
%
Duration from 2 to 3 [s]
%
Duration from 1 to 3 [s]

1677673485.6275
1677673485.62889
1677673492.96849
0.0014
0.02%
7.3396
99.98%
7.3410

1677673816.95238
1677673816.95447
1677673819.68224
0.0021
0.08%
2.7278
99.92%
2.7299

1677674038.47682
1677674038.47934
1677674039.17731
0.0025
0.36%
0.6980
99.64%
0.7005

1677674147.85044
1677674147.85261
1677674151.59693
0.0022
0.06%
3.7443
99.94%
3.7465

1677674269.48645
1677674269.48814
1677674272.10449
0.0017
0.06%
2.6164
99.94%
2.6180

1677674397.38669
1677674397.38861
1677674399.88418
0.0019
0.08%
2.4956
99.92%
2.4975

1677674508.8368
1677674508.83859
1677674509.58911
0.0018
0.24%
0.7505
99.76%
0.7523

1677674643.74671
1677674643.74849
1677674644.79248
0.0018
0.17%
1.0440
99.83%
1.0458

1677674731.5977
1677674731.60386
1677674732.48572
0.0062
0.69%
0.8819
99.31%
0.8880

1677674823.51982
1677674823.52105
1677674823.68413
0.0012
0.75%
0.1631
99.25%
0.1643

average

0.0023
0.26%
2.2850
99.74%
2.2874

In case it is useful, I noticed that the robot first stops, the LEDs stay in green for some time, then they change to red and quickly to green again.
This were the logs for the first attempt of the experiment just as an example of how the logs looked. I took the durations from these timestamps.
[ERROR] [1677673485.627496941]: libfranka: Move command aborted: motion aborted by reflex! ["joint_reflex", "cartesian_reflex"]
control_command_success_rate: 1
[ INFO] [1677673485.627570161]: franka_control: main loop
[WARN] [1677673485.628891]: Manipulator error detected. Robot mode: REFLEX
[ INFO] [1677673492.968491856]: Recovered from error
[ INFO] [1677673492.968849281]: franka_control: controller activated
[INFO] [1677673492.971180]: Manipulator error confirmed

Are you able to do the experiment and reproduce the long times with the steps I wrote at the beginning? Let me know if you need more information to do so.
It would be better if you could reproduce the issue and check if it is solved in a similar way as I do to avoid me having to test too many things.

Sorry for taking long to check this solution.
I repeated the experiment with the latest franka ros version (https://github.com/frankaemika/franka_ros/commit/358406952597c3735d43625595650901be84a5d8) and it works much better.
I evaluated both parts of the issue that I wrote at the beginning:

1. There is a significant time difference between the manipulator stopping during a trajectory (we carefully blocked the movement of the robot with our hands) and the cartesian reflex being reported by libfranka. Experimentally we found this can be up to 1 or 2 seconds.
2. Once the error is reported, we identify it through the robot mode message attribute published in /franka_state_controller/franka_states. When the robot mode is not "normal" (IDLE or MOVE), we check it and confirm it. A simplified version of the script to generate the ROS node we use for this can be find below.

Part 2
For part 2 I evaluated the timestamps of when a print was done for the following moments:

1. Cartesian Reflex, triggered by human interaction, is logged by libfranka with Move command aborted....
2. My script's subscriber callback is triggered and logs Manipulator error detected. Robot mode: REFLEX. The error recovery action is called immediately after this.
3. Recovered from error is logged, I think by the franka_control_node

I tried it with 8 movements and got the following numbers:

Duration from 1 to 2 [s]
%
Duration from 2 to 3 [s]
%
Duration from 1 to 3 [s]

0.0017
2.36%
0.0696
97.64%
0.0713

0.0017
1.62%
0.1022
98.38%
0.1039

0.0015
11.21%
0.0122
88.79%
0.0138

0.0049
5.19%
0.0895
94.81%
0.0944

0.0066
44.55%
0.0082
55.45%
0.0148

0.0021
8.87%
0.0215
91.13%
0.0236

0.0015
3.39%
0.0414
96.61%
0.0429

0.0043
23.45%
0.0139
76.55%
0.0182

with the averages being:

Duration from 1 to 2 [s]
%
Duration from 2 to 3 [s]
%
Duration from 1 to 3 [s]

0.0030
12.58%
0.0448
87.42%
0.0479

So now it is not only much more consistent and it is not taking 3 or 5 seconds, but it's also quite fast. Thank you for the solution.
Part 1
We did recorded the experiment and reviewing the video, found out that it required around 1.9s between the robot stopped and the error appeared in the terminal. The motors sounded active a bit after the robot stopped and until the error appeared (this also can be heard a bit in the video). I will send you the video by mail @Maverobot.
I don't know if this time is required to stop the motors. Either way for us the biggest problem of these two was part 2. Part 1 does not affect us much so it is not time critical for us, but still wanted to mention it.
Conclusion
Part 2 is solved and part 1 could be improved, but it does not affect us at the moment, so for us the issue can be closed


Calling util.NewK8sClient() might lead to panic on non K8s env

Describe the bug
Improve util.NewK8sClient(), currently it is very Kubernetes specific, it breaks the CSI guidelines as this now will panic on non-Kubernetes container orchestrators. There needs to be a check that logs some error and returns an error instead of panic'ing.

The plan is to use https://github.com/ceph/ceph-csi/issues/1782 new sidecar for this operation.

Indeed I get a panic running this on a Nomad cluster, so for now should we revert to v3.3.1 until there is a workaround?

Indeed I get a panic running this on a Nomad cluster, so for now should we revert to v3.3.1 until there is a workaround?

Sounds good to revert to avoid panic. Will see we can work about this with some --orchestrator=kubernetes flag when starting the cephcsi.

Indeed I get a panic running this on a Nomad cluster, so for now should we revert to v3.3.1 until there is a workaround?

Sounds good to revert to avoid panic. Will see we can work about this with some --orchestrator=kubernetes flag when starting the cephcsi.

Makesense. Count me in, I can look into it.

Thanks, @pkalever. am assigning this to you. see if you can fix it in 3.4.1

Actually, util.NewK8sClient() should return an error that is handled by the caller. The features are optional, so there should not be any real issue. Autodetection this way is much more user-friendly :v:

And, cleaning up Kubernetes dependencies would be much better too! util.NewK8sClient() and callers of that function might be more suitable to be placed in an internal/k8s package, providing helper functions so that there is no need to use Kubernetes objects anywhere else.

@tomiles it will be helpful if you can paste the logs, I want to understand the panic causing instances better.

#2466 should have the fix for this issue. i am closing this issue for now . 3.4.1 release planned next week should carry this too @tomiles  :+1:

@humblec any progress on that 3.4.1? fix is still unreleased for a couple of months now since only 3.4.0 is released


Find a better way to share variables for message parsing and co than by just adding a new parameter each time

This could make the methods much easier to read and remove some complexity

Not necessarily better but thanks to plugins and macros the original problem was resolved to a big extend


UTM will not use wired ethernet on macOS

Describe the issue
UTM will not use wired ethernet adapter on macOS. Will only bridge traffic onto the Wi-Fi Adapter. I tested both Shared and Bridged modes and experienced the same behavior. I can only use the Wi-Fi adapter.
Configuration

UTM Version: 4.0.9 (68)
macOS Version: 12.6.1
Mac Chip (Intel, M1, ...): M1 Max

Debug log
debug.log

You might be able to change the network that is shared by re-arranging the networks in System Preferences to have Ethernet at the top of the list.
When using bridged mode, you can change the interface that is used for the bridge in the UTM VM configuration Network section. Enter the interface ID where it says "Bridged Interface – en0". Wi-Fi is always en0 on Macs, so your ethernet could be en1 (check in Terminal).


Failed to load the native TensorFlow runtime.

Please make sure that this is a build/installation issue. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:build_template
System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Windows 10 Home 1909
TensorFlow installed from (source or binary): Tensorflow.org
TensorFlow version: 1.13.2 gpu
Python version: 3.75 (64-bit)
Installed using virtualenv? pip? conda?: pip
CUDA/cuDNN version: 10.0
GPU model and memory: ZOTAC GeForce GT 1030 2GB GDDR5

Describe the problem
So I was trying to run "CorentinJ's Real Time Voice Cloning project" using a guide for windows 10 (https://poorlydocumented.com/2019/11/installing-corentinjs-real-time-voice-cloning-project-on-windows-10-from-scratch/) and I followed the guide exactly as it said to.
Provide the exact sequence of commands / steps that you executed before running into the problem
C:\Users\Dolphin EMU\appdata\local\programs\python\python37\scripts\real-time-voice-cloning-master> .\pip install tensorflow-gpu==1.13.2
I restarted powershell after installation finished
C:\Users\Dolphin EMU\appdata\local\programs\python\python37\scripts\real-time-voice-cloning-master> .\python.exe demo_toolbox.py
Any other info / logs
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.
Traceback (most recent call last):
  File "demo_toolbox.py", line 2, in <module>
    from toolbox import Toolbox
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\scripts\real-time-voice-cloning-master\toolbox\__init__.py", line 3, in <module>
    from synthesizer.inference import Synthesizer
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\scripts\real-time-voice-cloning-master\synthesizer\inference.py", line 1, in <module>
    from synthesizer.tacotron2 import Tacotron2
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\scripts\real-time-voice-cloning-master\synthesizer\tacotron2.py", line 3, in <module>
    from synthesizer.models import create_model
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\scripts\real-time-voice-cloning-master\synthesizer\models\__init__.py", line 1, in <module>
    from .tacotron import Tacotron
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\scripts\real-time-voice-cloning-master\synthesizer\models\tacotron.py", line 1, in <module>
    import tensorflow as tf
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\lib\site-packages\tensorflow\__init__.py", line 24, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\__init__.py", line 49, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in <module>
    raise ImportError(msg)
ImportError: Traceback (most recent call last):
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\lib\imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "C:\Users\Dolphin EMU\appdata\local\programs\python\python37\lib\imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.

Failed to load the native TensorFlow runtime.

See https://www.tensorflow.org/install/errors

for some common reasons and solutions.  Include the entire stack trace
above this error message when asking for help.

Please assign me this issur

Please assign me this issue

Please assign me this issue

@Toastmanv3
What is make/model of your cpu?
I suspect your cpu model does not support AVX instructions sets.See hardware requirements
Make sure to download the latest microsoft visual c++ redistributable from here.
.Also, please follow the instructions from to install from Tensorflow website.
Please, check Your CPU/Python is on 32 bits?Please, refer #36167 and see if it helps you.Please, refer similar issues #36167 #36151 #36138 #36054 #36045 #36020 #36003 #35988 #35903 #35880 #35865 #35805 #35789 #35773 #35772 #35767 #35766 #35749 #35721 #35618 #35204
Thanks!


[Bug] TypeError: Failed to execute 'animate' on 'Element': duration must be non-negative or auto

1. Describe the bug
I have a timeline and I'm trying to start an animation along another assigning a name and using it in the at property as below, but when I do that I get the error in that title
     [
        "#inner-column-container",
        { height: ["350%", "100%"] },
        { easing: "ease-in-out", duration: "2.5", name: "initial-scale" },
      ],
      [
        "#animation-container",
        { scale: ["0.1", "1"] },
        { easing: "ease-in-out", at: "initial-scale", duration: "2" },
      ]

error:
[Bug] TypeError: Failed to execute 'animate' on 'Element': duration must be non-negative or auto
2. IMPORTANT: Provide a CodeSandbox reproduction of the bug
Reproducible example

Can you reopen with a minimal reproduction? This sandbox is broken for me and just a simple timeline that reproduces this would be helpful.


Add support for Ollama, Palm, Claude-2, Cohere, Replicate Llama2, CodeLlama, Hugging Face (100+LLMs) - using LiteLLM

from litellm import completion

## set ENV variables
os.environ["OPENAI_API_KEY"] = "openai key"
os.environ["COHERE_API_KEY"] = "cohere key"

messages = [{ "content": "Hello, how are you?","role": "user"}]

# openai call
response = completion(model="gpt-3.5-turbo", messages=messages)

# cohere call
response = completion(model="command-nightly", messages)

# anthropic call
response = completion(model="claude-instant-1", messages=messages)

@Kristoff-starling @ganler @brutalsavage can I get a review on this PR ?

@ishaan-jaff  Doesn't this code break openai? You need to add a litellm provider and not oerride openapi code.


[gym/common] Support specifying reward in pipeline config.

[gym/common] Add compose reward pipeline wrapper.
[gym/common] Support specifying reward in pipeline config.
[misc] Update install instructions on windows.

TODO

Rename ComposeReward in ComposedJiminyEnv and move it to bases
Add ComposedJiminyEnv to the allow list of ControlledJiminyEnvand ObservedJiminyEnv
Move adding reward in pipeline before other layers

Done


class_container

A few things I can see at first glance:

the basic item should look like this:

#### `string getData(string key)`
`` `lua
local prayerLevel = tonumber(item:getData("prayerLevel"))
`` `
Returns the item's data value for the given `key` if that key exists and an empty string otherwise.

That way the example is aligned with the content.

there is an extra "boolean" in front of "InsertContainer"

"int void" is not a type. It's either left blank if the function doesn't return anything or "number" which is a Lua type

for function parameters, the syntax used is type name e.g. number count or string key

the variable names should be referenced like count in the description as well, preferably in a complete and logical sentence: Returns the item's data value for the given key

the Container class should be alphabetically sorted into the class list on the left, so between colour and Dialogs

The class name should not be repeated for each function. See e.g. Item class for a general formatting/styling example.


Fix: force, buildFromSource cli opts are ignored in yarn

The issue comes from this changes 4 years ago which fixed the issue that sources were always compiling when used in yarn: https://github.com/prebuild/prebuild-install/commit/e9065dd0e1c090fd4966496091fc1f27b074fadd
This fix seems irrelevant by now, when one looks at the code paths. It also blocks the usage of the force and buildFromSource options. It seems safe to simply remove the check altogether. I have verified that doing so makes prebuild-install correctly download or build from source when explicitly told so, using yarn.
Co-authored-by: Benjamin Pasero<EMAIL_ADDRESS>Fixes: https://github.com/prebuild/prebuild-install/issues/139

This fix seems irrelevant by now, when one looks at the code paths.

Can you elaborate? Is it b6f3b36cc9de94398e2554b951103191ea0097fb that made the fix irrelevant?

This fix seems irrelevant by now, when one looks at the code paths.

Can you elaborate? Is it b6f3b36cc9de94398e2554b951103191ea0097fb that made the fix irrelevant?

Good question. And now that I look at it again, it just seems that https://github.com/prebuild/prebuild-install/commit/e9065dd0e1c090fd4966496091fc1f27b074fadd was simply a bad fix, since it just makes it that in yarn, it would always load from https, regardless of the buildFromSource opt value.
What would be interesting to find out was: what was making prebuild-install misbehave in the presence of yarn, such that that commit was necessary?

Good question. And now that I look at it again, it just seems that https://github.com/prebuild/prebuild-install/commit/e9065dd0e1c090fd4966496091fc1f27b074fadd was simply a bad fix, since it just makes it that in yarn, it would always load from https, regardless of the buildFromSource opt value.
What would be interesting to find out was: what was making prebuild-install misbehave in the presence of yarn, such that that commit was necessary?

What would be interesting to find out was: what was making prebuild-install misbehave in the presence of yarn, such that that commit was necessary?

https://github.com/prebuild/prebuild-install/blob/e9065dd0e1c090fd4966496091fc1f27b074fadd/bin.js#L45-L49
The first if-branch was added because yarn would always match the second if-branch, because it didn't add metadata (like _from) to package.json files on disk, like npm did (until npm 7).

It seems safe to simply remove the check altogether.

I agree, as prebuild-install has been updated to be compatible with npm 7 which (long story short) means that the absence of pkg._from is no longer an issue.

6.1.1

Thank you!


Add cap check before minting tokens

Title: Refactoring Work Tracking Mechanism and Introducing Gas Refund Function

Description:
This pull request introduces significant enhancements to the VMPX contract:

Per-user Work Tracking: We've modified the _work mapping to store arrays of uints for each user, replacing the previous universal counter mechanism. This change allows the contract to track the 'work' performed by each user individually, providing a more granular and user-centric approach to work tracking.

Gas Refund Functionality: A new function clearWork has been introduced. Users can now clear their own work arrays, potentially allowing them to claim a gas refund for storage cleanup. This feature is intended to increase the contract's gas efficiency and to give users more control over their interactions with the contract.

Safety Check in Mint Function: To ensure the integrity of our tokenomics, we've implemented a safety check in the mint function. This check prevents any minting operation that would cause the total supply to exceed the token cap.

Files Changed:

VMPX.sol

Test Plan:
Ensure that all the existing unit tests pass. New unit tests should be written to test:

The _doWork function correctly stores work in the _work mapping.
The clearWork function correctly deletes the work associated with a user and reverts when called by an account with no work.
The mint function does not allow minting that would exceed the token cap.

Potential Risks:
Given that we have fundamentally altered the way work tracking operates and introduced a new function, it is vital that we conduct a comprehensive review and rigorous testing to identify and mitigate any potential security or functionality risks.
One particular area of interest is the adjustment of the BATCH number or cycles parameters set in the constructor. With our shift from storing boolean values to an array of uints, there may be differences in memory usage and consequently gas costs. These changes could necessitate a recalibration of the BATCH and cycles parameters to maintain efficient gas utilization and to preserve the economic balance of the system.
We welcome your insightful feedback and thorough review of these proposed changes. Please feel free to point out any possible issues or suggest improvements.

Title: Add cap check before minting tokens
Description:
This pull request introduces a crucial update to the mint function in the VMPX contract.
Changes:
We've added a requirement to check if the total supply of the token, after the proposed minting operation, would exceed the maximum cap set for this token.
Rationale:
The primary intention behind this change is to optimize gas usage in the contract. In the previous version of the contract, the minting operation would be performed before checking if the total supply exceeded the cap. If the cap was exceeded, the transaction would be reverted, but the gas used for the minting operation would still be consumed.
With this update, the contract checks if the minting operation would exceed the cap before it starts the minting process. This means that if the cap would be exceeded, the transaction is reverted immediately, saving the gas that would otherwise be used for the minting operation.
This is a significant improvement in terms of smart contract development, as it helps to optimize the contract's gas usage and makes it more efficient.
Please review this change and provide your feedback. We believe this update will significantly enhance the efficiency of our contract and prevent unnecessary gas consumption.


Improve troubleshooting for SSL cert issues

The problem @helderribeirosousa had in #72 is going to come up again for more users. Let's figure out some ways to make this issue, and other issues that manifest just as "it doesn't work", easier to debug and fix.
For the SSL cert issue in particular, we should add some documentation.

I think we could add some logging traces to report information about the processing status. We could do that using a logging facade like slf4j, that will allow clients to plug-in they preferred logging system in their applications.


[HINTS] Add support for memcpy hints

memcpy hints implementation
Description
This PR should be merged after #295 is merged.
Support for the following hints of the memcpy module was added:
%{ vm_enter_scope({'n': ids.len}) %}

%{
    n -= 1
    ids.continue_copying = 1 if n > 0 else 0
%}

%{ vm_exit_scope() %}

A helper function, get_address_from_var_name is also added in hint_utils to make the hints a little less verbose. The older hints can be refactored to use this function in the future.
Unit and integration tests were added.
Checklist

[ ] Linked to Github Issue
[x] Unit tests added
[x] Integration tests added.
[ ] This change requires new documentation.

[ ] Documentation has been added/updated.

Codecov Report

Merging #297 (9c8703d) into main (0431d67) will increase coverage by 0.03%.
The diff coverage is 88.13%.

@@            Coverage Diff             @@
##             main     #297      +/-   ##
==========================================
+ Coverage   96.16%   96.19%   +0.03%
==========================================
  Files          24       24
  Lines        7145     8070     +925
==========================================
+ Hits         6871     7763     +892
- Misses        274      307      +33

Impacted Files
Coverage Δ

src/main.rs
0.00% <0.00%> (ø)

src/vm/hints/execute_hint.rs
100.00% <ø> (ø)

src/serde/deserialize_program.rs
91.42% <33.33%> (-1.02%)
:arrow_down:

src/serde/deserialize_utils.rs
83.21% <50.00%> (+0.98%)
:arrow_up:

src/cairo_run.rs
85.45% <85.71%> (+0.19%)
:arrow_up:

src/vm/hints/hint_utils.rs
82.44% <86.55%> (+3.19%)
:arrow_up:

src/vm/runners/cairo_runner.rs
98.25% <95.65%> (-0.36%)
:arrow_down:

src/vm/vm_core.rs
97.27% <96.07%> (-0.04%)
:arrow_down:

src/types/exec_scope.rs
97.70% <100.00%> (ø)

tests/bitwise_test.rs
100.00% <100.00%> (ø)

... and 10 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0431d67...9c8703d. Read the comment docs.


KinematicBody2D using move_and_collide makes other colliding KinematicBody2D move

Godot version:
Godot 3.0.6 and custom build 12290c172a6dd3763670d36039fbac8198e711f5
OS/device including version:
Windows 10 64 bit
Issue description:
When a KinematicBody2D collides with another KinematicBody2D, they make each othe move if their movement is not parallel.
Reducing the safe margin mitigates the problem but doesn't completely solve it.
Here the object to the left performs move_and_collide(Vector2(15 * delta, 0)) and the one the right move_and_collide(Vector2(0, 0)) inside _physics_process. Safe margin is default 0.08.

Probably related to #18433
Minimal reproduction project:
move_and_collide_test.zip

I can verify this as well, using Win10 64-bit with version 3.1 alpha c320d93.

The project is using the default safe margin which is too high for this kind of interaction, all the bodies try to separate after move, making it move to the sides, reduce the safe margin to the minimum: 0.001.

@eon-s That seems to solve it.  That is quite a small margin value though.  X)

On faster motions you can use higher margin (like on platformer demos), but if you want this kind of behavior, you must use a really low one.

Reducing the safe margin mitigates the problem but doesn't completely solve it.

Even setting it to 0.001 doesn't ensure the KinematicBody2D doesn't move.
If the current approach with collision detection doesn't allow to completely solve this issue, I'd like to choose whether to enable the "try to separate" behaviour when I move a body.
Could this be implemented in a convenient way?

It may still happens at very small motions, I do not know if there is a better option than test_move, check the results and decide if move or not to avoid pushing other objects.

That's not accurate enough, test_move only returns whether the movement would result in a collision or not, it doesn't provide any other informations.
The normal vector, the distance that is safe to travel before colliding with something, the colliding object and in general all the variables contained in KinematicCollision2D.
The only method I can think of is Physics2DDirectSpaceState's cast_motion, but it only provides the distance that it's safe to travel and the distance that would trigger a collision, this is not enough.


Add WP-CLI

https://github.com/schlessera/awesome-wp-cli#readme
Awesome list for WP-CLI, the command-line interface for WordPress. WP-CLI is a critical piece of infrastructure for the WordPress ecosystem and a huge productivity boost for development and site management. It needs an awesome list because very few people make use of a larger portion of its potential, as they don't know about all the awesome third-party extension packages and helpful guides that would allow them to shift into next gear.
Note: awesome-lint is enforced on the list via a GitHub Action.
Reviewed PRs:

https://github.com/sindresorhus/awesome/pull/1757
https://github.com/sindresorhus/awesome/pull/1769

Related closed PR before the main branch change:

https://github.com/sindresorhus/awesome/pull/1770

By submitting this pull request I confirm I've read and complied with the below requirements 🖖
Please read it multiple times. I spent a lot of time on these guidelines and most people miss a lot.
Requirements for your pull request

Don't waste my time. Do a good job, adhere to all the guidelines, and be responsive.
You have to review at least 2 other open pull requests.
Try to prioritize unreviewed PRs, but you can also add more comments to reviewed PRs. Go through the below list when reviewing. This requirement is meant to help make the Awesome project self-sustaining. Comment here which PRs you reviewed. You're expected to put a good effort into this and to be thorough. Look at previous PR reviews for inspiration.
You have read and understood the instructions for creating a list.
This pull request has a title in the format Add Name of List.

✅ Add Swift
✅ Add Software Architecture
❌ Update readme.md
❌ Add Awesome Swift
❌ Add swift
❌ Adding Swift
❌ Added Swift

Your entry here should include a short description about the project/theme of the list. It should not describe the list itself. The first character should be uppercase and the description should end in a dot. It should be an objective description and not a tagline or marketing blurb.

✅ - [iOS](…) - Mobile operating system for Apple phones and tablets.
✅ - [Framer](…) - Prototyping interactive UI designs.
❌ - [iOS](…) - Resources and tools for iOS development.
❌ - [Framer](…)
❌ - [Framer](…) - prototyping interactive UI designs

Your entry should be added at the bottom of the appropriate category.
The suggested Awesome list complies with the below requirements.

Requirements for your Awesome list

Has been around for at least 30 days.That means 30 days from either the first real commit or when it was open-sourced. Whatever is most recent.
Don't open a Draft / WIP pull request while you work on the guidelines. A pull request should be 100% ready and should adhere to all the guidelines when you open it.
Run awesome-lint on your list and fix the reported issues. If there are false-positives or things that cannot/shouldn't be fixed, please report it.
Includes a succinct description of the project/theme at the top of the readme. (Example)

✅ Mobile operating system for Apple phones and tablets.
✅ Prototyping interactive UI designs.
❌ Resources and tools for iOS development.
❌ Awesome Framer packages and tools.

It's the result of hard work and the best I could possibly produce.
If you have not put in considerable effort into your list, your pull request will be immediately closed.
The repo name of your list should be in lowercase slug format: awesome-name-of-list.

✅ awesome-swift
✅ awesome-web-typography
❌ awesome-Swift
❌ AwesomeWebTypography

The heading title of your list should be in title case format: # Awesome Name of List.

✅ # Awesome Swift
✅ # Awesome Web Typography
❌ # awesome-swift
❌ # AwesomeSwift

Non-generated Markdown file in a GitHub repo.
The repo should have awesome-list & awesome as GitHub topics. I encourage you to add more relevant topics.
Not a duplicate. Please search for existing submissions.
Only has awesome items. Awesome lists are curations of the best, not everything.
Does not contain items that are unmaintained, has archived repo, deprecated, or missing docs. If you really need to include such items, they should be in a separate Markdown file.
Includes a project logo/illustration whenever possible.

Either centered, fullwidth, or placed at the top-right of the readme. (Example)
The image should link to the project website or any relevant website.
The image should be high-DPI. Set it to maximum half the width of the original image.

Entries have a description, unless the title is descriptive enough by itself. It rarely is though.
Includes the Awesome badge.

Should be placed on the right side of the readme heading.

Can be placed centered if the list has a centered graphics header.

Should link back to this list.

Has a Table of Contents section.

Should be named Contents, not Table of Contents.
Should be the first section in the list.
Should only have one level of nested lists, preferably none.

Has an appropriate license.

We strongly recommend the CC0 license, but any Creative Commons license will work.

Tip: You can quickly add it to your repo by going to this URL: https://github.com/<user>/<repo>/community/license/new?branch=master&template=cc0-1.0 (replace <user> and <repo> accordingly).

A code license like MIT, BSD, Apache, GPL, etc, is not acceptable. Neither are WTFPL and Unlicense.
Place a file named license or LICENSE in the repo root with the license text.
Do not add the license name or text to the readme. GitHub already shows the license name at the top of the repo.
To verify that you've read all the guidelines, please comment on your pull request with just the word unicorn.

Has contribution guidelines.

The file should be named contributing.md. Casing is up to you.

Has consistent formatting and proper spelling/grammar.

The link and description are separated by a dash. Example: - [AVA](…) - JavaScript test runner.
The description starts with an uppercase character and ends with a period.
Consistent and correct naming. For example, Node.js, not NodeJS or node.js.

Doesn't include a Travis badge.You can still use Travis for list linting, but the badge has no value in the readme.
Doesn't include an Inspired by awesome-foo or Inspired by the Awesome project kinda link at the top of the readme. The Awesome badge is enough.

Go to the top and read it again.

unicorn

Do not add the license name or text to the readme. GitHub already shows the license name at the top of the repo.

Linkify WP-CLI in WP-CLI is the command-line interface for WordPress. It offers to its website.

I made the 2 requested changes.
Note: the license text came from the Yeoman generator that you're linking to from the create-list.md file. The generator should be updated in that regard.

Note: the license text came from the Yeoman generator that you're linking to from the create-list.md file. The generator should be updated in that regard.

// @dar5hak

Tweet: https://twitter.com/awesome__re/status/1276827202294657026

I'll update the generator. Thanks for the heads up.

Removed the license text from readme in<EMAIL_ADDRESS>


llamacpp ms fix: builds and allow variable model

/cc @sallyom @rhatdan
Addresses: https://github.com/containers/ai-lab-recipes/pull/175#issuecomment-2041176007
Results in pod non exiting and server starting.
$ make build
llama_model_loader: loaded meta data with 20 key-value pairs and 291 tensors from /locallm/models/mistral-7b-instruct-v0.1.Q4_K_M.gguf (version GGUF V2)
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
...
INFO:     Started server process [2]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://<IP_ADDRESS>:8001 (Press CTRL+C to quit)

Took longer than expected but this should work. RFR @sallyom @rhatdan.
/cc @lmilbaum  as this touches on testing infrastructure.
Tests don't work locally on Darwin AFAIK.

LGTM


error trying to fetch wiiu title keys

For some reason, this program was working flawlessly on another computer until I installed it on my own, and no matter what title key website I type in, it gives me an error. "There was an error while trying to fetch the title keys from http://wiiu.titlekeys.gq/ (the site is probably down)" Yet, all of the websites are working fine. I've checked my firewall which is fine, cleared caches and cookies, but nothing works. tried seeking help from the discord but I am not permitted to send messages for some reason.

The URL that you have provided is down and no longer working, yes the above post is old, so for those reading this, as of today, there is currently no known working URL to use, however where are URL that has the caches ticket database.

The URL that you have provided is down and no longer working, yes the above post is old, so for those reading this, as of today, there is currently no known working URL to use, however there are URL's that has the caches ticket database that could be used.

recommends using download helper. Sadly. ^-^ = As connecting to the cloud service at IP address random host is null in void and cannot be parsed. Enzu corporation is cloud host so yes they guard the stuff well. ^^

The url is down but does work on the program. However requires ticket source catch json, for which is encrypted or has zero ticket.
When the program is based on encryption you are talking about the 3ds or encryption side to programming of program firmware being decrypted as keys from cache with title key.
As to state downloading multiple tickets at once is a risk of a ban which is what Wii U USB helper does or rather places them in %appdata%. Whether or not if it requires a cert. You need the actual ticket which is the cert verifier from ones own machine. For example which is compressed in json format...
Parsing the ticket catche is the issue as downloading the whole firmware as one ticket. Change the value to one with this tool after going through the json file cache for whatever title it is as a factor claim, then resubmit it if you want to share the program (which is not recommended) because of legality or bugs with certain keys.
The ordinary one by 3ds helper will not work but the ticket programming works the same in theory as if developing from source.
And this is the switch side if it actually works. (in theory.) for programmers and testers.
An example here which I will provide the engine or game example, just for legality sake.
[{"titleID":"XXXXXXXXXXXXXXXX","titleKey":"YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY","name":"Z","region":"X","ticket":"0"}, <-------------- change this zero value to one if ticket is required as true or false. Cause the server will probably hate you or others for downloading the same ticket over and over again. Or replication of games is the same for the ticket cache or json cache file that appears after the whole firmware is submitted on ones own machine.

Be sure to fix the bracket or comma as a separator, though I think that is at the end.
Or perhaps just copy and paste and make a new .tik file. Submit the game with the ticket in the program as variable 1. Which - I doubt Nintendo will like me after this but it is good for machine only. As to define 0 and 1 error code binary data.

Method goes for using the 3ds but also should work for WiiU in theory. As Key Scrambler X and Y to get common key of game. So in theory, the title key is scrambled with title id. Or rather the decrypted key, = common key of game for Wii U. You already have the decryption key and title id. What is needed is the common key of game to basically get the game or rather encryption right.
If they just made a program for downloading the keys decrypted, the game would be illegit because it would determine hey you don't have the ticket which is needed to be submitted anyway.

The url is down but does work on the program. However requires ticket source catch json, for which is encrypted or has zero ticket or maybe it is decrypted which makes things easy in theory for some and hard for others.
When the program is based on encryption you are talking about the 3ds or encryption side to programming of program firmware being decrypted as keys from cache with title key.
As to state downloading multiple tickets at once is a risk of a ban which is what Wii U USB helper does or rather places them in %appdata%. Whether or not if it requires a cert. You need the actual ticket which is the cert verifier from ones own machine. For example which is compressed in json format...
Parsing the ticket catche is the issue as downloading the whole firmware as one ticket. Change the value to one with this tool after going through the json file cache for whatever title it is as a factor claim, then resubmit it if you want to share the program (which is not recommended) because of legality or bugs with certain keys.
The ordinary one by 3ds helper will not work but the ticket programming works the same in theory as if developing from source.
And this is the switch side if it actually works. (in theory.) for programmers and testers.
An example here which I will provide the engine or game example, just for legality sake.
[{"titleID":"XXXXXXXXXXXXXXXX","titleKey":"YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY","name":"Z","region":"U","ticket":"0"}, <-------------- change this zero value to one if ticket is required as true or false. Cause the server will probably hate you or others for downloading the same ticket over and over again. Or replication of games is the same for the ticket cache or json cache file that appears after the whole firmware is submitted on ones own machine.

Be sure to fix the bracket or comma as a separator, though I think that is at the end.
Or perhaps just copy and paste and make a new .tik file. Submit the game with the ticket in the program as variable 1. Which - I doubt Nintendo will like me after this but it is good for machine only. As to define 0 and 1 error code binary data.

Method goes for using the 3ds but also should work for WiiU in theory. As Key Scrambler X and Y to get common key of game. So in theory, the title key is scrambled with title id. Or rather the decrypted key, = common key of game for Wii U. You already have the decryption key and title id. What is needed is the common key of game to basically get the game or rather encryption right.
If they just made a program for downloading the keys decrypted, the game would be illegit because it would determine hey you don't have the ticket which is needed to be submitted anyway or needs to be licensed appropriately. Therefore one would need the encrypted common key.

I made this a while back, and some days after I managed to get through the Discord and failedShack told me that I had the crypto error and I just had to delete that folder and the regular titlekeys.ovh website works. But thanks for the replies though, learned something new.


Add purchase pages (front and backend)

Add a backend endpoint for generating download tokens for apps. This API checks a database table, UserOwnedApp, to see if the user owns the given app ID (it also allows .Locale and .Debug suffixes). Populating the UserOwnedApp table will be part of the checkout flow, and is not part of this PR.
Add three pages on the frontend. The main one, /purchase, attempts to generate a download token for the requested app(s) and redirects based on the result: either to the login page, checkout page, or flathub-authenticator (which is running on localhost).
The current transaction "shopping cart" is stored in localStorage. If a new transaction is started, the old one will be replaced--I'm not sure if there's a good way around this. Once you log in, if there's a pending transaction, you'll be redirected to /purchase instead of your user page.
The checkout page is currently nearly empty. It has a usePendingTransaction() call so that in the future, it can access the pendingTransaction.missingAppIDs property to get the list of apps that need to be bought.
Depends on flatpak/flat-manager#53 for flat-manager to accept the download tokens created by this backend.

Rebased. @kymckay Also added a comment with link.

Is this waiting for something or should we hit the button?


[FEATURE] Implement a JDBC catalog of SQLITE

Describe the feature
Implement a JDBC catalog of SQLITE
Motivation
It will be convenient for some tests.
Describe the solution
We can refer to other JDBC implements.
Additional context
No response

Hi, I'm interested in this issue. May I take over this ? Many thanks~

hi @brandboat , Thank you for your interest in this issue.
Of course, Please help Gravitino implement it.

@xunliu Could this issue be assigned to me if no one is currently working on it? Thank you!

I'm going to close this issue as SQLITE has already been used in the JDBC test:
https://github.com/apache/gravitino/blob/6b3312a017cbe3282578ad454caf1cb65fa6eb02/catalogs/catalog-jdbc-common/src/test/java/org/apache/gravitino/catalog/jdbc/operation/TestJdbcTableOperations.java#L114


Fix validate tag name. Fix #13149

Signed-off-by: Lei Jitang<EMAIL_ADDRESS>Fixes #13149
We should not allow the tag name leading with -

can we have an integration test too please for the original issue :)

I'll add tests this day:)

@coolljt0725 why did you close this?

@runcom  sorry, just by accident  :)

ping @jfrazelle  Add tests

windows jenkins is failed, I think is not related

@coolljt0725 yup it isn't related

LGTM thanks for adding a test

It looks good to me, merging. :tada:


Unable to install extension 'github.vscode-pull-request-github' as it is not compatible with VS Code '1.67.2'

Extension version: tested on 0.45.2022061509 & 0.44
VSCode Version: 1.67.2
OS: Windows 7 x86

Steps to Reproduce:
just install from VSIX

Fix: Downgrading to 0.42 or Upgrading to the latest version(1.68.1) fixes this issue


Correctly build hierarchy subtrees for default theme

This pull request fixes the hierarchy.hbs template to ensure that it correctly generates substrees (referencing the correct next).
This is required to make the tests for https://github.com/TypeStrong/typedoc/pull/204 pass.

Thanks for the PR. I just merged it and will get a release out ASAP 😄


Program(exe file) gets closed as soon as it open

Hi
In my local system , if I build the exe from pyinstaller .spec then it works fine.
from the github actions artifact. The exe file closes as soon as i open it.
what could be the underlying problem as no error is displayed.
Thank you.
@JackMcKew

It is because the packager did not consider hidden imports from .spec file

Is there a workaround for this?

Can you provide a reproducible example?

remove the following line from spec file:
hooksconfig={},
This is recommended by the github actions as it is a known/common error with the package.

Marking as complete :) Thank you @musman920


Drop the function call if the css was extracted and there were no dynamic values

What:
When there is a css call, the styles have been extracted and there are no dynamic values, the css call is replaced with the class name.
This also remove the function call for fragments if they have no interpolations.

Why:
Because it removes useless functions calls, thus improving performance.

How:
Previously, all the functions in inline.js returned an object with an isStatic property which had an inconsistent meaning, in some places it meant no @applys and in some places it meant no @applys or css vars. This changes it so that they all return objects with the properties hasVar and hasApply.
Once that was done, it was just adding an if statement to check if there was no vars and no @applys then replacing the path with the class name.

Checklist:

[ ] Documentation N/A
[ ] Tests
[ ] Code complete

Closes #49

Codecov Report

Merging #52 into master will decrease coverage by 0.47%.
The diff coverage is 100%.

@@            Coverage Diff            @@
##           master     #52      +/-   ##
=========================================
- Coverage   87.97%   87.5%   -0.48%
=========================================
  Files          15      15
  Lines         549     528      -21
  Branches      113     107       -6
=========================================
- Hits          483     462      -21
  Misses         53      53
  Partials       13      13

Impacted Files
Coverage Δ

test/extract/extract.test.emotion.css
100% <ø> (ø)
:arrow_up:

src/index.js
89.47% <ø> (-0.78%)
:arrow_down:

src/inline.js
100% <100%> (ø)
:arrow_up:

src/babel.js
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 67835c7...2c18765. Read the comment docs.


Filters: --async --function --class --typed --untyped --partially-typed --fully-typed

Refs:

#21

TODO:

[x] Switch implementation to AND filters rather than OR them
[x] Refactor to be less messy
[x] Unit tests
[x] Documentation

Documentation: https://github.com/simonw/symbex/blob/786536970fd5cf4f0968a56ff53d78f13d6185d4/README.md#filters


Unable to read partition as FAT

Robot Model
Turtlebot4 Standard
ROS distro
Humble
Networking Configuration
I do not know
OS
Ubuntu 22.04
Built from source or installed?
Installed
Package version
turtlebot4_standard_humble_1.0.0.zip 2023-03-03 23:51 1.9G
Type of issue
Other
Expected behaviour
I can follow the robot setup after installing latest Raspberry Pi image
Actual behaviour

Error messages
No response
To Reproduce
Find the latest TurtleBot 4 Raspberry Pi images at http://download.ros.org/downloads/turtlebot4/.
Download the latest image and extract it.
Power off your robot and then remove the microSD card from the Raspberry Pi.
Insert the microSD card into your PC. You may need an adapter.
Install the imaging tool dcfldd

sudo apt install dcfldd
Identify your SD card

sudo fdisk -l
wget https://raw.githubusercontent.com/turtlebot/turtlebot4_setup/humble/scripts/sd_flash.sh
bash sd_flash.sh /path/to/downloaded/image
Other notes
I just follow the steps of installing a new image on the Raspberry Pi. But always meet the error of 'Unable to read partition as FAT'. I tried to format the SD card as FAT 32 partition and change the SD cards, but it always shows the problem like this. I also flash the Raspberry Pi OS to a new SD card and I can use it. What might be the issue here?

And if I use this command it shows :
sudo dosfsck -w -r -l -v -t /dev/sdb1
fsck.fat 4.2 (2021-01-31)
Currently, only 1 or 2 FATs are supported, not 251.

Hello @codingBigBird ,
Thank you for reaching out on the Turtlebot 4 Github page.
When identifying the SD card what is the output?
When trying to flash the SD card, what are the exact commands you are using (i.e. do you specify the path to the extracted file?)
What are you inputting as the SD card device? Often times, the sd card identifying command will list the partitions available on the drive, for example, when I identify the SD card I get /dev/sda0 and /dev/sda1, but they are both listed under /dev/sda.
When flashing the device, you should specify to use the entire device, not a partition of the device.
Let me know how this recommendation works for you. Looking forward to hearing from you soon.
Best Regards,
Saif M.

Hello,
This issue is being closed due to inactivity. If you are still experiencing the issue, feel free to reopen this ticket when you are ready to continue the troubleshooting process.
Best Regards,
Saif


Question about MS8607 Humidity Resolution Options

I am in the process of attempting to create a smaller port of the MS8607 module to use with Micro Python on an ESP8266 (I have been unable to find a compatible existing module)
While analyzing the existing module and referencing a datasheet for the MS8607-02BA01 PHT Combination Sensor I discovered that (at least in the datasheet I have) that it doesn't have any humidity options other than OSR_2048 - 0x81. Is this the case?
I cant find any reference in the entire datasheet I have to any functions/resolutions/sampling rates that reference (0x01, 0x80, 0x00).
It is possible the datasheet represents a different MS8607 module but I thought I may as well ask.
Any information that could be provided would be much appreciated.
for reference, this is on line 95 of adafruit_ms8607.py:
HumidityResolution.add_values(
    (
        ("OSR_256", 0x01, 8, 0.003),
        ("OSR_1024", 0x80, 10, 0.005),
        ("OSR_2048", 0x81, 11, 0.009),
        ("OSR_4096", 0x00, 12, 0.016),
    )

See page 8 of the datasheet here regarding the user register settings.  It actually looks like they may be defined incorrectly here in this library.

Hello was taking a look at this, Humidity is compared with a mask here and that is why gets a little confusing comparing to the datasheet values.
https://github.com/adafruit/Adafruit_CircuitPython_MS8607/blob/77b5038e8aba0f362e3b200cc3722efe5b362ba4/adafruit_ms8607.py#L379

HumidityResolution.add_values(
    (
        ("OSR_256", 0x01, 8, 0.003),
        ("OSR_1024", 0x80, 10, 0.005),
        ("OSR_2048", 0x81, 11, 0.009),
        ("OSR_4096", 0x00, 12, 0.016),
    )
)

Bit 7
Bit 0
Resolution
Calculation
Result

0
0
4096
0x00 & 0b10000001
0......0

0
1
2048
0x01 & 0b10000001
1......1

1
0
1024
0x80 & 0b10000001
1......0

1
1
256
0x81 & 0b10000001
1......1

I do have the Sensor so I an take a look to see if this is indeed the case, and make a PR. let me know, thanks


Need to ensure user is using demo site on different device than wallet

Since deep linking may not be ready for M2, we need to ensure the user is browsing the demo site on a different device than they have BC Wallet on.
Suggest we do two things:

Change the up-front description to make sure they're on a different device
Hide the same-device links that would ordinarily appear below the QR codes

Anything else? @cvarjao @wadeking98

@alexgmetcalf, it is in the works. I should be ready

Deep linking is now supported


Visual Studio Online

API: https://www.visualstudio.com/en-us/integrate/api/overview
Sample badge:

Thanks for the suggestion!
It seems like something like this ought to work:
curl 'https://fabrikam.visualstudio.com/defaultcollection/Fabrikam-Fiber-Git/_apis/build/builds?$top=1'

I'd have to dig deeper to understand what https://larsbrinkhoff.visualstudio.com/DefaultCollection/_apis/public/build/definitions/953a34b9-5966-4923-a48a-c41874cfb5f5/1/ is, but I'd guess that 953a34b9-5966-4923-a48a-c41874cfb5f5 is a private token (the equivalent of Fabrikam-Fiber-Git above).

Hi espadrine,
every VSO/VTS project has a name and an ID.
"953a34b9-5966-4923-a48a-c41874cfb5f5" is the ID of the project and "Fabrikam-Fiber-Git" would be the name here and shown in URLs, like https://.visualstudio.com/DefaultCollection/
The additional number (here "/1/" ) is the build definition you can see on https://.visualstudio.com/DefaultCollection//_build or the selected item with https://.visualstudio.com/DefaultCollection//_build/definitionId=1
So you need 3 information elements: teamname, projectId and builddefinitionId
I dont think, that this will help you to provide that feature, because IIRC the api can only return a badge and no state.
Currently there is no information in the view to get the project id.

Hope this helps.
Best wishes
Ben

The SVG data does have the text "passed" embedded.  Is that useful?

PR submitted: #589.


Reading binary files.

This is more of a question,
Is this project intended to be used to read .bin files exported from tractors and harvesters etc?
If so, is it possible to se an example of reading .bin files or can anyone point me to another more suitable python project (if such is known)

This project provides some utilities for decoding raw iso11783 messages off the canbus in agricultural equipment. You will need your own mechanism for capturing data off the bus.
This is different than the proprietary machine controller files that can be exported from the display. I think what you are looking for is something more like this: https://dev.agrigate.io/#introduction


will the plugin take over all the notification generated by kibana's Notifier

will the plugin take over all the notification generated by kibana's Notifier

Currently, all notifications that occurred by kibana's Notifier are displayed in the notification_center panel.
😸

Added a NOTE to the README to help understand.
See 9c16578715258f3d73528e995b1d64f85408b859
Thank you.


Hi

Love how you expect people to participate but ban anyone who opposes you in Discord. Why not list this as a private group since it's not open to all SNHU Students!

Not planned.


ParsePattern: allow identifiers starting with $ in protocol declaration.

This enables protocols to require the existence of certain projected values in conforming types:
protocol ProtocolWithProjectedValue {
  var foo: Int { get set }
  var $foo: Wrapper<Int> { get }
}

struct StructWithPropertyWrapper: ProtocolWithProjectedValue {
  @Wrapper var foo = 1337
}

It is mentioned in the comments here: https://forums.swift.org/t/property-wrapper-requirements-in-protocols/33953 but that proposal seems to be stuck.
As opposed to the full proposal, this PR is a low hanging fruit (one line of code changed) that gives almost the same new capabilities to the developer.
From the desugaring point of view, this PR can also be seen as a prerequisite of the aforementioned proposal.

Yay! This will solve my problem https://stackoverflow.com/q/57652925

I am not part of the swift team, but out of curiosity, but looking at the change, it seems it allows definition of variables with $ prefix inside protocols. I think this change requires more than just enabling it inside protocols, custom errors generated also should be clear. For example in following cases:
protocol ProtocolWithDollarSignProperty {
    var foo: String { get }
    var $foo: Wrapper<Int> { get }
}

This protocol can never be satisfied by any type trying to implement it (as the foo type is different from Wrapper generic type). I believe, language should prohibit introduction of such codes.

It is actually possible, even if a bit insane:
@propertyWrapper
struct InsaneWrapper<Value> {
  var wrappedValue: Value

  var projectedValue: Wrapper<Int> {
    .init(v: 5)
  }
}

struct ConformingStruct: ProtocolWithDollarSignProperty {
  @InsaneWrapper var foo: String
}

Property wrappers seem to allow you to project arbitrary values, the only thing we constrain in the protocol is the type of the projected value, not its meaning.

This feature is very much needed and this feature is very useful for me.


[PDI-20159] - prevent double encoding of spaces

The changes to Rest.java are primarily changing UriComponent.Type.QUERY_PARAM to UriComponent.Type.QUERY_PARAM_SPACE_ENCODED so spaces wouldn't be double-encoded, and splitting callRest() into several methods so they could be unit tested.
Github doesn't seem to handle the change well, despite the only changes being indentation for most lines.

🐸 JFrog Frogbot

new File( filename )

at engine/src/main/java/org/pentaho/di/trans/steps/sasinput/SasInputHelper.java (line 58)
🎯 Static Application Security Testing (SAST) Vulnerability

Severity
Finding

  Medium
Stored Path Traversal

 Full description

Overview
Path traversal, also known as directory traversal, is a type of
vulnerability that allows an attacker to access files or directories on a
computer or device that are outside of the intended directory.
Allowing arbitrary read access can allow the attacker to read sensitive
files, such as configuration files or sensitive data, potentially leading
data loss or even system compromise. Allowing arbitrary write access is
more severe and in most cases leads to arbitrary code execution, via
editing important system files or sensitive data.
Vulnerable example
public class path_traversaLvuln {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String DOCS_FOLDER = "/srv/www/docs";
        String docName = statement.executeQuery(query);  // Reading from DB
        Path docPath = Paths.get(DOCS_FOLDER, docName);
        File docFile = docPath.toFile();
        FileUtils.copyFile(docFile, response.getOutputStream());
    }
}

In this example, an attacker can, via a stored parameter, inject a back-path,
that will get anywhere in the system, using "../../".
Remediation
public class path_traversal_safe {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String DOCS_FOLDER = "/srv/www/docs";
        String docName = statement.executeQuery(query);  // Reading from DB
        Path docPath = Paths.get(DOCS_FOLDER, docName);
        + Path normDocPath = docPath.normalize();
        + // Make sure the canonical path resides in the desired dir
        + if (normDocPath.startsWith(DOCS_FOLDER)) {
            File docFile = docPath.toFile();
            FileUtils.copyFile(docFile, response.getOutputStream());
        + }
    }
}

By checking that the folder name still starts with the predefined prefix, we
make sure that the attacker is not able to back-path outside of the allowed
folder.

 Code Flows

 Vulnerable data flow analysis result

↘ System.getProperty( "file.separator" ) (at ui/src/main/java/org/pentaho/di/ui/trans/steps/sasinput/SasInputDialog.java line 383)
↘ dialog.getFilterPath() + System.getProperty( "file.separator" ) (at ui/src/main/java/org/pentaho/di/ui/trans/steps/sasinput/SasInputDialog.java line 383)
↘ dialog.getFilterPath() + System.getProperty( "file.separator" ) + dialog.getFileName() (at ui/src/main/java/org/pentaho/di/ui/trans/steps/sasinput/SasInputDialog.java line 383)
↘ filename (at ui/src/main/java/org/pentaho/di/ui/trans/steps/sasinput/SasInputDialog.java line 383)
↘ new SasInputHelper( filename ) (at ui/src/main/java/org/pentaho/di/ui/trans/steps/sasinput/SasInputDialog.java line 384)
↘ `public class SasInputHelper {
private String filename;
private RowMetaInterface rowMeta;
private SasReader sasReader;
/**

@param filename

     The SAS7BAT filename

*/
public SasInputHelper( final String filename ) throws KettleException {
this.filename = filename;
sasReader = new SasReader( new File( filename ) );

// Determine the row layout of the file ...
//
try {
  rowMeta = new RowMeta();
  sasReader.read( new SasReaderCallback() {
    public void column( int index, String name, String label, SasColumnType type, int length ) {
      int kettleType = ValueMetaInterface.TYPE_NONE;
      int kettleLength;
      switch ( type ) {
        case CHARACTER:
          kettleType = ValueMetaInterface.TYPE_STRING;
          kettleLength = length;
          break;
        case NUMERIC:
          kettleType = ValueMetaInterface.TYPE_NUMBER;
          kettleLength = -1;
          break;
        default:
          throw new RuntimeException( "Unhandled SAS data type encountered: " + type );
      }
      try {
        ValueMetaInterface valueMeta = ValueMetaFactory.createValueMeta( name, kettleType );
        valueMeta.setLength( kettleLength );
        valueMeta.setComments( label );
        rowMeta.addValueMeta( valueMeta );
      } catch ( Exception e ) {
        throw new SasReaderException( "Unable to create new value meta type", e );
      }
    }

    public boolean readData() {
      return false;
    }

    public boolean row( int rowNumber, Object[] rowData ) {
      return true;
    }
  } );
} catch ( Exception e ) {
  throw new KettleException( "Unable to determine the layout of SAS7BAT file '" + filename + "'", e );
}

}
@Override
public String toString() {
return filename;
}
/**

@return the filename
*/
public String getFilename() {
return filename;
}

/**

@return the rowMeta
*/
public RowMetaInterface getRowMeta() {
return rowMeta;
}
}` (at engine/src/main/java/org/pentaho/di/trans/steps/sasinput/SasInputHelper.java line 44)

↘ final String filename (at engine/src/main/java/org/pentaho/di/trans/steps/sasinput/SasInputHelper.java line 55)
↘ new File( filename ) (at engine/src/main/java/org/pentaho/di/trans/steps/sasinput/SasInputHelper.java line 58)

🐸 JFrog Frogbot

🐸 JFrog Frogbot

🐸 JFrog Frogbot

:warning: Build finished in 3h 25m 29s
Build command:
mvn clean verify -B -e -Daudit -Djs.no.sandbox -pl plugins/rest/core

:no_entry: Failed Tests
:cloud_with_lightning_and_rain: 1 test(s) failed:
org.pentaho.di.trans.steps.rest.RestTest.unnecessary Mockito stubbings (click to expand)

Unnecessary stubbings detected in test class: RestTest
Clean & maintainable test code requires zero unnecessary code.
Following stubbings are unnecessary (click to navigate to relevant line of code):
  1. -> at org.pentaho.di.trans.steps.rest.RestTest.testPutWithEmptyBody(RestTest.java:186)
Please remove unnecessary stubbings or use 'lenient' strictness. More info: javadoc for UnnecessaryStubbingException class.

Tests run: 33, Failures: 1, Skipped: 0    Test Results

:information_source:  This is an automatic message

:warning: Build finished in 1h 24m 28s
Build command:
mvn clean verify -B -e -Daudit -Djs.no.sandbox -pl plugins/rest/core

:no_entry: Failed Tests
:cloud_with_lightning_and_rain: 1 test(s) failed:
org.pentaho.di.trans.steps.rest.RestTest.testPutWithEmptyBody (click to expand)

Can not result from [http://localhost:8080/pentaho]

Request could not be processed
java.net.ConnectException: Connection refused

Tests run: 32, Failures: 1, Skipped: 0    Test Results

:information_source:  This is an automatic message

🐸 JFrog Frogbot

new File( filename )

at engine/src/main/java/org/pentaho/di/trans/steps/sasinput/SasInputHelper.java (line 58)
🎯 Static Application Security Testing (SAST) Vulnerability

Severity
Finding

  Medium
Stored Path Traversal

 Full description

Overview
Path traversal, also known as directory traversal, is a type of
vulnerability that allows an attacker to access files or directories on a
computer or device that are outside of the intended directory.
Allowing arbitrary read access can allow the attacker to read sensitive
files, such as configuration files or sensitive data, potentially leading
data loss or even system compromise. Allowing arbitrary write access is
more severe and in most cases leads to arbitrary code execution, via
editing important system files or sensitive data.
Vulnerable example
public class path_traversaLvuln {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String DOCS_FOLDER = "/srv/www/docs";
        String docName = statement.executeQuery(query);  // Reading from DB
        Path docPath = Paths.get(DOCS_FOLDER, docName);
        File docFile = docPath.toFile();
        FileUtils.copyFile(docFile, response.getOutputStream());
    }
}

In this example, an attacker can, via a stored parameter, inject a back-path,
that will get anywhere in the system, using "../../".
Remediation
public class path_traversal_safe {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String DOCS_FOLDER = "/srv/www/docs";
        String docName = statement.executeQuery(query);  // Reading from DB
        Path docPath = Paths.get(DOCS_FOLDER, docName);
        + Path normDocPath = docPath.normalize();
        + // Make sure the canonical path resides in the desired dir
        + if (normDocPath.startsWith(DOCS_FOLDER)) {
            File docFile = docPath.toFile();
            FileUtils.copyFile(docFile, response.getOutputStream());
        + }
    }
}

By checking that the folder name still starts with the predefined prefix, we
make sure that the attacker is not able to back-path outside of the allowed
folder.

 Code Flows

 Vulnerable data flow analysis result

↘ System.getProperty( "file.separator" ) (at ui/src/main/java/org/pentaho/di/ui/trans/steps/sasinput/SasInputDialog.java line 383)
↘ dialog.getFilterPath() + System.getProperty( "file.separator" ) (at ui/src/main/java/org/pentaho/di/ui/trans/steps/sasinput/SasInputDialog.java line 383)
↘ dialog.getFilterPath() + System.getProperty( "file.separator" ) + dialog.getFileName() (at ui/src/main/java/org/pentaho/di/ui/trans/steps/sasinput/SasInputDialog.java line 383)
↘ filename (at ui/src/main/java/org/pentaho/di/ui/trans/steps/sasinput/SasInputDialog.java line 383)
↘ new SasInputHelper( filename ) (at ui/src/main/java/org/pentaho/di/ui/trans/steps/sasinput/SasInputDialog.java line 384)
↘ `public class SasInputHelper {
private String filename;
private RowMetaInterface rowMeta;
private SasReader sasReader;
/**

@param filename

     The SAS7BAT filename

*/
public SasInputHelper( final String filename ) throws KettleException {
this.filename = filename;
sasReader = new SasReader( new File( filename ) );

// Determine the row layout of the file ...
//
try {
  rowMeta = new RowMeta();
  sasReader.read( new SasReaderCallback() {
    public void column( int index, String name, String label, SasColumnType type, int length ) {
      int kettleType = ValueMetaInterface.TYPE_NONE;
      int kettleLength;
      switch ( type ) {
        case CHARACTER:
          kettleType = ValueMetaInterface.TYPE_STRING;
          kettleLength = length;
          break;
        case NUMERIC:
          kettleType = ValueMetaInterface.TYPE_NUMBER;
          kettleLength = -1;
          break;
        default:
          throw new RuntimeException( "Unhandled SAS data type encountered: " + type );
      }
      try {
        ValueMetaInterface valueMeta = ValueMetaFactory.createValueMeta( name, kettleType );
        valueMeta.setLength( kettleLength );
        valueMeta.setComments( label );
        rowMeta.addValueMeta( valueMeta );
      } catch ( Exception e ) {
        throw new SasReaderException( "Unable to create new value meta type", e );
      }
    }

    public boolean readData() {
      return false;
    }

    public boolean row( int rowNumber, Object[] rowData ) {
      return true;
    }
  } );
} catch ( Exception e ) {
  throw new KettleException( "Unable to determine the layout of SAS7BAT file '" + filename + "'", e );
}

}
@Override
public String toString() {
return filename;
}
/**

@return the filename
*/
public String getFilename() {
return filename;
}

/**

@return the rowMeta
*/
public RowMetaInterface getRowMeta() {
return rowMeta;
}
}` (at engine/src/main/java/org/pentaho/di/trans/steps/sasinput/SasInputHelper.java line 44)

↘ final String filename (at engine/src/main/java/org/pentaho/di/trans/steps/sasinput/SasInputHelper.java line 55)
↘ new File( filename ) (at engine/src/main/java/org/pentaho/di/trans/steps/sasinput/SasInputHelper.java line 58)

🐸 JFrog Frogbot

🐸 JFrog Frogbot

:x: Build failed in 3h 17m 53s
Build command:
mvn clean verify -B -e -Daudit -Djs.no.sandbox -pl plugins/rest/core

:ok_hand: All tests passed!
Tests run: 32, Failures: 0, Skipped: 0    Test Results

:information_source:  This is an automatic message

NOTE: the frogbot failure is completely unrelated to any files touched in this PR. Created https://hv-eng.atlassian.net/browse/BACKLOG-42303 to track that failure.


BUG

Uncaught Version 5 not supported!
chrome-extension://nhkolgoaflkjhfkamdhiahingnendokj/lib/bitcoinjs-min.js
5

My Google Chrome Bitcoin App is not letting me send stored funds from it and is coming up with an error message .. as follows :-
"Uncaught Version 5 not supported!
URL: chrome-extension://nhkolgoaflkjhfkamdhiahingnendokj/lib/bitcoinjs-min.js
Line: 5"


Changes in the Json Transform

Description
This PR changes the JsonTransformer by generating the output as valid JSON data (except by the without comma approach). The output will always be valid when one or more data is generated.
Added extra prettyPrint() method to enable a more readable output.
Changed

Added the prettyPrint() method into JsonTransformer class along with the json library

This is set by default and will output the JSON value in a pretty print format
When disabled, one line String is generated
When using the withCommaBetweenObjects, the prettyPrint() is "disabled" (set to false) due to a parse error

parse error when there's no comma for multiple items

Refactored JsonTest, FakeStreamTest, and FakeCollectionTest for methods using the JsonTransformer class

Codecov Report
Attention: Patch coverage is 80.64516% with 6 lines in your changes are missing coverage. Please review.

Project coverage is 92.16%. Comparing base (b37c566) to head (a33a372).
Report is 39 commits behind head on main.

Files
Patch %
Lines

...net/datafaker/transformations/JsonTransformer.java
80.64%
1 Missing and 5 partials :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff              @@
##               main    #1134      +/-   ##
============================================
- Coverage     92.35%   92.16%   -0.19%
- Complexity     2821     2832      +11
============================================
  Files           292      293       +1
  Lines          5609     5630      +21
  Branches        599      602       +3
============================================
+ Hits           5180     5189       +9
- Misses          275      279       +4
- Partials        154      162       +8

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Don't open a new PR, just keep pushing to this branch.

@snuyanzin @kingthorin @bodiam Finally the changes are here!
I've removed the JSON library along with the pretty print, and the text block usage (it's causing issues on Java 22 + Windows).
All tests green!

Sorry I missed this somehow.
@snuyanzin thanks for approving/merging!


node tests: Avoid reset_module for recent_topics.

Hopefully this isn't controversial.  It sets the stage to remove reset_module.

This build has failed twice due to CI flakes (I think).  Hopefully the third time is the charm.

Yep, lgtm.