Potentially mishandled continuous action space shape

I'm running a sampled EfficientZero experiment with a discrete, image-based observation space and a two-parameter continuous action space (continuous gaussian policy).
After collecting enough episodes to sample a mini-batch, I encounter the following error during iteration 0 of the training procedure:
Traceback (most recent call last):
  File "zoo/pooltool/sum_to_three/config/sum_to_three_image_config.py", line 119, in <module>
    train_muzero(
  File "/Users/evan/Software/pooltool_ml/LightZero/lzero/entry/train_muzero.py", line 185, in train_muzero
    log_vars = learner.train(train_data, collector.envstep)
  File "/Users/evan/anaconda3/envs/pooltool_ml/lib/python3.8/site-packages/ding/worker/learner/base_learner.py", line 165, in wrapper
    ret = fn(*args, **kwargs)
  File "/Users/evan/anaconda3/envs/pooltool_ml/lib/python3.8/site-packages/ding/worker/learner/base_learner.py", line 205, in train
    log_vars = self._policy.forward(data, **policy_kwargs)
  File "/Users/evan/Software/pooltool_ml/LightZero/lzero/policy/sampled_efficientzero.py", line 416, in _forward_learn
    network_output = self._learn_model.recurrent_inference(
  File "/Users/evan/Software/pooltool_ml/LightZero/lzero/model/sampled_efficientzero_model.py", line 306, in recurrent_inference
    next_latent_state, reward_hidden_state, value_prefix = self._dynamics(latent_state, reward_hidden_state, action)
  File "/Users/evan/Software/pooltool_ml/LightZero/lzero/model/sampled_efficientzero_model.py", line 418, in _dynamics
    action_encoding = action_encoding_tmp.expand(
RuntimeError: The expanded size of the tensor (20) must match the existing size (2) at non-singleton dimension 2.  Target sizes: [128, 2, 20, 10].  Tensor sizes: [128, 2, 1]

Here is the relevant code (in SampledEfficientZeroModel._dynamics):
https://github.com/opendilab/LightZero/blob/3823560044297ec34662589feac172210af4c4e6/lzero/model/sampled_efficientzero_model.py#L406-L420
This method successfully runs during the collection step of train_muzero (https://github.com/opendilab/LightZero/blob/3823560044297ec34662589feac172210af4c4e6/lzero/entry/train_muzero.py#L160)
During successful passes of the method, the action shape is torch.Size([6, 2]). This makes sense because I have 6 collector environments and the action space is 2D.
But the method fails with the above error during the train step of train_muzero (https://github.com/opendilab/LightZero/blob/3823560044297ec34662589feac172210af4c4e6/lzero/entry/train_muzero.py#L184-L185)
During failure, the action shape is torch.Size([128, 2, 1]) (I'm running 128 batch sizes). Here are some printouts from my debugger:
ipdb> action.shape
torch.Size([128, 2, 1])
ipdb> action[0]
tensor([[ 0.8633],
        [-0.6739]])
ipdb> action[0][0]
tensor([0.8633])
ipdb> action[0][0][0]
tensor(0.8633)

I think either (1) the action passed to _dynamics has been erroneously shaped or (2) the _dynamics method needs to be extended to support shape lengths of 3:
            # continuous action space
            if len(action.shape) == 3:
                # <Added condition>
                action = action.unsqueeze(-1)
            elif len(action.shape) == 2:
                # (batch_size, action_dim) -> (batch_size, action_dim, 1, 1)
                # e.g.,  torch.Size([8, 2]) ->  torch.Size([8, 2, 1, 1])
                action = action.unsqueeze(-1).unsqueeze(-1)
            elif len(action.shape) == 1:
                # (batch_size,) -> (batch_size, action_dim=1, 1, 1)
                # e.g.,  -> torch.Size([8, 2, 1, 1])
                action = action.unsqueeze(-1).unsqueeze(-1).unsqueeze(-1)

            action_encoding_tmp = action
            action_encoding = action_encoding_tmp.expand(
                latent_state.shape[0], self.action_space_size, latent_state.shape[2], latent_state.shape[3]
            )

After making this change, the program runs.
Please let me know if I can provide further information that's helpful.

Hello, thank you for your feedback. We have identified this bug and it has now been fixed in the latest commit https://github.com/opendilab/LightZero/commit/27188cfc74f91a3b6d44ed57b77e6eca87f3a2dd. BTW, as you can see, there might be a more efficient implementation for this data processing code. We would greatly appreciate it if you could provide an optimized version. Best wishes!

Of course, the current modifications are made for the sake of program compatibility. The better approach is to identify the location where the shape of the action tensor changes from torch.Size([128, 2]) to torch.Size([128, 2, 1]). We would greatly appreciate it if you could debug and locate the corresponding position.

Identifying the problem
I found the problem. I'm using a batch size of 32 in these examples, and a continuous action space size of 2.
At this point in the code, the action space for the whole batch seems properly shaped:
https://github.com/opendilab/LightZero/blob/95e94b95c6982460b1389a061f682b83c547b14c/lzero/policy/sampled_efficientzero.py#L322
shape of action_batch: (32, 5, 2)
Then, there's this line:
https://github.com/opendilab/LightZero/blob/95e94b95c6982460b1389a061f682b83c547b14c/lzero/policy/sampled_efficientzero.py#L333-L335
shape of action_batch: torch.Size([32, 5, 2, 1])
This is a problem the next time action_batch is used:
https://github.com/opendilab/LightZero/blob/95e94b95c6982460b1389a061f682b83c547b14c/lzero/policy/sampled_efficientzero.py#L416-L418
shape of action_batch[:, step_k]: torch.Size([32, 2, 1])
Testing variables
Here is the initial action_batch:
from numpy import array
array([[[-0.4490683972835541, -0.9950420260429382],
        [-0.4014930129051208, -0.7829872369766235],
        [-0.4213773608207703, -0.7039519548416138],
        [-0.4044414460659027, -0.834709882736206 ],
        [-0.1590566784143448, -0.2195666283369064]],

       [[-0.4014930129051208, -0.7829872369766235],
        [-0.4213773608207703, -0.7039519548416138],
        [-0.4044414460659027, -0.834709882736206 ],
        [-0.1590566784143448, -0.2195666283369064],
        [-0.7565191984176636, -0.2842720746994019]],

       [[-0.4213773608207703, -0.7039519548416138],
        [-0.4044414460659027, -0.834709882736206 ],
        [-0.1590566784143448, -0.2195666283369064],
        [-0.7565191984176636, -0.2842720746994019],
        [ 0.6578846573829651,  0.8156458139419556]],

       [[-0.4044414460659027, -0.834709882736206 ],
        [-0.1590566784143448, -0.2195666283369064],
        [-0.7565191984176636, -0.2842720746994019],
        [ 0.6578846573829651,  0.8156458139419556],
        [ 0.7340825796127319,  0.8159331679344177]],

       [[-0.1590566784143448, -0.2195666283369064],
        [-0.7565191984176636, -0.2842720746994019],
        [ 0.6578846573829651,  0.8156458139419556],
        [ 0.7340825796127319,  0.8159331679344177],
        [-0.4984613955020905,  0.2341146618127823]],

       [[ 0.6578846573829651,  0.8156458139419556],
        [ 0.7340825796127319,  0.8159331679344177],
        [-0.4984613955020905,  0.2341146618127823],
        [ 0.2147858291864395,  0.8802192211151123],
        [ 0.3157244141177024,  0.122345928192084 ]],

       [[ 0.7340825796127319,  0.8159331679344177],
        [-0.4984613955020905,  0.2341146618127823],
        [ 0.2147858291864395,  0.8802192211151123],
        [ 0.0447234260510479, -0.0061242674195186],
        [ 2.076320333718342 ,  0.0612052095300819]],

       [[-0.4984613955020905,  0.2341146618127823],
        [ 0.2147858291864395,  0.8802192211151123],
        [-0.0753794324983024,  0.018401418199892 ],
        [ 0.230092215421578 , -0.154497093666865 ],
        [ 0.8510225575898217,  0.0945327318063604]],

       [[ 0.0692359060049057, -0.5581157207489014],
        [-0.0967390909790993,  0.6544007062911987],
        [-0.5564347505569458, -0.5217161774635315],
        [ 0.227927178144455 , -0.5079849362373352],
        [-0.7363128662109375,  0.7372166514396667]],

       [[-0.5564347505569458, -0.5217161774635315],
        [ 0.227927178144455 , -0.5079849362373352],
        [-0.7363128662109375,  0.7372166514396667],
        [ 0.8861203789710999,  0.7655220031738281],
        [-0.8919497132301331,  0.7664076685905457]],

       [[ 0.8861203789710999,  0.7655220031738281],
        [-0.8919497132301331,  0.7664076685905457],
        [-0.8111757040023804,  0.3714333176612854],
        [ 0.9299460443093313,  0.62140516600195  ],
        [-0.7294452606963147, -0.5507582288642449]],

       [[-0.4489460289478302, -0.4065003991127014],
        [-0.0877294093370438,  0.6240969896316528],
        [-0.145333394408226 ,  0.0135438507422805],
        [ 0.7303228378295898,  0.324310839176178 ],
        [ 0.1930731981992722, -0.6004103422164917]],

       [[-0.0877294093370438,  0.6240969896316528],
        [-0.145333394408226 ,  0.0135438507422805],
        [ 0.7303228378295898,  0.324310839176178 ],
        [ 0.1930731981992722, -0.6004103422164917],
        [-0.2952068150043488,  0.7421513199806213]],

       [[-0.145333394408226 ,  0.0135438507422805],
        [ 0.7303228378295898,  0.324310839176178 ],
        [ 0.1930731981992722, -0.6004103422164917],
        [-0.2952068150043488,  0.7421513199806213],
        [ 0.3888700902462006, -0.6838327646255493]],

       [[ 0.7991305589675903, -0.6135419011116028],
        [-1.4756834812262265, -1.5111042458027768],
        [-1.0753735258729593, -0.0687822111641535],
        [-0.6506161214320586, -0.2692845067856774],
        [-1.509456993847584 ,  0.4623811175903334]],

       [[ 0.9131344556808472, -0.9124650955200195],
        [-0.6182714104652405,  0.8433078527450562],
        [ 0.9737944006919861,  0.3280912041664124],
        [-0.503142774105072 , -0.4597557783126831],
        [ 0.1592527478933334, -0.3711529672145844]],

       [[ 0.97501140832901  , -0.9102342128753662],
        [-0.6536456346511841, -0.6314908266067505],
        [-0.3102632761001587,  0.5417718887329102],
        [ 0.5856770137135533, -0.1399733906201436],
        [ 0.9160984176427144,  0.0171331457675763]],

       [[-0.6536456346511841, -0.6314908266067505],
        [-0.3102632761001587,  0.5417718887329102],
        [ 1.1057067309019377,  0.2459597965178402],
        [-2.78280593866222  , -2.279670235885282 ],
        [ 0.3490433187008873,  0.2584693277416903]],

       [[-0.3102632761001587,  0.5417718887329102],
        [ 1.7954634122483244, -0.1587822891046758],
        [ 0.8435877018233144, -1.792088634720315 ],
        [-0.6243843906905057,  1.004054336454013 ],
        [ 1.0931276206988136, -0.8503439391331218]],

       [[-0.0523804016411304,  0.9104548692703247],
        [-0.982227087020874 , -0.4803890585899353],
        [-0.9744316339492798,  0.9138423204421997],
        [-0.8951768279075623, -0.8566049337387085],
        [ 0.6736979484558105, -0.8682780265808105]],

       [[-0.9744316339492798,  0.9138423204421997],
        [-0.8951768279075623, -0.8566049337387085],
        [ 0.6736979484558105, -0.8682780265808105],
        [-0.9753063321113586, -0.1303187161684036],
        [ 0.0419043824076653, -0.9880978465080261]],

       [[ 0.6736979484558105, -0.8682780265808105],
        [-0.9753063321113586, -0.1303187161684036],
        [ 0.0419043824076653, -0.9880978465080261],
        [-0.8325971961021423, -0.4706742167472839],
        [ 0.4065617024898529, -0.1309379935264587]],

       [[-0.9753063321113586, -0.1303187161684036],
        [ 0.0419043824076653, -0.9880978465080261],
        [-0.8325971961021423, -0.4706742167472839],
        [ 0.4065617024898529, -0.1309379935264587],
        [-0.9776009976312126,  0.0929417044544182]],

       [[ 0.0419043824076653, -0.9880978465080261],
        [-0.8325971961021423, -0.4706742167472839],
        [ 0.4065617024898529, -0.1309379935264587],
        [-1.2604611072245877,  0.3255282013572517],
        [-0.6375371714023212, -0.2479576952053556]],

       [[ 0.4065617024898529, -0.1309379935264587],
        [ 1.0853122572285252, -1.113450095645758 ],
        [ 0.6383299872593756,  0.4615825320021247],
        [-0.4526769121750209, -0.5026150726186746],
        [-0.4429909946263973, -0.6435901784670306]],

       [[ 0.8820233941078186,  0.4469195306301117],
        [ 0.1421182006597519, -0.3563036918640137],
        [ 0.4080510437488556, -0.0753544196486473],
        [-0.9183218479156494, -0.715552031993866 ],
        [ 0.3346443176269531, -0.7762950658798218]],

       [[-0.9183218479156494, -0.715552031993866 ],
        [ 0.3346443176269531, -0.7762950658798218],
        [ 0.3761063516139984,  0.7810404896736145],
        [-0.9150596857070923,  0.6707392930984497],
        [ 0.1624187082052231, -0.0102332159876823]],

       [[ 0.3346443176269531, -0.7762950658798218],
        [ 0.3761063516139984,  0.7810404896736145],
        [-0.9150596857070923,  0.6707392930984497],
        [ 0.1624187082052231, -0.0102332159876823],
        [ 0.9643478393554688,  0.5449203252792358]],

       [[ 0.3761063516139984,  0.7810404896736145],
        [-0.9150596857070923,  0.6707392930984497],
        [ 0.1624187082052231, -0.0102332159876823],
        [ 0.9643478393554688,  0.5449203252792358],
        [-0.6978347897529602,  0.3335686028003693]],

       [[ 0.1624187082052231, -0.0102332159876823],
        [ 0.9643478393554688,  0.5449203252792358],
        [-0.6978347897529602,  0.3335686028003693],
        [ 0.1176412274461428, -1.5554193438851447],
        [-0.639407819647646 ,  0.070470209032387 ]],

       [[ 0.9643478393554688,  0.5449203252792358],
        [-0.6978347897529602,  0.3335686028003693],
        [ 0.9371315195670832, -0.5187535949083031],
        [ 1.6102262403242997,  0.7461320383571783],
        [-1.0328825079779835,  0.5870174496427473]],

       [[-0.6978347897529602,  0.3335686028003693],
        [ 0.4909302677064525, -1.8273185492431   ],
        [-1.3642024846362164,  0.4962908880233692],
        [ 0.9805795313754992, -1.0712426831281652],
        [ 0.7456210692367394, -2.0334058101172436]]])

And here is action_batch after transformation:
from torch import tensor
tensor([[[[-0.4491],
          [-0.9950]],

         [[-0.4015],
          [-0.7830]],

         [[-0.4214],
          [-0.7040]],

         [[-0.4044],
          [-0.8347]],

         [[-0.1591],
          [-0.2196]]],

        [[[-0.4015],
          [-0.7830]],

         [[-0.4214],
          [-0.7040]],

         [[-0.4044],
          [-0.8347]],

         [[-0.1591],
          [-0.2196]],

         [[-0.7565],
          [-0.2843]]],

        [[[-0.4214],
          [-0.7040]],

         [[-0.4044],
          [-0.8347]],

         [[-0.1591],
          [-0.2196]],

         [[-0.7565],
          [-0.2843]],

         [[ 0.6579],
          [ 0.8156]]],

        [[[-0.4044],
          [-0.8347]],

         [[-0.1591],
          [-0.2196]],

         [[-0.7565],
          [-0.2843]],

         [[ 0.6579],
          [ 0.8156]],

         [[ 0.7341],
          [ 0.8159]]],

        [[[-0.1591],
          [-0.2196]],

         [[-0.7565],
          [-0.2843]],

         [[ 0.6579],
          [ 0.8156]],

         [[ 0.7341],
          [ 0.8159]],

         [[-0.4985],
          [ 0.2341]]],

        [[[ 0.6579],
          [ 0.8156]],

         [[ 0.7341],
          [ 0.8159]],

         [[-0.4985],
          [ 0.2341]],

         [[ 0.2148],
          [ 0.8802]],

         [[ 0.3157],
          [ 0.1223]]],

        [[[ 0.7341],
          [ 0.8159]],

         [[-0.4985],
          [ 0.2341]],

         [[ 0.2148],
          [ 0.8802]],

         [[ 0.0447],
          [-0.0061]],

         [[ 2.0763],
          [ 0.0612]]],

        [[[-0.4985],
          [ 0.2341]],

         [[ 0.2148],
          [ 0.8802]],

         [[-0.0754],
          [ 0.0184]],

         [[ 0.2301],
          [-0.1545]],

         [[ 0.8510],
          [ 0.0945]]],

        [[[ 0.0692],
          [-0.5581]],

         [[-0.0967],
          [ 0.6544]],

         [[-0.5564],
          [-0.5217]],

         [[ 0.2279],
          [-0.5080]],

         [[-0.7363],
          [ 0.7372]]],

        [[[-0.5564],
          [-0.5217]],

         [[ 0.2279],
          [-0.5080]],

         [[-0.7363],
          [ 0.7372]],

         [[ 0.8861],
          [ 0.7655]],

         [[-0.8919],
          [ 0.7664]]],

        [[[ 0.8861],
          [ 0.7655]],

         [[-0.8919],
          [ 0.7664]],

         [[-0.8112],
          [ 0.3714]],

         [[ 0.9299],
          [ 0.6214]],

         [[-0.7294],
          [-0.5508]]],

        [[[-0.4489],
          [-0.4065]],

         [[-0.0877],
          [ 0.6241]],

         [[-0.1453],
          [ 0.0135]],

         [[ 0.7303],
          [ 0.3243]],

         [[ 0.1931],
          [-0.6004]]],

        [[[-0.0877],
          [ 0.6241]],

         [[-0.1453],
          [ 0.0135]],

         [[ 0.7303],
          [ 0.3243]],

         [[ 0.1931],
          [-0.6004]],

         [[-0.2952],
          [ 0.7422]]],

        [[[-0.1453],
          [ 0.0135]],

         [[ 0.7303],
          [ 0.3243]],

         [[ 0.1931],
          [-0.6004]],

         [[-0.2952],
          [ 0.7422]],

         [[ 0.3889],
          [-0.6838]]],

        [[[ 0.7991],
          [-0.6135]],

         [[-1.4757],
          [-1.5111]],

         [[-1.0754],
          [-0.0688]],

         [[-0.6506],
          [-0.2693]],

         [[-1.5095],
          [ 0.4624]]],

        [[[ 0.9131],
          [-0.9125]],

         [[-0.6183],
          [ 0.8433]],

         [[ 0.9738],
          [ 0.3281]],

         [[-0.5031],
          [-0.4598]],

         [[ 0.1593],
          [-0.3712]]],

        [[[ 0.9750],
          [-0.9102]],

         [[-0.6536],
          [-0.6315]],

         [[-0.3103],
          [ 0.5418]],

         [[ 0.5857],
          [-0.1400]],

         [[ 0.9161],
          [ 0.0171]]],

        [[[-0.6536],
          [-0.6315]],

         [[-0.3103],
          [ 0.5418]],

         [[ 1.1057],
          [ 0.2460]],

         [[-2.7828],
          [-2.2797]],

         [[ 0.3490],
          [ 0.2585]]],

        [[[-0.3103],
          [ 0.5418]],

         [[ 1.7955],
          [-0.1588]],

         [[ 0.8436],
          [-1.7921]],

         [[-0.6244],
          [ 1.0041]],

         [[ 1.0931],
          [-0.8503]]],

        [[[-0.0524],
          [ 0.9105]],

         [[-0.9822],
          [-0.4804]],

         [[-0.9744],
          [ 0.9138]],

         [[-0.8952],
          [-0.8566]],

         [[ 0.6737],
          [-0.8683]]],

        [[[-0.9744],
          [ 0.9138]],

         [[-0.8952],
          [-0.8566]],

         [[ 0.6737],
          [-0.8683]],

         [[-0.9753],
          [-0.1303]],

         [[ 0.0419],
          [-0.9881]]],

        [[[ 0.6737],
          [-0.8683]],

         [[-0.9753],
          [-0.1303]],

         [[ 0.0419],
          [-0.9881]],

         [[-0.8326],
          [-0.4707]],

         [[ 0.4066],
          [-0.1309]]],

        [[[-0.9753],
          [-0.1303]],

         [[ 0.0419],
          [-0.9881]],

         [[-0.8326],
          [-0.4707]],

         [[ 0.4066],
          [-0.1309]],

         [[-0.9776],
          [ 0.0929]]],

        [[[ 0.0419],
          [-0.9881]],

         [[-0.8326],
          [-0.4707]],

         [[ 0.4066],
          [-0.1309]],

         [[-1.2605],
          [ 0.3255]],

         [[-0.6375],
          [-0.2480]]],

        [[[ 0.4066],
          [-0.1309]],

         [[ 1.0853],
          [-1.1135]],

         [[ 0.6383],
          [ 0.4616]],

         [[-0.4527],
          [-0.5026]],

         [[-0.4430],
          [-0.6436]]],

        [[[ 0.8820],
          [ 0.4469]],

         [[ 0.1421],
          [-0.3563]],

         [[ 0.4081],
          [-0.0754]],

         [[-0.9183],
          [-0.7156]],

         [[ 0.3346],
          [-0.7763]]],

        [[[-0.9183],
          [-0.7156]],

         [[ 0.3346],
          [-0.7763]],

         [[ 0.3761],
          [ 0.7810]],

         [[-0.9151],
          [ 0.6707]],

         [[ 0.1624],
          [-0.0102]]],

        [[[ 0.3346],
          [-0.7763]],

         [[ 0.3761],
          [ 0.7810]],

         [[-0.9151],
          [ 0.6707]],

         [[ 0.1624],
          [-0.0102]],

         [[ 0.9643],
          [ 0.5449]]],

        [[[ 0.3761],
          [ 0.7810]],

         [[-0.9151],
          [ 0.6707]],

         [[ 0.1624],
          [-0.0102]],

         [[ 0.9643],
          [ 0.5449]],

         [[-0.6978],
          [ 0.3336]]],

        [[[ 0.1624],
          [-0.0102]],

         [[ 0.9643],
          [ 0.5449]],

         [[-0.6978],
          [ 0.3336]],

         [[ 0.1176],
          [-1.5554]],

         [[-0.6394],
          [ 0.0705]]],

        [[[ 0.9643],
          [ 0.5449]],

         [[-0.6978],
          [ 0.3336]],

         [[ 0.9371],
          [-0.5188]],

         [[ 1.6102],
          [ 0.7461]],

         [[-1.0329],
          [ 0.5870]]],

        [[[-0.6978],
          [ 0.3336]],

         [[ 0.4909],
          [-1.8273]],

         [[-1.3642],
          [ 0.4963]],

         [[ 0.9806],
          [-1.0712]],

         [[ 0.7456],
          [-2.0334]]]])

Hello, thank you for your detailed feedback. We have confirmed that this was a redundant operation and it has been fixed in the latest commit on the main branch. Thank you once again for your active contribution.


FS0760 suggests change that breaks code (Quick Action)

This working code triggers:

FS0760: It is recommended that objects supporting the IDisposable interface are created using the syntax 'new Type(args)', rather than 'Type(args)' or 'Type' as a function value representing the constructor, to indicate that resources may be owned by the generated value

open System.Media
open System.IO
let s = [|1uy; 2uy|]
let sp = new SoundPlayer(MemoryStream s)
sp.PlaySync()

After applying suggested change in Visual Studio the result is:
open System.Media
open System.IO
let s = [|1uy; 2uy|]
let sp = new SoundPlayer(new MemoryStream s)
sp.PlaySync()

This code is broken and gives compile error:

error FS0010: Unexpected symbol ')' in expression

The relevant source is here:
CodeFix/AddNewKeywordToDisposableConstructorInvocation.fs
Microsoft Visual Studio Community 2017
Version 15.9.10
VisualStudio.15.Release/15.9.10+28307.557
Microsoft .NET Framework
Version 4.7.03190

The correct approach here is the code fix needs to understand that curried parameters will cause an ambiguity and add parentheses:
MemoryStream s ->new MemoryStream(s)


feature: echo -n

Add support for the -n option for the echo command. This removes the default trailing newline.
Ex.
$ echo foo bar # notice the extra space after "foo bar"
foo bar

$ echo -n foo bar # notice no extra space after "foo bar"
foo bar
$

This can be implemented using process.stdout.write() fairly easily, just remember to concatenate all arguments into a single string to pass to process.stdout.write()

Fixed in #590


Package qfilt doesn't pass on travis

Right now the package qfilt doesn't pass our test on travis (https://travis-ci.org/Hogfeldt/bioconda_recipe_gen/jobs/583010879). The problem is that it works, when you build qfilt locally with our program. (it creates the correct recipe and passes the sanity check).

I just tried to run build qfilt locally too and had a successful build. Then i took a look at the Travis output that you linked to. The line of interest seem to be this:
06:11:22 BIOCONDA INFO (ERR) subprocess.CalledProcessError: Command '['/bin/bash', '-e', '/home/travis/miniconda3/envs/test/conda-bld/qfilt2_1568095774612/work/conda_build.sh']' returned non-zero exit status 2.

It says that the bash shell script exited with status 2. I did a quick search and found this:
2 | Misuse of shell builtins (according to Bash documentation) | empty_function() {} | Missing keyword or command, or permission problem (and diff return code on a failed binary file comparison).

source: http://www.tldp.org/LDP/abs/html/exitcodes.html
I'm currently not sure what to make of this. Maybe it could be related to permissions since we do not totally control permissions on Travis.

CMake also comes with the warning:
06:11:20 BIOCONDA INFO (ERR) CMake Error at cmake_install.cmake:47 (file):

06:11:20 BIOCONDA INFO (ERR)   file INSTALL cannot copy file

06:11:20 BIOCONDA INFO (ERR)   "/home/travis/miniconda3/envs/test/conda-bld/qfilt2_1568095774612/work/build/qfilt"

06:11:20 BIOCONDA INFO (ERR)   to "/usr/local/bin/qfilt".

I guess this is the problem which throws and error when make install runs. My guess is that this is a permission problem.

After triggering another build in travis, qfilt builds. We don't have the exact reason for this, since there have been multiple PR since the this issue started.


website down?

When navigating to: http://scikit-criteria.org/ the page cannot be loaded. Is this expected? Can we get a version going even if it the a zip of the public folder in uploaded to this repo.

Thanks for the issue, i just reconfigured the domain. In the meantime https://scikit-criteria.readthedocs.io << this URL always run. I just started to redesign entirely scikit criteria

fixed

Appreciated!


General installed app mechanism

This fulfills the, "general mechanism for getting server status of installed apps," ticket, and the server side of the, "Create installable application," ticket.
Alex and I worked on this branch.
Pylint:

master today: 9.57 / 10 / 9.70
this pull: 9.58 / 10 / 9.82 / 10

Changes:

Created an, "apps," pulldown menu in the client nav bar.
Created an OpenTrail page view in the client.
Created app_fabfile.py. It contains the verify_apps, install_app, and remove_app commands.
Created the installable_apps app, which maps to the "/applications/" URL and swagger-ui page.
Added a query string parameter form to the swagger-ui page for, "/api_perf/stats/".

Notes.
I don't like aliasing the "installable_apps" application with the "/applications/" URL segment. OTOH, I also don't like calling this app, "applications," because an "applications" subdirectory in this Django project would be confusing. And I also don't like "/installable_apps/" in the API URL hierarchy.  Suggestions welcome.

Suggestion for replacement for /applications -> /addons or /extensions

oooooo, good ideas. I like /addons.

@lexjacobs would generally like to see better separation of 'addons' from the core JS at the file/folder level.  To me this means:

all JS contained within an opentrail folder
all references from the core are programmatic vs hard coded (read from API endpoint or from opentrail JS files).

This will provide the basis for a 'storefront' model.

@jxstanford opentrail .js files moved to /client/js/opentrail/

Add-on menu items added dynamically, as demonstrated in standup today. Tested with actual installing/removing of stub addons.
Removed backbone routes and javascript views that were initially handling route/view for addons.
The current direction is to require addons to handle rendering of their own route/view.

:+1:

@jxstanford
Ready for testing.
I would recommend a dropdb.../createdb...  goldstone_init sequence to start.

Do a "git up"
In another window, switch to django-goldstone-addon-base  and git pull in the  "create_installable_app" branch.
While in django-goldstone-addon-base, execute the command, "python setup.py sdist". This creates a new add-on package in the “dist” subdirectory.
Back in the goldstone-server window, do a "pip uninstall" of django-yourapp. Make sure the old version is gone, gone, gone!
Do a "git diff" to make sure all the source files have been returned to their original state.
Then, do a "pip install" of the package you created in step 3. The command will be something like, “pip install ../django-goldstone-addon-base/dist/django-yourapp-0.0.tar.gz”
Do a "fab -f addon_fabfile.py install_addon:name=yourapp,settings=goldstone.settings.local_docker,install_dir=."
Do a "fab runserver" and see if the add-on was correctly hooked into Goldstone.
To remove, do a, "fab -f addon_fabfile.py remove_addon:name=yourapp,settings=goldstone.settings.local_docker,install_dir=."

:+1:

process worked flawlessly.  please create a ticket to provide non-interactive options to the addon_fabfile install and uninstall tasks, then :+1:

Done. Pivotal ticket number 99950758.


error: "Failed to estimate gas"

Describe the bug
when trying to swap tokens (tested swapping ETH->BNT), there is a console error indicating there was an error with calculating gas estimation for the transaction.
in my case, the metamask transaction was opened correctly.
we however get some reports of transactions with 1gwei gas settings.

To Reproduce
Steps to reproduce the behavior:

Go to swap
Click on eth and bnt
confirm the transaction on our site (in order to trigger the metamask window)
open console log to see error

We try to estimate gas and apply a bit of a buffer to it ourselves but MetaMask doesn't always work.
Never do we suggest what the price should be though, that's entirely on Web 3 so weird that's happening, what is the gas amount getting estimated?

the bug is only on console from the looks of it.
as the metamask window is ok to sign.

Okay I've since removed the log as it's sometimes to be expected to failure and the code will expect that, given the nature of Web3.


added temporary functions to control audio volume

This PR is in reference to #650. I should start off by saying I'm very new to GitHub, I don't really want to merge this into master, simply into a bevyengine/bevy better-audio branch so that more work can be done on the system before it actually gets used, however, I cannot find a way to do that so here we are. All I did was make it so audio can be played at specified volumes with play_volume() and play_source_volume(), this is not a breaking change as the other audio functions were, for all intents and purposes, unchanged and will work as they used to.

Something to note is that we should probably migrate to rodio 0.12 before we do anything more with audio, see #638 for discussion about that.

I like this idea! I created a "better-audio" branch for you. Feel free to change the base of the pr to that.

So I migrated to rodio 0.12 using thread local resources, but I may have done something wrong as seen by that last commit "Merge branch 'master' into better-audio." I had previously updated the master branch of my local fork and that was my way of updating the better-audio branch so I could use the thread local resources, not sure if I did it correctly though. I plan to add something like an AudioDescriptor struct that is used to configure audio and I think it would make sense to use events to control audio playing and stopping since it will all be running on the main thread now.

I'm starting to think that the "better-audio" branch isn't the best way to approach this. While experimenting, I think its probably better for you to maintain your own branch (and potentially a 3rd party audio plugin if you want people to be able to test it in their bevy games)
Double reviewing code (once for better-audio and once for master) doesn't sound very appealing to me and it limits your ability to experiment freely.
I also think we should do the rodio upgrade to 0.12 in a separate pr so we can merge that quickly.

Ok, Im going to close this PR and (if there isn't one already) open a PR for the rodio upgrade.


Install new language package automatically when app starts

Hi,
I am currently trying to automatically install a given voice package, not provided by default, throughout different devices (iOS and Android).
For example:
(on Android)
Each device model, namely: Samsung S9, Samsung S7, LG, and etc. have different default language packages
And currently I filter the output of Tts.voices() for English language packages and pick the first one.
...
const voices = await Tts.voices();
let voiceOption = voices.filter(voice => voice.id.match(/(en-US)/))[0];
await Tts.setDefaultVoice(voiceOption.id);
...

Since Tts.voices() output is different for each device model, that gives me different voice outputs.  Thus, the user experience becomes different when the TTS voice is synthesized as expected.
I did install voice packages manually, and that does give me more options, but my goal here is to have my app to install a given voice package from Google TTS automatically (without the need for users to manually install it). Is that possible?
(on iOS)
For English, by default, I get the following list:
...
[AVSpeechSynthesisVoice 0x608000009310] Language: en-AU, Name: Karen, Quality: Default [com.apple.ttsbundle.Karen-compact]
[AVSpeechSynthesisVoice 0x6080000098d0] Language: en-GB, Name: Daniel, Quality: Default [com.apple.ttsbundle.Daniel-compact]
[AVSpeechSynthesisVoice 0x6080000094e0] Language: en-IE, Name: Moira, Quality: Default [com.apple.ttsbundle.Moira-compact]
[AVSpeechSynthesisVoice 0x6080000096b0] Language: en-US, Name: Samantha, Quality: Default [com.apple.ttsbundle.Samantha-compact]
[AVSpeechSynthesisVoice 0x608000009480] Language: en-ZA, Name: Tessa, Quality: Default [com.apple.ttsbundle.Tessa-compact]
...

and because this list is equal throughout iOS devices, I can just set Samantha as the default voice without the need of filtering and selecting one language. And I can install new voice languages by going to:
Settings -> General -> Accessibility -> Speech -> Voices
My question here for iOS stays the same as for Android. Is it possible for me to have devices to install a specific voice language package as, for example, when the app starts? This would imply that the user would not need to install it manually.
Hopefully I could make my point clear enough. But please feel free to ask for clarification. I'll make sure to be more descriptive and explanatory if needed next.
Cheers.

@gglee89 Did you solved your problem?


Feature/robust optimization

implementation of the orbital transformation method (10.1063/1.1543154) in Python.
small changes / bug fixes in cpp code:

Local_operator::apply, avoid overwriting other ispn with zeros
avoid illegal memory access in pp/exact diagonalization (results are still wrong)
omit Field4D::allocate in pp case
make UPF converter scripts more robust (omit size checks if length field in UPF file is missing)
warn about negative densities only if above threshold of 1e-9
fix test_eigen_v2.cpp

I can't merge it, github tells
"Couldn’t update branch
Oops, something went wrong"

can you close this one and reopen it again?


Build rustc from source, fix a few issues with the RTS build system

With this PR we build rustc and cargo from the source, with the LLVM version we
support in the linker and we use to build stubs.c (LLVM 10).
The main problem this fixes is: we can now update rustc without having to worry
about rustc using a different LLVM version than

what we support in the linker
what we use to build stubs.c

and breaking linking, or worse.
In addition, newer Rusts support building core, std, and alloc crates, so we
also ditch Xargo and use cargo (fixes #2251).
Not immediately needed, but having more control over how we build the compiler
might also be useful in the future. The previous derivation would download
pre-build nightly compiler from Rust's binary distribution site. We now build
it from source (including cargo, but not rustfmt).
Current status
I can enter nix-shell, build the RTS. All tests pass. nix-build doesn't work yet.
TODOs and questions

I can't build rustfmt in this derivation. This should be a bug in the Rust
repo, but I'm not sure. I should try different commits to see if any of them
is able to build rustfmt.

nix-build fails with
cd motoko-rts && cargo build --release --target=wasm32-unknown-emscripten -Z build-std
error: no matching package named `hashbrown` found
location searched: registry `https://github.com/rust-lang/crates.io-index`
required by package `std v0.0.0 (/nix/store/5yi0lk43ffjxg3s7z4gqx8sbwyf9yiww-rustc-custom/lib/rustlib/src/rust/library/std)`
make: *** [Makefile:204: _build/wasm/libmotoko_rts.a] Error 101
builder for '/nix/store/c0x9hwg9wr2yjq676mkw694amb0290ds-moc-rts.drv' failed with exit code 2
error: build of '/nix/store/0fxy4wvdb5vw79pmasry2g364wlfsdr2-test-profiling-graphs.drv', '/nix/store/41qsl7rivm7l6mcpmdnjc0fclyq2mjxg-test-perf.drv', '/nix/store/579kr5cqfh6p93wzl1983dlqi9vzy64l-guid-examples-tc.drv', '/nix/store/59mwp4wpv3wscbfx9d61vlva6dxrhjhh-moc.drv', '/nix/store/5hdlb1racc0zxbxj17zylm541f9nfy1b-base-tests.drv', '/nix/store/63s4jnxdiw57x8dj1pv37kvrpfawq3l2-moc.js.drv', '/nix/store/6b6dv0dkh1mkq29rxl7975iaz8awi50v-test-drun.drv', '/nix/store/736dnsnk6yshmgljgwfpah7wwa928rkn-test-run-deser.drv', '/nix/store/767n9lzcf81mkx6riasdfp7dnkh4wwrb-test-lsp.drv', '/nix/store/9xl33g3nzx0v5gqh5193vvqj7bh8v8jq-didc.js.drv', '/nix/store/c0x9hwg9wr2yjq676mkw694amb0290ds-moc-rts.drv', '/nix/store/cavkqv9mfng9g5ma1bb82izavq9m8qc7-samples.drv', '/nix/store/cf5i8c4x364c89w5vvfrf9fmqd8ih6jp-test-repl.drv', '/nix/store/csvzraidbcyc8n3q8q5mp8h4vgm115al-test-ic-ref-run.drv', '/nix/store/g9jn81gr62bzfvalalqad38hnj37m2nn-docs.drv', '/nix/store/gvsrmvkxiba9yps18vjx530amjcma0sx-test-mo-idl.drv', '/nix/store/gziz1ic4rpgz33vmsm8bm8793a7mkdh4-moc_interpreter.js.drv', '/nix/store/j061hf4ds3gs8in77h126bck154j1mfc-test-trap.drv', '/nix/store/jalrjypjcncy0l5lh1rqpwnbz5f65wbx-test-fail.drv', '/nix/store/md0jn7k7hhk94dbynfd71m839x9lnr40-test-run-dbg.drv', '/nix/store/n231c9pvqq145qgwsrns5rjvva5ciw5b-test-candid.drv',
'/nix/store/n9x9bhj7p29r8aj23585ayrkc5m8i3lq-test-qc.drv', '/nix/store/qwb5krsbp5w6zb66mxws2cfgdfhw13h4-all-systems-go.drv', '/nix/store/s7p802wicv4wkvfi2d3f4ii5v74907ni-test-ld.drv', '/nix/store/x7p7kp3p67hiyb27z41nanfijv2mc0la-test-drun-dbg.drv', '/nix/store/z5kp8nmmdbrg0d3dldjzcb4x3br03461-test-run.drv' failed

I think I need to update one of the Cargo.lock files, but I'm not sure how.

To make sure we only use one version of Rust toolchain we should update
nixpkgs.rustPlatform-nightly to use the toolchain we've built. Currently we
use different toolchain for the vendoring the RTS dependencies and building
the RTS.

Closing this in favor of #2761


Mirroring settings ignored since 1.15.0-rc1

Environment: Bamboo CI, Linux, Java 11, Docker 19.03.13. DockerHub is blocked on the CI agent network, and instead mirroring is setup to use a local registry.
Have a build that worked fine on TC "1.14.3". Upgraded to "1.15.0-rc2" to address MacOS build issue (#3166), and the builds started failing. Same failure on either "1.15.0-rc1" or "1.15.0-rc2". Looks like the new version attempts to connect to "registry-1.docker.io" despite mirroring settings, and predictably fails (see above).
Good build (1.14.3)
main INFO ? ? i.b.j.j.d.DriverDataSource: Connecting to 'jdbc:tc:mysql:5.7.24://localhost/mydb?TC_REUSABLE=true' as 'null'
main INFO ? ? o.t.d.EnvironmentAndSystemPropertyClientProviderStrategy: Found docker client settings from environment
main INFO ? ? o.t.d.DockerClientProviderStrategy: Found Docker environment with Environment variables, system properties and defaults. Resolved dockerHost=unix:///var/run/docker.sock
main INFO ? ? o.t.DockerClientFactory: Docker host IP address is <IP_ADDRESS>
main INFO ? ? o.t.DockerClientFactory: Connected to docker:
  Server Version: 19.03.13
  API Version: 1.40
  Operating System: CentOS Linux 7 (Core)
  Total Memory: 3770 MB
main INFO ? ? o.t.DockerClientFactory: Ryuk started - will monitor and terminate Testcontainers containers on JVM exit

Failing build (1.15.0-rc*):
main INFO ? ? i.b.j.j.d.DriverDataSource: Connecting to 'jdbc:tc:mysql:5.7.24://localhost/mydb?TC_REUSABLE=true' as 'null'
main INFO ? ? o.t.d.DockerMachineClientProviderStrategy: docker-machine executable was not found on PATH ([/usr/local/sbin, /usr/local/bin, /usr/sbin, /usr/bin, /sbin, /bin])
main INFO ? ? o.t.d.DockerClientProviderStrategy: Found Docker environment with local Unix socket (unix:///var/run/docker.sock)
main INFO ? ? o.t.DockerClientFactory: Docker host IP address is <IP_ADDRESS>
main INFO ? ? o.t.DockerClientFactory: Connected to docker:
  Server Version: 19.03.13
  API Version: 1.40
  Operating System: CentOS Linux 7 (Core)
  Total Memory: 3770 MB
docker-java-stream--210510714 ERROR ? ? c.g.d.a.a.ResultCallbackTemplate: Error during callback
com.github.dockerjava.api.exception.InternalServerErrorException: Status 500: {"message":"Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"}
		at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:247)
		at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.lambda$executeAndStream$1(DefaultInvocationBuilder.java:269)
		at java.base/java.lang.Thread.run(Thread.java:834)

mirroring settings

@andrus are you referring to registry-mirrors in Docker?

@andrus are you referring to registry-mirrors in Docker?

@andrus are you confident that the issue is with Testcontainers? Because it is transparent to Testcontainers and we don't have a special handling for registry-mirrors /cc @rnorth

Appears to be so. I take the same code, and change TC version in the pom.xml:

1.15.0-rc1 - failure
1.15.0-rc2 - failure
1.14.3 - success

Perhaps 1.15.x added some explicit calls to the registry?

Ok, found it! A colleague from the ops team pointed to this change  - switch to "testcontainers" prefix from "testcontainersofficial". Turns out our mirror had explicit prefix matching for images to avoid untrusted sources. Changed that, and everything works. Perhaps something to mention in the upgrade notes.

@andrus thanks for reporting back! I am glad that it works well now :) We indeed had a bit of back and forth with the Docker Hub orgs, but it is in the release notes:
https://github.com/testcontainers/testcontainers-java/releases/tag/1.15.0-rc1

Use testcontainers/* Docker Hub images (#2850) @bsideup

Thanks for awesome support BTW!


Allow Defining the Error Color

Our Primary color is red. This conflicts with the auto-generated error color, which is also red. M3 allows a custom error color, which we would choose to be an orange hue.
Can you provide an additional input field for defining the error in the theme builder?
As a workaround, we could probably add a custom color and replace the error color with that custom color in the generated theme, but that's not a great approach for experimenting color pallettes with the theme builder.

Hello!
Error is currently available in the Figma plugin. It is in progress for the web version.

Excellent, thanks a lot!


Improvement - delete .enc4 file after a decrypt without error

@LulinPollux
Now with flag on automatic decrypting I check that the .enc4 file is not deleted after a  decrypting without errors.
I propose you to modify the application to delete automatically the .enc4 file after a decrypting without error (in automatic or manual decrypting mode).
Thanks.

@LulinPollux
No option to change it?

Hello.
It's simple to include the option to delete an enc4 file, but I don't have time to implement it now.
Sorry, but as you can see from Readme file, the project has been suspended since December.
There is a project similar to my project, so please refer to it. click
Thank you for your interest in my project.


Including a .nvmrc file for the project

Questions

Why we need this improvement?
Since, this project specifies the node version to be >= 14

How will this change help?
Some developers like me use different versions of node for different projects, hence having a .nvmrc file would automatically be helpful in preventing human errors :smile: .  If this file exists, we just have to load the specified version using it.

Description

What changes have to be introduced?
We just need to add a .nvmrc file in the root directory.

Will this be a breaking change?
No, It's just a specification file.

How could it be implemented/designed?
By running the command : node -v > .nvmrc

Hi @ron-debajyoti Kindly assign me the issue I would like to work on this

I have never had any problems or had the use for the file. However, I can see the benefits in having it 🙂
So go ahead and create a pull request, make sure to update any relevant documentation :)

have never had any problems or had the use for the file.

I actually don't have node v14 set as default. So, every time I run locally, I either had to manually change the node version or just make nvm do the work, hence the suggestion.


Add myself to the contributors

Pull Request Description
This Pull Request merely adds myself to the list of contributors.
Acceptance Test
As this does not change any code, it should not effect anything.

[ ] Building the code with mvn clean install -Dintegration.tests still works.
[ ] Running mvn spring-boot:run in the strongbox-web-core still starts up the application correctly.
[ ] Building the code and running the strongbox-distribution from a zip or tar.gz still works.
[ ] The tests in the strongbox-web-integration-tests still run properly.

Questions

Does this pull request break backward compatibility?

[ ] Yes
[X] No

Does this pull request require other pull requests to be merged first?

[X] Yes, please see https://github.com/strongbox/strongbox-examples/pull/28
[ ] No

Does this require an update of the documentation?

[ ] Yes, please see strongbox/strongbox-docs#{PR_NUMBER}
[X] No

Code Review And Pre-Merge Checklist

[X] My code follows the coding convention of this project.
[X] I have performed a self-review of my own code.
[X] I have commented my code in hard-to-understand areas.
[X] My changes generate no new warnings.
[ ] 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.

Wrong repository. OOps


Test SAP API Business Hub APIs with curl

Tutorials: https://developers.sap.com/tutorials/hcp-abh-test-locally.html
Write here how you think we can improve the tutorial ...

Unable to execute the step2 Generate sample API call code of this tutorial.  Logged into api.sap.com using my trial credentials.
Tried multiple times but could not generate the curl code snippet foe the API
/CampaignCollection
Not only for curl, code snippet were not generated for any language.
I could see that code snippets for all the listed languages were generated for another API /CampaignCollection('{ObjectID}')
Looks like it is a bug for this API call alone.
PFA the attached screenshot.

In the console, I could see the below error
ERROR TypeError: e.trim is not a function
at default~modules-api-viewer-module-apiviewer-module~modules-event-viewer-eventviewer-module.18c0e0e329b5f32243b8.js:1:1341242
at Map.forEach ()
at e.sanitizeMap (default~modules-api-viewer-module-apiviewer-module~modules-event-viewer-eventviewer-module.18c0e0e329b5f32243b8.js:1:1341173)
at e.getHTTPSnippet (default~modules-api-viewer-module-apiviewer-module~modules-event-viewer-eventviewer-module.18c0e0e329b5f32243b8.js:1:1345723)
at e.generateHttpSnippet (default~modules-api-viewer-module-apiviewer-module~modules-event-viewer-eventviewer-module.18c0e0e329b5f32243b8.js:1:1444749)
at e.selectTab (default~modules-api-viewer-module-apiviewer-module~modules-event-viewer-eventviewer-module.18c0e0e329b5f32243b8.js:1:1444901)
at default~modules-api-viewer-module-apiviewer-module~modules-event-viewer-eventviewer-module.18c0e0e329b5f32243b8.js:1:1423693
at Ia (vendor.00dfccf9d23026ebf12d.js:1:281831)
at i (vendor.00dfccf9d23026ebf12d.js:1:281991)
at HTMLDivElement. (vendor.00dfccf9d23026ebf12d.js:1:659622)

These issues are for problems with the tutorial content and flow itself, rather than for the products that are involved. May I suggest you head over to SAP Community Q&A to ask there, you may get a response from the product owners, and others will benefit too. Thanks!


chore(ci): update bookworm Dockerfile

Debian seems to have removed sources.list in favor of sources.list.d.
Fixes #420.

It seems the Ubuntu package mirror is giving CI problems right now


add python 3.10 support

Codecov Report

Merging #21 (bc61eb2) into master (c87002f) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #21   +/-   ##
=======================================
  Coverage   96.58%   96.58%
=======================================
  Files          74       74
  Lines        1552     1552
  Branches      118      118
=======================================
  Hits         1499     1499
  Misses         48       48
  Partials        5        5

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 c87002f...bc61eb2. Read the comment docs.


Allow disabling logging

There is now a log package, which wraps the logrus methods used in
oxy.  In addition to the methods that are used, there is a .Disable
method that disables logging by sending them to /dev/null.
Fixes #83.

This is something we're facing too. But I have conflicted feelings about setting log settings per-module. Something I always like to rely on when merging a library, is whatever common settings I've linked to, are being honored, and someone downstream isn't able to override them without making it known to me.
In general Logrus could do with a per-package or per-module log setting.
https://github.com/sirupsen/logrus/issues/625
Due to golang's mutable nature, such modifications are very difficult to track down in code.
On the other hand, I also buy into the "You break it, you buy it" paradigm. So you might argue that is the caller's responsibility.

I think in the end this is not what we want.  We're favoring another approach:
I would prefer returning the "context logger" that used to be supported in oxy, which was a field/option settable on the structs.  That would allow us to customize the logger, and allow us to set specific log level for oxy.
I prototyped that model, which you can find in the context-logger branch.  (This branch only changes the forward package, which is the one that generates the most log messages for us.  I could add something similar to the other packages as appropriate.)
Please tell us if you would merge something like that.

Yes, I'm in favor of this. Since Oxy is always used as a library, it makes sense for it to not force a global logger. This also means the provided logger override can then apply whatever processing it needs.

Okay, then let's continue in #93, which has the initial implementation for the forward package.


Log has lost when user manually kill app with [fileLogger wrapWithBuffer]

New Issue Checklist

[x] I have read and understood the CONTRIBUTING guide
[x] I have read the Documentation or CocoaDocs
[x] I have searched for a similar issue in the project and found none

Issue Info

Info
Value

Platform Name
e.g. ios

Platform Version
e.g. 13.5.1

CocoaLumberjack Version
e.g. 3.7.0

Integration Method
e.g. cocoapods

Xcode Version
e.g. Xcode 12.1

Repro rate
e.g. all the time (100%)

Issue Description and Steps
Please fill in the detailed description of the issue (full textual output of any stack trace, compiler error, ...) and the steps to reproduce the issue.
steps:

use [DDLog addLogger:[fileLogger wrapWithBuffer]];
back the app to the background
kill the app from background

Then the log had lost.

As mentioned in this comment, this is somewhat intentional. It's the tradeoff for improved speeds. As also mentioned in the comment, there is an easy way to work around this if this is an issue in client apps.


Add a slider to portrait mode

Pull Request Test Coverage Report for Build<PHONE_NUMBER>6
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.01%) to 99.671%

Files with Coverage Reduction
New Missed Lines
%

src/modules/olMap/handler/measure/OlMeasurementHandler.js
1
97.32%

Totals

Change from base Build<PHONE_NUMBER>6:
-0.01%

Covered Lines:
13359

Relevant Lines:
13361

💛  - Coveralls


Radar from tutorial behaves not like a radar

Hello all,
Using Win10, carla 0.9.9
I am trying to run the script from https://carla.readthedocs.io/en/latest/tuto_G_retrieve_data/#radar-sensor to check how the radar works actually.
However, when I am running the code, radar is showing only one white big spot with bunch of points inside. Instead of scanning the environment, cars and vehicles, it is showing a small circle of points.
When I am changing fw_vec = carla.Vector3D(x=detect.depth - 0.25) into fw_vec = carla.Vector3D(x=detect.depth + 25) for example, the points are now distributed properly in some distance, but they are not covering/sensing the static and dynamic objects and showing only white points, no blue or red ones.
What could be the issue? Could you please help me?
rad_bp = world.get_blueprint_library().find('sensor.other.radar')
        rad_bp.set_attribute('horizontal_fov', str(35))
        rad_bp.set_attribute('vertical_fov', str(20))
        rad_bp.set_attribute('range', str(50))
        rad_location = carla.Location(x=2.0, z=0.3)
        rad_rotation = carla.Rotation(pitch=4)
        rad_transform = carla.Transform(rad_location, rad_rotation)
        rad_ego = world.spawn_actor(rad_bp, rad_transform, attach_to=ego_vehicle,
                                    attachment_type=carla.AttachmentType.Rigid)

        def rad_callback(radar_data):
            velocity_range = 7.5  # m/s
            current_rot = radar_data.transform.rotation
            for detect in radar_data:
                azi = math.degrees(detect.azimuth)
                alt = math.degrees(detect.altitude)
                # The 0.25 adjusts a bit the distance so the dots can
                # be properly seen
                fw_vec = carla.Vector3D(x=detect.depth - 0.25)
                carla.Transform(
                    carla.Location(),
                    carla.Rotation(
                        pitch=current_rot.pitch + alt,
                        yaw=current_rot.yaw + azi,
                        roll=current_rot.roll)).transform(fw_vec) #apply transformation to fw_vec

                def clamp(min_v, max_v, value):
                    return max(min_v, min(value, max_v))

                norm_velocity = detect.velocity / velocity_range  # range [-1, 1]
                r = int(clamp(0.0, 1.0, 1.0 - norm_velocity) * 255.0)
                g = int(clamp(0.0, 1.0, 1.0 - abs(norm_velocity)) * 255.0)
                b = int(abs(clamp(- 1.0, 0.0, - 1.0 - norm_velocity)) * 255.0)
                world.debug.draw_point(
                    radar_data.transform.location + fw_vec,
                    size=0.075,
                    life_time=0.06,
                    persistent_lines=False,
                    color=carla.Color(r, g, b))

        rad_ego.listen(lambda radar_data: rad_callback(radar_data))

Hi @NurbekHalikulov. Did you get this issue resolved? Can you comment on the solution? Thanks.


Generated pdf doesn't open in Adobe Reader

Describe the bug
The PDF created from the Playground does not open in Adobe Reader. This issue persists with other PDFs that were similarly generated from code.
To Reproduce
Please visit https://playground.pdfme.com/ to generate the invoice PDF. After creating it, attempt to save it to your local system. Next, try to open this file using Adobe Reader. The same PDF has been attached for your reference.
c10a5726-2bc5-461e-945a-ab39f2c6c6be.pdf
Expected behavior
I expect the generated pdf to be opened from all pdf viewers
Your Environment
- pdfme package(@pdfme/generator or @pdfme/ui):
- pdfme version:
- Operating system: MacOS
- Node.js version or Browser name & version:

Your Error Log
None

Additional context
No response

I was able to get around this by using https://www.ghostscript.com/  to convert the pdf to version 1.4
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=dist/test2.pdf dist/test.pdf

ghostscript does a lot more than convert the version - its does a complete rewrite of the PDF, so it's unlikely to be the version that's causing the issue. There's probably something that it ignores within the PDF when reading and subsequently doesn't write it on output.

duplicate of #480

Indeed, it interprets and rewrite the PDF. The PDF version 1.7 has been in circulation since 2016, definitely not the problem. Thanks for pointing out the duplicate.
Another thing that I observed about the PDFs that don't work with Adobe is that on MacOS, these PDFs do not display the number of pages when using the file command, unlike the functional PDFs.

A PR has been opened to resolve this issue: https://github.com/pdfme/pdfme/pull/493

This issue has been resolved in version 4.1.0, so I'm closing it.
If you still experience problems with the latest version, please let us know.


Set up resque

Set up per http://tutorials.jumpstartlab.com/topics/performance/background_jobs.html


New command: m365 pp solution remove

Usage
m365 pp solution remove [options]
Description
Removes the specified solution
Options

Option
Description

-n, --name<name>
The name of the solution to be deleted

-e, --environment <environment>
The name of the environment to remove the solution from

--asAdmin
Set, to remove the solution as admin for environments you are not a member of

--confirm
Don't prompt for confirmation

Examples
Deletes ContosoDemo solution in the given environment.
m365 pp solution remove -n "ContosoDemo" -e "Default-2ca3eaa5-140f-4175-8261-3272edf9f339"

Additional Info
Have a look at #3653 to see how to retrieve the required org URL, and #3668 or #3722 for more details.
For code samples you can also look at: https://learn.microsoft.com/en-us/power-platform/developer/cli/reference/solution#pac-solution-delete

What about a flag to delete the resources as well? By default I believe it leaves them in the standard solution.

Maybe an unpublished solution in the source env...

One small comment:
solution list list should be solution remove

can I work on this one? :hugs:

All yours @nicodecleyre
Thank you!

We should also add an option -i, --id [id] and change the name option to -n, --name[name].
So that the user can give the id or name option but not both, since the api for removing a solution is using the solutoinid dynamicsApiUrl/api/data/v9.1/solutions(solutionId). In that way the user can give the id directly

Good idea @nicodecleyre, this way it also aligns more with our solution get command. I'll update the specs!


Correlation: Fix bug with international characters

JIRA:MADLIB-1186
If the column name of an independent variable used in
madlib.correlation(...) has quotes in it, then the query fails due
to a regular string concat used for finding the average of a column.
This commit uses add_postfix() to create a new string out of a string
that has special chars instead.
Closes #214

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/304/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/307/


Fix sign-in and log-in for better UX

Description
I change the way how sign-in and log-in works by changing them to a form. It responds to actions like manually clicking the submit button or pressing enter.
Fixes issue #36
Type of change

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Checklist:

[x] My code follows the style guidelines of 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
[x] My changes generate no new warnings
[ ] 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
[ ] Any dependent changes have been merged and published in downstream modules

@anomic30 Pushed another commit with the requested changes. My bad on this one! I barely noticed it.


CFFL

CFFL

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_b2ipde6s7x/clone/recipe/meta.yaml:16: pip_install_args: pip install should be run with --no-deps.
ERROR: /tmp/abs_b2ipde6s7x/clone/recipe/meta.yaml:22: host_section_needs_exact_pinnings: Packages in host must have exact version pinnings, except python build tools.
ERROR: /tmp/abs_b2ipde6s7x/clone/recipe/meta.yaml:23: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_b2ipde6s7x/clone/recipe/meta.yaml:48: missing_license_family: The recipe is missing the about/license_family key.
ERROR: /tmp/abs_b2ipde6s7x/clone/recipe/meta.yaml:48: missing_dev_url: The recipe is missing a dev_url
ERROR: /tmp/abs_b2ipde6s7x/clone/recipe/meta.yaml:48: missing_documentation: The recipe is missing a doc_url or doc_source_url
WARNING: /tmp/abs_b2ipde6s7x/clone/recipe/meta.yaml:48: missing_description: The recipe is missing a description
Errors were found

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_d117yb7acv/clone/recipe/meta.yaml:16: pip_install_args: pip install should be run with --no-deps.
ERROR: /tmp/abs_d117yb7acv/clone/recipe/meta.yaml:22: host_section_needs_exact_pinnings: Packages in host must have exact version pinnings, except python build tools.
ERROR: /tmp/abs_d117yb7acv/clone/recipe/meta.yaml:23: missing_wheel: For pypi packages, wheel should be present in the host section
WARNING: /tmp/abs_d117yb7acv/clone/recipe/meta.yaml:48: missing_description: The recipe is missing a description
ERROR: /tmp/abs_d117yb7acv/clone/recipe/meta.yaml:48: missing_license_family: The recipe is missing the about/license_family key.
ERROR: /tmp/abs_d117yb7acv/clone/recipe/meta.yaml:48: missing_dev_url: The recipe is missing a dev_url
ERROR: /tmp/abs_d117yb7acv/clone/recipe/meta.yaml:48: missing_documentation: The recipe is missing a doc_url or doc_source_url
Errors were found


generate knock:install fail

I use activeadmin gem for this project.
I added knock gem into my Gemfile and I try to rails generate knock:install and then it was fail and leave this error logs.
/Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/namespace.rb:217:in `eval': Unable to autoload constant Engine, expected /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/knock-2.0/lib/knock/engine.rb to define it (LoadError)
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:203:in `const_missing'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:543:in `load_missing_constant'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:203:in `const_missing'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/inflector/methods.rb:270:in `const_get'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/inflector/methods.rb:270:in `block in constantize'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/inflector/methods.rb:266:in `each'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/inflector/methods.rb:266:in `inject'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/inflector/methods.rb:266:in `constantize'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/core_ext/string/inflections.rb:66:in `constantize'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/bundler/gems/inherited_resources-4434f0ae72f7/lib/inherited_resources/class_methods.rb:370:in `block in initialize_resources_class_accessors!'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/bundler/gems/inherited_resources-4434f0ae72f7/lib/inherited_resources/class_methods.rb:368:in `delete_if'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/bundler/gems/inherited_resources-4434f0ae72f7/lib/inherited_resources/class_methods.rb:368:in `initialize_resources_class_accessors!'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/bundler/gems/inherited_resources-4434f0ae72f7/lib/inherited_resources/class_methods.rb:404:in `inherited'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/resource_controller.rb:38:in `inherited'
	from (eval):1:in `register_resource_controller'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/namespace.rb:217:in `eval'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/namespace.rb:217:in `register_resource_controller'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/namespace.rb:47:in `register'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/application.rb:158:in `register'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin.rb:75:in `register'
	from /Users/onesup/projects/today-novel/app/admin/banner.rb:1:in `<top (required)>'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:287:in `load'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:287:in `block in load'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:259:in `load_dependency'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:287:in `load'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/application.rb:216:in `block in load'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/error.rb:41:in `capture'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/application.rb:216:in `load'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/application.rb:208:in `block in load!'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/application.rb:208:in `each'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/application.rb:208:in `load!'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin/application.rb:230:in `routes'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activeadmin-1.0.0.pre4/lib/active_admin.rb:79:in `routes'
	from /Users/onesup/projects/today-novel/config/routes.rb:11:in `block in <top (required)>'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/actionpack-<IP_ADDRESS>/lib/action_dispatch/routing/route_set.rb:389:in `instance_exec'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/actionpack-<IP_ADDRESS>/lib/action_dispatch/routing/route_set.rb:389:in `eval_block'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/actionpack-<IP_ADDRESS>/lib/action_dispatch/routing/route_set.rb:371:in `draw'
	from /Users/onesup/projects/today-novel/config/routes.rb:1:in `<top (required)>'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:287:in `load'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:287:in `block in load'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:259:in `load_dependency'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:287:in `load'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/application/routes_reloader.rb:40:in `each'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/application/routes_reloader.rb:40:in `load_paths'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/application/routes_reloader.rb:16:in `reload!'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/application/routes_reloader.rb:26:in `block in updater'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/file_update_checker.rb:77:in `call'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/file_update_checker.rb:77:in `execute'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/application/routes_reloader.rb:27:in `updater'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/application/finisher.rb:119:in `block in <module:Finisher>'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/initializable.rb:30:in `instance_exec'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/initializable.rb:30:in `run'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/initializable.rb:55:in `block in run_initializers'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/2.2.0/tsort.rb:226:in `block in tsort_each'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/2.2.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/2.2.0/tsort.rb:429:in `each_strongly_connected_component_from'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/2.2.0/tsort.rb:347:in `block in each_strongly_connected_component'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/2.2.0/tsort.rb:345:in `each'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/2.2.0/tsort.rb:345:in `call'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/2.2.0/tsort.rb:345:in `each_strongly_connected_component'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/2.2.0/tsort.rb:224:in `tsort_each'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/2.2.0/tsort.rb:203:in `tsort_each'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/initializable.rb:54:in `run_initializers'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/railties-<IP_ADDRESS>/lib/rails/application.rb:352:in `initialize!'
	from /Users/onesup/projects/today-novel/config/environment.rb:5:in `<top (required)>'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:293:in `require'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:293:in `block in require'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:259:in `load_dependency'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/dependencies.rb:293:in `require'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/spring-2.0.0/lib/spring/application.rb:92:in `preload'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/spring-2.0.0/lib/spring/application.rb:143:in `serve'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/spring-2.0.0/lib/spring/application.rb:131:in `block in run'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/spring-2.0.0/lib/spring/application.rb:125:in `loop'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/spring-2.0.0/lib/spring/application.rb:125:in `run'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/gems/2.2.0/gems/spring-2.0.0/lib/spring/application/boot.rb:19:in `<top (required)>'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from /Users/onesup/.rbenv/versions/2.2.5/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from -e:1:in `<main>'

and this one is my Gemfile
source 'https://rubygems.org'
ruby '2.2.5'
gem 'rails', '~> 5.0.0', '>= <IP_ADDRESS>'
gem 'puma', '~> 3.0'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jquery-rails'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'activeadmin', '~> 1.0.0.pre4'
gem 'inherited_resources', git: 'https://github.com/activeadmin/inherited_resources.git'
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem 'bootstrap', '~> 4.0.0.alpha3.1'
gem 'high_voltage'
gem 'mysql2', '~> 0.3.18'
gem 'omniauth'
gem 'omniauth-facebook'
gem 'i18n_generators'
gem 'enumerize'
gem 'acts-as-taggable-on', '~> 4.0'
gem 'carrierwave', '>= 1.0.0.rc', '< 2.0'
gem 'carrierwave-imageoptimizer', git: 'https://github.com/zaiste/carrierwave-imageoptimizer.git'
gem 'mini_magick'
gem 'active_model_serializers'
gem 'axlsx', git: 'https://github.com/randym/axlsx.git'
gem 'rubyXL', '3.3.22'
gem 'knock'

group :development do
  gem 'web-console'
  gem 'listen', '~> 3.0.5'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
  gem 'pry-rails'
  gem 'binding_of_caller'
  gem 'better_errors'
  gem 'capistrano', '~> 3.0.1'
  gem 'capistrano-bundler'
  gem 'capistrano-rails', '~> 1.1.0'
  gem 'capistrano-rails-console'
  gem 'capistrano-rvm', '~> 0.1.1'
  gem 'guard-bundler'
  gem 'guard-rails'
  gem 'guard-rspec'
  gem 'rails_layout'
  gem 'rb-fchange', :require=>false
  gem 'rb-fsevent', :require=>false
  gem 'rb-inotify', :require=>false
  gem 'spring-commands-rspec'
end
group :development, :test do
  gem 'factory_girl_rails'
  gem 'faker'
  gem 'rspec-rails'
  gem 'byebug', platform: :mri
end
group :production do
  gem 'unicorn'
  gem 'unicorn-rails'
end
group :test do
  gem 'capybara'
  gem 'database_cleaner'
  gem 'launchy'
  gem 'selenium-webdriver'
end

This looks like an issue with activeadmin rather than knock. Please open an issue with them. I haven't had time to look into the activeadmin code, but it could be an issue similar to this one https://github.com/cerebris/jsonapi-resources/issues/450.
I'll close this for now, but feel free to reopen if it appears that it's actually an issue with knock.


bootstrap: pin pip version

Fixes: https://tracker.ceph.com/issues/46699
Signed-off-by: Brad Hubbard<EMAIL_ADDRESS>

I've tried to test this by using the following but it seems to be ignored and the code always clones 'ceph-nautilus'.
 -          default-branch: ceph-nautilus
 +          default-branch: ceph-nautilus-BackendUnavailable
 +          git_remote: https://github.com/badone/

2020-07-30 06:31:49,359.359 DEBUG:tasks.ragweed:ragweed config is {'client.1': {'default-branch': 'ceph-nautilus-BackendUnavailable', 'git_remote': 'https://github.com/badone/', 'rgw_server': 'client.1', 'stages': 'prepare'}}
2020-07-30 06:31:49,360.360 INFO:tasks.ragweed:Downloading ragweed...
2020-07-30 06:31:49,360.360 INFO:tasks.ragweed:Using branch 'ceph-nautilus' for ragweed

If I try to use 'force-branch' I get...
UnboundLocalError: local variable 'ragweed_repo' referenced before assignment

@badone for the fix of UnboundLocalError, see #36367


fix: Fixes for Cross-Compilation Issues

This pull request includes two key modifications to address potential issues in the cross-compilation process:
1. Configuration Updates in CMakeLists.txt
Introducing necessary configurations in CMakeLists.txt to ensure the correct discovery and linking of package directories during cross-compilation. The changes include:

Finding and Linking Required Packages:

Fontconfig
X11 with xkbcommon
OpenGL with EGL

Utilizing pkg-config to locate Wayland libraries:

wayland-egl
wayland-client
wayland-cursor

Linking Dependencies: These dependencies are linked to the flutter target.
Including Necessary Directories: The required directories for these dependencies are included.

Problem Addressed:
Previously, the build system struggled to correctly locate package directories during cross-compilation, leading to build failures. These changes ensure that the necessary packages and libraries are correctly found and linked, thereby facilitating a successful build process.
2. Fix for Diverse Compiler Invocation Commands
Resolving issues related to cross-platform compilation on certain operating systems, such as NixOS, by supporting diverse compiler invocation commands.
Details:

Issue: The current implementation assumed specific commands for invoking clang and clang++. However, different operating systems might use different commands. For instance, on NixOS, the commands are aarch64-unknown-linux-gnu-clang and aarch64-unknown-linux-gnu-clang++.
Solution: The commit respects the original environment variable settings, allowing users to specify the binary names provided by their distribution. This flexibility improves support for various operating systems and compilation environments.

Problem Addressed:
Certain operating systems were unable to complete cross-platform compilation due to hardcoded compiler invocation commands. By allowing customizable compiler commands, this fix enhances the project's cross-platform compatibility.
Potentially related to #159, since an incorrect compiler could trigger the same error.

I suppose FLUTTER_TARGET_BACKEND_TYPE var can be used to identify which dependencies are needed.
https://github.com/sony/flutter-elinux/blob/main/templates/app/CMakeLists.txt.tmpl#L28


Monitoring Form Bug

Some fields not letting users type on Monitoring Forms

need to validate if its a spatial seeding thing - test if it works on the island or not for each field

mike to fix with other form state stuff

all the typing stuff is fixed.  linking in redux can be another issue


Are there examples of SBOM where the "component" type is "file"?

Hello, I can't find examples of SBOM where the "component" type is "file" and some component has related components.
Could you please provide such examples?

I'm also interested in such examples, esp. in best practices for file-typed components name fields: The spec's description to use

The name of the component. This will often be a shortened, single name of the component. Examples: commons-lang3 and jquery

does not seem to apply well here. I'd rather expect the name of a file-typed component to be the path to the file relative to the component root.

I would also be interested in such examples.

there is a feature-request for the webpack SBOM generator, to produce file-components with hashes: https://github.com/CycloneDX/cyclonedx-webpack-plugin/issues/1235
as soon as this one is done, i might drop an example here.


[7.0] ShouldBroadcastNow still sends event broadcast to database queue

Laravel Version: 7.0
PHP Version: 7.4.3
Database Driver & Version: MySQL 5.7

Description:
I am firing an event which implements the ShouldBroadcastNow contract. My understanding is that this contract allows the event to be broadcast immediately (using the sync queue driver), but when I fire the event, it still creates a job in the database (because my default queue driver is database).
Steps To Reproduce:

Event class

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;

class Transcoder implements ShouldBroadcastNow
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    //public $broadcastQueue = 'sync'; // even when i explicitly add this, it still does not work

    public $media;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($media)
    {
        $this->media = $media;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('video-' . $this->media);
    }

    public function broadcastAs()
    {
        return 'video.transcoded';
    }

}

Fire the event in Tinker

php artisan tinker
event(App\Events\Transcoder(1))

Expected Result
Event should be broadcast immediately without queueing in database.
Actual Result
Event gets added to database queue and I have to run php artisan queue:work to process it.

Must've been something wrong with my event class. Maybe cached or something. I created a new event and it now works as expected.


added description for ifconfig command

What type of PR is this? (check all applicable)

[ ] ♻ Refactor
[ ] ✨ New Chapter
[ ] 🐛 Bug Fix/Typo
[ ] 👷 Optimization
[X] 📝 Documentation Update
[ ] 🚩 Other

Description
added a description for ifconfig command
Related Tickets & Documents
Added to documentation?

[X] 📜 readme
[ ] 🙅 no documentation needed

[optional] What gif best describes this PR or how it makes you feel?

@bobbyiliev i am unable to label my PR. could you help me with this?

please add hacktoberfest2021 it wont show on my hacktoberfest contribution :(


Problem#1

hi,i was testing the bot on my private server but when i placed the first spawn nothing happens,it only starts console.logging the TIME and nothing else,what should i do?

it's also not spawning any creeps

Hi, I'm looking into this now, I believe you need to place a Spawn manually to start the bot, with a name of the form "roomName0". For example, if the room is called E21S32, the spawn needs to be called E21S320

oh,ok,lemme try

The spawn should also be in a large open area, so that other buildings can fit around (ideally 6 empty spaces on each side above/below, left/right). I'll test also

it seems to have worked

thanks

ok, let us know if you run into other problems/errors! We haven't restarted in a while, I'm testing it now, but if you get any funny errors we'd love to fix them


Add CLI arg for always skipping outputs in dependency block

Tested with terragrunt version v0.22.5
We are seeing issues with running terragrunt validate and terragrunt validate-all on code that have dependencies to modules that uses non-default providers, in our case to switch to Another IAM role.
(All examples below run with disable_init = true)
$ cd /path/terraform/something/core-networking
$ tg validate-all
[terragrunt] 2020/03/04 10:12:40 Setting download directory for module /path/terraform/something/core-networking to /path/terraform/something/core-networking/.terragrunt-cache
[terragrunt] 2020/03/04 10:12:40 Setting download directory for module /path/terraform/shared/cgw to /path/terraform/shared/cgw/.terragrunt-cache
[terragrunt] [/path/terraform/something/core-networking] 2020/03/04 10:12:40 Module /path/terraform/something/core-networking must wait for 0 dependencies to finish
[terragrunt] [/path/terraform/something/core-networking] 2020/03/04 10:12:40 Running module /path/terraform/something/core-networking now
[terragrunt] [/path/terraform/something/core-networking] 2020/03/04 10:12:40 Reading Terragrunt config file at /path/terraform/something/core-networking/terragrunt.hcl
[terragrunt] [/path/terraform/shared/cgw] 2020/03/04 10:12:40 Reading Terragrunt config file at /path/terraform/shared/cgw/terragrunt.hcl
[terragrunt] [/path/terraform/shared/cgw] 2020/03/04 10:12:40 Running command: terraform --version
[terragrunt] [/path/terraform/shared/cgw] 2020/03/04 10:12:40 Terraform files in /path/terraform/shared/cgw/.terragrunt-cache/_2DOYr42s4kz2jA6pFdvhSL8Y8o/clPcrJJZUVUWV3Bi0XrCptPqXvM/customer-gateway are up to date. Will not download again.
[terragrunt] [/path/terraform/shared/cgw] 2020/03/04 10:12:40 Copying files from /path/terraform/shared/cgw into /path/terraform/shared/cgw/.terragrunt-cache/_2DOYr42s4kz2jA6pFdvhSL8Y8o/clPcrJJZUVUWV3Bi0XrCptPqXvM/customer-gateway
[terragrunt] [/path/terraform/shared/cgw] 2020/03/04 10:12:40 Setting working directory to /path/terraform/shared/cgw/.terragrunt-cache/_2DOYr42s4kz2jA6pFdvhSL8Y8o/clPcrJJZUVUWV3Bi0XrCptPqXvM/customer-gateway
[terragrunt] [/path/terraform/shared/cgw] 2020/03/04 10:12:40 Detected 1 Hooks
[terragrunt] [/path/terraform/shared/cgw] 2020/03/04 10:12:40 Running command: terraform output -json

Error: The role "arn:aws:iam::1234567890:role/OurOtherIAMRole" cannot be assumed.

  There are a number of possible causes of this - the most common are:
    * The credentials used in order to assume the role are invalid
    * The credentials do not have appropriate permission to assume the role
    * The role ARN is not valid

The core-networking code contains a dependency block pointing to ../../shared/cgw.
No combination of --terragrunt-working-dir, --terragrunt-include-dir, --terragrunt-strict-include --terragrunt-ignore-external-dependencies or --terragrunt-ignore-dependency-errors seems to have any effect on terragrunt walking to the ../../shared/cgw directory.
I also tries setting skip_output on the dependency but since the output is needed for normal use I had to set it using a env-variable. But the variable does not seem to work as terragrunt only in some cases skipps running terraform output (our goal is to run terragrunt validate-all in our root folder)
Maybe if we could provide --skip-output globally as a command line option and always use mock-output in validation?
In my opinion either the implementation of the terragrunt command line options are broken or the documentation is incorrect/misleading as I can not find any solution to my problem.

The CLI args for ignoring the dependencies for targetting commands of xxx-all. However, when you use a dependency block, there is no way to resolve that dependency in the parsing logic unless it is configured to skip that. In fact, I would find that surprising if it didn't get the dependency output when you pass in ignore-external-dependencies, as that would mean my plan or apply doesn't make sense (since it is working off of mocks).
Having a CLI arg to globally skip outputs makes sense, although I am weary of that leading to surprise, since it only makes sense with validate-all, and it only works if you have mock_outputs defined. With that said, I think a CLI arg is explicit enough that it should be clear what is happening.
We're buried at the moment and this isn't in our critical path so we are unlikely to get this implemented soon, but a PR to add it is welcome.

I agree that some configurable needs to be added for this situation (running a validate-all and having it emulate the skip_output behavior (i.e. use mock_outputs for dependency) while at the same time not having a *plan run skip outputs (else the plan will show projected changes for mock outputs which may reflect a diff in the plan that it should not).
Another option might be to add a skip_outputs_allowed_terraform_commands slice/list var that ensure that skip_outputs only gets applied to certain run types (e.g. *validate(

please add, this is completely annoying. I can't initialize providers in anything w/ deps

The only way I can init any of these terragrunt apps is

in all dependencies set skip_outputs = true
in all inputs that reference those dependencies outputs, comment them out...

Only then can I init anything.
Is this how its supposed to work or am I missing something. How are others handling this? @ryno75 @blockmar @yorinasub17

some additional info, my project structure is setup following the recommended "best practice" project structure of https://github.com/gruntwork-io/terragrunt-infrastructure-live-example my difference is that I have dependencies declared, with outputs referenced in inputs

The only way I can init any of these terragrunt apps is

in all dependencies set skip_outputs = true
in all inputs that reference those dependencies outputs, comment them out...

Only then can I init anything.
Is this how its supposed to work or am I missing something. How are others handling this? @ryno75 @blockmar @yorinasub17

It was a while since I was poking around this, and I'm not working with this anymore, but this is an example of what I have in our terragrunt files:
dependency "zone" {
  config_path = "../../../_global/route53/example.com"

  mock_outputs = {
    zone_name = "temporary-zone-name"
  }

  mock_outputs_allowed_terraform_commands = ["validate"]
  skip_outputs                            = tobool(get_env("DISABLE_INIT", "false"))
}

And in a main Makefile, the following:
validate:
	DISABLE_INIT=true terragrunt validate-all --terragrunt-non-interactive --terragrunt-parallelism 1

can something like this be added please?


How to get real file extention when using base64 string

Hi
Thanks for your good package. I'm using the base64 file option but I want to get real file extension. according to docs I make a request and put this code inside it:
protected function base64FileKeys(): array
    {
        return [
            'file' => time() . '_Ticket.jpg',    // i want to get file extension dynamically not hard coded!
        ];
    }

it's work and ok but all of my files are not jpg! I want to use pdf or png too. so how can I get real file extension (uploaded file) and put it to mentioned code?

You can't! A base64 encoded file only holds the contents, not the filename. You need to separately submit the filename (for example, with a hidden input field).


Theseus Update for December 2022

Hi @phil-opp, thanks again for pinging me. Here are the updates for Theseus from the last couple of months; please feel free to request or make any changes you see fit.

Forgot to tag this as relevant to #135

thanks, and appreciate the typo fix 😅


Hourly Statistics option don't permit use groupe_by diff

With the option:
statistics:
  type: state
  period: hour

With a period to hour give only one value per hour. So :
group_by:
  duration: hour
  func: diff
  start_with_last: true

No graph is drawing

but that work :
      statistics:
        type: state
        period: hour
        align: start
      group_by:
        duration: 59.99min
        func: diff
        start_with_last: true


Improve butterknife implementation

App uses butterknife in just some parts of the app, while it should be used everywhere to improve performance.
Also update butterknife to latest version.

@gogeta95 You can go ahead and work on this if you like :+1:

@mananwason, are you still working on this?

@gogeta95 Can I work on this issue ?

@betterclever sure, go ahead. :+1:

@betterclever whats the status of this issue?

@gogeta95 I experienced some problems while updating Butterknife to latest version. I am trying to resolve them.

okay.. let me know if you need any help.


Replace hardcoded value with sizeof

Yes, that can happen. Even more annoying, MSVC and g++ have different ways of specifying alignment. With MSVC there is a pragma for the entire struct. For g++ it is an attribute on each field. You can take a look at NetFix for details. It looks kind of ugly to add all the annotations. Most of the time it doesn't matter so much though, since usually structs are designed to follow natural alignment of fields, which for most purposes here they are.
If we want to be paranoid, we can add static asserts about the struct sizes right after each struct definition.

Seems like you two may have already addressed this but wanted to note that sizeof(), while generally recommended, can cause unexpected problems on different platform/compiler configurations. I'd be sure to thoroughly test this on any new configuration that might crop up (especially macOS as Apple likes to do weird things).

Yes, we should probably add static_asserts for structs used directly in serialization. I added Issue #191 to track this.


React select demo

Coverage decreased (-0.1%) to 25.962% when pulling 7ade490a5ca526dd78706e5a2f1ae451982d2ba2 on Jskobos:react-select-demo into 92025b829a1859eabe869c6da3b9882d2f738287 on linode:develop.

Coverage decreased (-0.1%) to 25.962% when pulling 7ade490a5ca526dd78706e5a2f1ae451982d2ba2 on Jskobos:react-select-demo into 92025b829a1859eabe869c6da3b9882d2f738287 on linode:develop.


chore(ui): removed unused default-avatar classes

Checklist:

[x] I have read and followed the contribution guidelines.
[x] I have read and followed the how to open a pull request guide.
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #55067

@naomi-lgbt Thanks for your help, I've committed the updated snapshot file.


test(idempotency): migrate to vitest

Summary
Changes

Please provide a summary of what's being changed

This PR updates the unit tests for the Idempoency package so that they use vitest instead of Jest.
The e2e tests for the utility will be addressed in a future PR. I also removed a number of test cases that were redundant while leaving coverage unaffected. There's still room for further improvement but I decided to not address it now for the sake of keeping the PR focused.

Please add the issue number below, if no issue is present the PR might get blocked and not be reviewed

Issue number: closes #3123

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.

Sorry, I had to make another commit to remove a leftover test I had left commented out.
@am29d, @leandrodamascena, if you could click approve again please.


only/only sub is undocumented

The problem
Using only similarly to multi with methods and subroutines is undocumented
Suggestions
Add a page documenting it and when it would be appropriate to use

Declared in S12


Requests: Support for Table attribute

Rather than requiring a custom Map attribute, this should support the Table attribute from System.ComponentModel.DataAnnotations.Schema.
This is from the System.ComponentModel.Annotations package, so any ORM is allowed to use it.

#284 - could be related.

+1
maybe also ColumnAttribute ?

I am not prioritizing this for now, please advise if this is not enough. It does the job as you pointed here.

I made a gist to use Table/Column attributes (mostly so I can use different casing), it's just for my own use-case, but you can edit it as you see fit. It's required that you use the latest beta version which has support for Class/PropertyMapping.
https://gist.github.com/lauw/20747e47e373444432278985e8eee495
Add the gist to your project and call it:
RepoDbMapper.MapTablesAndColumns(NameCasing.SnakeCase);

As you mentioned about latest beta release, it is now supporting a feature called Implicit Mapping in which it allows you to map the following via class mappers.

Class Name
Property Name
Primary
Identity
Type Maps
Property Handlers

Still I am waiting an update to a guy that would contribute a class called ClassMap or FluentMapper, that utilizes the mapper classes I developed.
In anyway, please feel free to explore the Implicit Mapping from the official site.
The actual thread can be found at #415 .

I am planning to open this one as for-grabs.
@lauw - I would assume that the Attributes has a higher precedence than using the Mappers as it is explicitly being annotated. Btw, supporting a Table and Column data annotation seems to be very easy in RepoDb. I can guide you 2 liner changes to add the support for this, but you have to write Unit Test (and maybe Integration Tests).
Are you open to make a PR for this? The changes is on the following code lines.

ClassMappedNameCache - https://github.com/mikependon/RepoDb/blob/44deec8192d718898e53e75bd19770922afdeb2b/RepoDb.Core/RepoDb/Extensions/DataEntityExtension.cs#L39
ProperyMappedNameCache - https://github.com/mikependon/RepoDb/blob/44deec8192d718898e53e75bd19770922afdeb2b/RepoDb.Core/RepoDb/Extensions/PropertyInfoExtension.cs#L84

@mikependon Great! :) I'm willing to take a look at it later this week, will first see if it doesn't cost too much time with the tests. This wasn't the reason I made the mapper though, it was mostly to support snake_case and I needed a way to annotate my db objects.

@lauw - what you had done is a really cool stuff. No need for a rush for now, there are current activities on the library when it comes to Implicit Mapping, as you mentioned above (you need to reference the latest). But TBH, there is one user that approached me about snake casing support - and I find it not really a common case, but it seems.
Would you be able to save your gist for future PR here? I am thinking to integrate that snake_case logic you did for Implicit Mapping (once the PR for FluentMapper and ClassMap is finish). We can discuss how to move forward.

I'm willing to take a look at it later this week, will first see if it doesn't cost too much time with the tests.

Well, the tests are not that extensive, you may have to extend these 2 unit tests files.

ClassMapperTest
PropertyMapperTest

And may create additional integration test that has a completely the same contents, except that you are using the Table and Column attribute rather than Map. Here is the integration test that you can copy over. TBH, I did the same with implicit mapping test.

@lauw - hey, are you still open for a PR of this? :)

This is now fixed via PR #435. This will be available on the next beta RepoDb >= v1.11.1-beta2.
@cwaldron - please do let me know if you need a beta build right away.

Just added an extensive Integration Tests for this. The tests can be found here.
In addition, the Unit Tests for Key/Primary and Table/Column/Map collisions has also been added/extended.

ClassMapperTableAttributeTest
PropertyMapperColumnAttributeTest
KeyAttributeTest

The fix is now available in version RepoDb v1.11.1.

The latest release of RepoDb is now including this request. Please install the version 1.11.2.
With this, I am closing this one now. Just revert if you have questions.


added latency measurement

Implementation Details:

Added Latency details
Server Object Update: Modify the Server struct to include a field for storing latency information

closes #12