adding more "hint" to training process

Hi,
i was focusing with the human posture task (getting posture from openpose image + prompt and than generating the charter under the right pose - control_sd15_openpose.pth)
However, i wanted to add one more hint to force the controlnet to generate specific human:
so if in the original code the hint be an posture image like that :

i would like to add more image of the specific human:

the target should be that image of that person, under the new posture
so what i did is:

in the dataset file:  reading that extra image too, concatenate in the channel dimension, that image with the posture image so now the
source variable is 6 channels not 3
 # concate source and source image
 source = np.concatenate([source,source_image],axis=2)

 return dict(jpg=target, txt=prompt, hint=source)

changing the yaml config file to support 6 channels - NOT SURE I REALLY UNDERSTATED THE MEANING OF THESE VALUES

model:
target: cldm.cldm.ControlLDM
params:
linear_start: 0.00085
linear_end: 0.0120
num_timesteps_cond: 1
log_every_t: 200
timesteps: 1000
first_stage_key: "jpg"
cond_stage_key: "txt"
control_key: "hint"
image_size: 64
channels:  was 4 i changed to 7
cond_stage_trainable: false
conditioning_key: crossattn
monitor: val/loss_simple_ema
scale_factor: 0.18215
use_ema: False
only_mid_control: False
control_stage_config:
  target: cldm.cldm.ControlNet
  params:
    image_size: 32 # unused
    **in_channels:  was 4 i changed to 7**
    **hint_channels: was 3 i changed to 6**
    model_channels: 320
    attention_resolutions: [ 4, 2, 1 ]
    num_res_blocks: 2
    channel_mult: [ 1, 2, 4, 4 ]
    num_heads: 8
    use_spatial_transformer: True
    transformer_depth: 1
    context_dim: 768
    use_checkpoint: True
    legacy: False

unet_config:
  target: cldm.cldm.ControlledUnetModel
  params:
    image_size: 32 # unused
    **in_channels:  was 4 i changed to 7**
    **out_channels:  was 4 i changed to 7**
    model_channels: 320
    attention_resolutions: [ 4, 2, 1 ]
    num_res_blocks: 2
    channel_mult: [ 1, 2, 4, 4 ]
    num_heads: 8
    use_spatial_transformer: True
    transformer_depth: 1
    context_dim: 768
    use_checkpoint: True
    legacy: False

first_stage_config:
  target: ldm.models.autoencoder.AutoencoderKL
  params:
    **embed_dim:  was 4 i changed to 7**
    monitor: val/rec_loss
    ddconfig:
      double_z: true
      **z_channels:  was 4 i changed to 7**
      resolution: 256
      in_channels: 3
      out_ch: 3
      ch: 128
      ch_mult:
      - 1
      - 2
      - 4
      - 4
      num_res_blocks: 2
      attn_resolutions: []
      dropout: 0.0
    lossconfig:
      target: torch.nn.Identity

cond_stage_config:
  target: ldm.modules.encoders.modules.FrozenCLIPEmbedder

the problem is when i trained the model from scratch - running tutorial_train.py with resume_path = None
the model predictions, the reconstruction and the samples that locate under image_log->train folder are just a noise
does anyone have any idea how to solve that ?
thanks

I don't think you need to start training from scratch. If you finetuning from some trained model, you should be able to converge faster

To my knowledge, you should probably alter hint_channels under control_stage_config instead of channels

Hi, do you know why use_ema is set to False?

hello!
I'm doing similar attempt as u do.
do u have any further results?

hello!
I'm doing similar attempt as u do.
do u have any further results?

Hello!
Have you solved the problem? I wonder if I could learn from your work.
Thank you

hello!
I'm doing similar attempt as u do.
do u have any further results?

Hello!
Have you solved the problem? I wonder if I could learn from your work.
Thank you

I finshed my works months ago, it works but not significantly effective.
In the config part,  i only changed  hint_channels  to  6
Then I merged 2 3channels img into a 6channels img, and save as tiff, create a customized dataset object for training. this is my dataset code below.
class MyDataset(Dataset):
    def __init__(self):
        self.data = []
        with open('./training/pose+face/prompt.json', 'rt') as f:
            for line in f:
                self.data.append(json.loads(line))

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx):
        item = self.data[idx]

        source_filename = item['source']
        target_filename = item['target']
        prompt = item['prompt']

        source = tifffile.imread(os.path.join('./training/pose+face/source', source_filename))
        target = cv2.imread(os.path.join('./training/pose+face/target', target_filename))

        # Do not forget that OpenCV read images in BGR order.
        target = cv2.cvtColor(target, cv2.COLOR_BGR2RGB)

        # Normalize source images to [0, 1].
        source = np.transpose(source, (1, 2, 0))
        source = source.astype(np.float32) / 255.0

        # Normalize target images to [-1, 1].
        target = (target.astype(np.float32) / 127.5) - 1.0

        return dict(jpg=target, txt=prompt, hint=source)

hello!
I'm doing similar attempt as u do.
do u have any further results?

Hello!
Have you solved the problem? I wonder if I could learn from your work.
Thank you

I finshed my works months ago, it works but not significantly effective.
In the config part, i only changed hint_channels to 6
Then I merged 2 3channels img into a 6channels img, and save as tiff, create a customized dataset object for training. this is my dataset code below.
class MyDataset(Dataset):
    def __init__(self):
        self.data = []
        with open('./training/pose+face/prompt.json', 'rt') as f:
            for line in f:
                self.data.append(json.loads(line))

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx):
        item = self.data[idx]

        source_filename = item['source']
        target_filename = item['target']
        prompt = item['prompt']

        source = tifffile.imread(os.path.join('./training/pose+face/source', source_filename))
        target = cv2.imread(os.path.join('./training/pose+face/target', target_filename))

        # Do not forget that OpenCV read images in BGR order.
        target = cv2.cvtColor(target, cv2.COLOR_BGR2RGB)

        # Normalize source images to [0, 1].
        source = np.transpose(source, (1, 2, 0))
        source = source.astype(np.float32) / 255.0

        # Normalize target images to [-1, 1].
        target = (target.astype(np.float32) / 127.5) - 1.0

        return dict(jpg=target, txt=prompt, hint=source)

Thanks for your prompt reply, I am trying to write as you say. I failed to save the merged img as tiff, so I
use numpy.concatenate to merge two imgs, like
    stacked_array = np.concatenate((inpaint_resize, ref_image), axis=2)
    #inpaint_resize : (512,512,3)
    #ref_image : (512,512,3)

Then I get a (512,512,6) numpy as a hint. But there is something wrong.
  File "/root/autodl-tmp/ControlNet-v1-1-nightly/cldm/logger.py", line 40, in log_local
    Image.fromarray(grid).save(path)
  File "/root/miniconda3/lib/python3.8/site-packages/PIL/Image.py", line 3102, in fromarray
    raise TypeError(msg) from e
TypeError: Cannot handle this data type: (1, 1, 6), |u1

I am trying to fix this problem. May I ask if you have done any operation other than modifying the hint_channels, or can you provide the part that you save tiff? I would be very, very grateful.

hello!
I'm doing similar attempt as u do.
do u have any further results?

Hello!
Have you solved the problem? I wonder if I could learn from your work.
Thank you

I finshed my works months ago, it works but not significantly effective.
In the config part, i only changed hint_channels to 6
Then I merged 2 3channels img into a 6channels img, and save as tiff, create a customized dataset object for training. this is my dataset code below.
class MyDataset(Dataset):
    def __init__(self):
        self.data = []
        with open('./training/pose+face/prompt.json', 'rt') as f:
            for line in f:
                self.data.append(json.loads(line))

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx):
        item = self.data[idx]

        source_filename = item['source']
        target_filename = item['target']
        prompt = item['prompt']

        source = tifffile.imread(os.path.join('./training/pose+face/source', source_filename))
        target = cv2.imread(os.path.join('./training/pose+face/target', target_filename))

        # Do not forget that OpenCV read images in BGR order.
        target = cv2.cvtColor(target, cv2.COLOR_BGR2RGB)

        # Normalize source images to [0, 1].
        source = np.transpose(source, (1, 2, 0))
        source = source.astype(np.float32) / 255.0

        # Normalize target images to [-1, 1].
        target = (target.astype(np.float32) / 127.5) - 1.0

        return dict(jpg=target, txt=prompt, hint=source)

Thanks for your prompt reply, I am trying to write as you say. I failed to save the merged img as tiff, so I use numpy.concatenate to merge two imgs, like
    stacked_array = np.concatenate((inpaint_resize, ref_image), axis=2)
    #inpaint_resize : (512,512,3)
    #ref_image : (512,512,3)

Then I get a (512,512,6) numpy as a hint. But there is something wrong.
  File "/root/autodl-tmp/ControlNet-v1-1-nightly/cldm/logger.py", line 40, in log_local
    Image.fromarray(grid).save(path)
  File "/root/miniconda3/lib/python3.8/site-packages/PIL/Image.py", line 3102, in fromarray
    raise TypeError(msg) from e
TypeError: Cannot handle this data type: (1, 1, 6), |u1

I am trying to fix this problem. May I ask if you have done any operation other than modifying the hint_channels, or can you provide the part that you save tiff? I would be very, very grateful.

it is a meanless error, just overlook it for is aims to record the image log while training.
            if grid.shape[2] == 6:
                grid = grid[ :, :,:3]
                continue

add this code before File "/root/miniconda3/lib/python3.8/site-packages/PIL/Image.py", line 3102, to skip it in cldm/logger.py

hello!
I'm doing similar attempt as u do.
do u have any further results?

Hello!
Have you solved the problem? I wonder if I could learn from your work.
Thank you

I finshed my works months ago, it works but not significantly effective.
In the config part, i only changed hint_channels to 6
Then I merged 2 3channels img into a 6channels img, and save as tiff, create a customized dataset object for training. this is my dataset code below.
class MyDataset(Dataset):
    def __init__(self):
        self.data = []
        with open('./training/pose+face/prompt.json', 'rt') as f:
            for line in f:
                self.data.append(json.loads(line))

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx):
        item = self.data[idx]

        source_filename = item['source']
        target_filename = item['target']
        prompt = item['prompt']

        source = tifffile.imread(os.path.join('./training/pose+face/source', source_filename))
        target = cv2.imread(os.path.join('./training/pose+face/target', target_filename))

        # Do not forget that OpenCV read images in BGR order.
        target = cv2.cvtColor(target, cv2.COLOR_BGR2RGB)

        # Normalize source images to [0, 1].
        source = np.transpose(source, (1, 2, 0))
        source = source.astype(np.float32) / 255.0

        # Normalize target images to [-1, 1].
        target = (target.astype(np.float32) / 127.5) - 1.0

        return dict(jpg=target, txt=prompt, hint=source)

Thanks for your prompt reply, I am trying to write as you say. I failed to save the merged img as tiff, so I use numpy.concatenate to merge two imgs, like
    stacked_array = np.concatenate((inpaint_resize, ref_image), axis=2)
    #inpaint_resize : (512,512,3)
    #ref_image : (512,512,3)

Then I get a (512,512,6) numpy as a hint. But there is something wrong.
  File "/root/autodl-tmp/ControlNet-v1-1-nightly/cldm/logger.py", line 40, in log_local
    Image.fromarray(grid).save(path)
  File "/root/miniconda3/lib/python3.8/site-packages/PIL/Image.py", line 3102, in fromarray
    raise TypeError(msg) from e
TypeError: Cannot handle this data type: (1, 1, 6), |u1

I am trying to fix this problem. May I ask if you have done any operation other than modifying the hint_channels, or can you provide the part that you save tiff? I would be very, very grateful.

it is a meanless error, just overlook it for is aims to record the image log while training.
            if grid.shape[2] == 6:
                grid = grid[ :, :,:3]
                continue

add this code before File "/root/miniconda3/lib/python3.8/site-packages/PIL/Image.py", line 3102, to skip it in cldm/logger.py

It makes sense! Thanks for your useful advice!

Hey guys,
I also wants to use multiple controls for my thesis controlnet. Could you add the complete yaml config and also MyDataset Class for this problem?
If I get some result I will add mine

I change model config to this:
model:
  target: cldm.scldm.ExtendedControlLDM
  params:
    linear_start: 0.00085
    linear_end: 0.0120
    num_timesteps_cond: 1
    log_every_t: 200
    timesteps: 1000
    first_stage_key: "jpg"
    cond_stage_key: "txt"
    control_key: "hint"
    image_size: 64
    channels: 4 # changed from 4 to 7
    cond_stage_trainable: false
    conditioning_key: crossattn
    monitor: val/loss_simple_ema
    scale_factor: 0.18215
    use_ema: False
    only_mid_control: False

    control_stage_config:
      target: cldm.cldm.ControlNet
      params:
        image_size: 32 # unused
        in_channels: 4
        hint_channels: 9 # 3 for one image, 2 * 3 for 2 image hint, 3 * 3 for 3 images
        model_channels: 320
        attention_resolutions: [ 4, 2, 1 ]
        num_res_blocks: 2
        channel_mult: [ 1, 2, 4, 4 ]
        num_heads: 8
        use_spatial_transformer: True
        transformer_depth: 1
        context_dim: 768
        use_checkpoint: True
        legacy: False

    unet_config:
      target: cldm.cldm.ControlledUnetModel
      params:
        image_size: 32 # unused
        in_channels: 4
        out_channels: 4
        model_channels: 320
        attention_resolutions: [ 4, 2, 1 ]
        num_res_blocks: 2
        channel_mult: [ 1, 2, 4, 4 ]
        num_heads: 8
        use_spatial_transformer: True
        transformer_depth: 1
        context_dim: 768
        use_checkpoint: True
        legacy: False

    first_stage_config:
      target: ldm.models.autoencoder.AutoencoderKL
      params:
        embed_dim: 4
        monitor: val/rec_loss
        ddconfig:
          double_z: true
          z_channels: 4
          resolution: 256
          in_channels: 3
          out_ch: 3
          ch: 128
          ch_mult:
          - 1
          - 2
          - 4
          - 4
          num_res_blocks: 2
          attn_resolutions: []
          dropout: 0.0
        lossconfig:
          target: torch.nn.Identity

    cond_stage_config:
      target: ldm.modules.encoders.modules.FrozenCLIPEmbedder

Also I start from pretrained Stable Difussion weights so I also load it with this code:
# Model Creation
model = create_model(config['model']['config_file']).cpu()

lsd = load_state_dict(resume_path, location='cpu')

# Convert the list of tensors to a single tensor
repeated_tensor = torch.stack([torch.tensor(item).repeat(1, config['model']['num_hints'], 1, 1) for item in lsd['control_model.input_hint_block.0.weight']]).squeeze(1)

# Assign the corrected tensor to the state dictionary
lsd['control_model.input_hint_block.0.weight'] = repeated_tensor

In the above code the config['model']['num_hints']=3

I change model config to this:
model:
  target: cldm.scldm.ExtendedControlLDM
  params:
    linear_start: 0.00085
    linear_end: 0.0120
    num_timesteps_cond: 1
    log_every_t: 200
    timesteps: 1000
    first_stage_key: "jpg"
    cond_stage_key: "txt"
    control_key: "hint"
    image_size: 64
    channels: 4 # changed from 4 to 7
    cond_stage_trainable: false
    conditioning_key: crossattn
    monitor: val/loss_simple_ema
    scale_factor: 0.18215
    use_ema: False
    only_mid_control: False

    control_stage_config:
      target: cldm.cldm.ControlNet
      params:
        image_size: 32 # unused
        in_channels: 4
        hint_channels: 9 # 3 for one image, 2 * 3 for 2 image hint, 3 * 3 for 3 images
        model_channels: 320
        attention_resolutions: [ 4, 2, 1 ]
        num_res_blocks: 2
        channel_mult: [ 1, 2, 4, 4 ]
        num_heads: 8
        use_spatial_transformer: True
        transformer_depth: 1
        context_dim: 768
        use_checkpoint: True
        legacy: False

    unet_config:
      target: cldm.cldm.ControlledUnetModel
      params:
        image_size: 32 # unused
        in_channels: 4
        out_channels: 4
        model_channels: 320
        attention_resolutions: [ 4, 2, 1 ]
        num_res_blocks: 2
        channel_mult: [ 1, 2, 4, 4 ]
        num_heads: 8
        use_spatial_transformer: True
        transformer_depth: 1
        context_dim: 768
        use_checkpoint: True
        legacy: False

    first_stage_config:
      target: ldm.models.autoencoder.AutoencoderKL
      params:
        embed_dim: 4
        monitor: val/rec_loss
        ddconfig:
          double_z: true
          z_channels: 4
          resolution: 256
          in_channels: 3
          out_ch: 3
          ch: 128
          ch_mult:
          - 1
          - 2
          - 4
          - 4
          num_res_blocks: 2
          attn_resolutions: []
          dropout: 0.0
        lossconfig:
          target: torch.nn.Identity

    cond_stage_config:
      target: ldm.modules.encoders.modules.FrozenCLIPEmbedder

I add the hints inside my Dataset class to load data from It and I change the DataSet class and concatenate different images to each other as a source
        source = cv2.imread(f'{self.dataset_path}/{source_filename}')
        target = cv2.imread(f'{self.dataset_path}/{target_filename}')

        # Do not forget that OpenCV read images in BGR order.
        source = cv2.cvtColor(source, cv2.COLOR_BGR2RGB)
        target = cv2.cvtColor(target, cv2.COLOR_BGR2RGB)

        # Add canny detector as second control
        detected_map = resize_image(HWC3(target), self.resolution)
        detected_map = self.apply_canny(detected_map, self.canny_low, self.canny_high)
        canny = HWC3(detected_map)

        # Resize the original Image
        resize = cv2.resize(target, self.small_dim, interpolation = cv2.INTER_AREA)
        resize = cv2.resize(resize, self.original_dim, interpolation = cv2.INTER_AREA)

        # concat the channels to source
        source = np.concatenate((source, resize, canny), axis=2)

        # Normalize source images to [0, 1].
        # source = np.transpose(source, (1, 2, 0))
        source = source.astype(np.float32) / 255.0

I started from a pretrained stable diffusion model. I need to load the weights inside the model hence I duplicate the weights in the hints and you can see it in the following code:
# Model Creation
model = create_model(config['model']['config_file']).cpu()

lsd = load_state_dict(resume_path, location='cpu')

# Convert the list of tensors to a single tensor
repeated_tensor = torch.stack([torch.tensor(item).repeat(1, config['model']['num_hints'], 1, 1) for item in lsd['control_model.input_hint_block.0.weight']]).squeeze(1)

# Assign the corrected tensor to the state dictionary
lsd['control_model.input_hint_block.0.weight'] = repeated_tensor

In the above code the config['model']['num_hints']=3

Thank you for the inputs, may I know if you were able to get good results with this?

I modified it like this, but the model seemed to fail in the first few epochs... I wonder if anyone has trained a good model using this merge control channel method~

I change model config to this:
model:
  target: cldm.scldm.ExtendedControlLDM
  params:
    linear_start: 0.00085
    linear_end: 0.0120
    num_timesteps_cond: 1
    log_every_t: 200
    timesteps: 1000
    first_stage_key: "jpg"
    cond_stage_key: "txt"
    control_key: "hint"
    image_size: 64
    channels: 4 # changed from 4 to 7
    cond_stage_trainable: false
    conditioning_key: crossattn
    monitor: val/loss_simple_ema
    scale_factor: 0.18215
    use_ema: False
    only_mid_control: False

    control_stage_config:
      target: cldm.cldm.ControlNet
      params:
        image_size: 32 # unused
        in_channels: 4
        hint_channels: 9 # 3 for one image, 2 * 3 for 2 image hint, 3 * 3 for 3 images
        model_channels: 320
        attention_resolutions: [ 4, 2, 1 ]
        num_res_blocks: 2
        channel_mult: [ 1, 2, 4, 4 ]
        num_heads: 8
        use_spatial_transformer: True
        transformer_depth: 1
        context_dim: 768
        use_checkpoint: True
        legacy: False

    unet_config:
      target: cldm.cldm.ControlledUnetModel
      params:
        image_size: 32 # unused
        in_channels: 4
        out_channels: 4
        model_channels: 320
        attention_resolutions: [ 4, 2, 1 ]
        num_res_blocks: 2
        channel_mult: [ 1, 2, 4, 4 ]
        num_heads: 8
        use_spatial_transformer: True
        transformer_depth: 1
        context_dim: 768
        use_checkpoint: True
        legacy: False

    first_stage_config:
      target: ldm.models.autoencoder.AutoencoderKL
      params:
        embed_dim: 4
        monitor: val/rec_loss
        ddconfig:
          double_z: true
          z_channels: 4
          resolution: 256
          in_channels: 3
          out_ch: 3
          ch: 128
          ch_mult:
          - 1
          - 2
          - 4
          - 4
          num_res_blocks: 2
          attn_resolutions: []
          dropout: 0.0
        lossconfig:
          target: torch.nn.Identity

    cond_stage_config:
      target: ldm.modules.encoders.modules.FrozenCLIPEmbedder

I add the hints inside my Dataset class to load data from It and I change the DataSet class and concatenate different images to each other as a source
        source = cv2.imread(f'{self.dataset_path}/{source_filename}')
        target = cv2.imread(f'{self.dataset_path}/{target_filename}')

        # Do not forget that OpenCV read images in BGR order.
        source = cv2.cvtColor(source, cv2.COLOR_BGR2RGB)
        target = cv2.cvtColor(target, cv2.COLOR_BGR2RGB)

        # Add canny detector as second control
        detected_map = resize_image(HWC3(target), self.resolution)
        detected_map = self.apply_canny(detected_map, self.canny_low, self.canny_high)
        canny = HWC3(detected_map)

        # Resize the original Image
        resize = cv2.resize(target, self.small_dim, interpolation = cv2.INTER_AREA)
        resize = cv2.resize(resize, self.original_dim, interpolation = cv2.INTER_AREA)

        # concat the channels to source
        source = np.concatenate((source, resize, canny), axis=2)

        # Normalize source images to [0, 1].
        # source = np.transpose(source, (1, 2, 0))
        source = source.astype(np.float32) / 255.0

I started from a pretrained stable diffusion model. I need to load the weights inside the model hence I duplicate the weights in the hints and you can see it in the following code:
# Model Creation
model = create_model(config['model']['config_file']).cpu()

lsd = load_state_dict(resume_path, location='cpu')

# Convert the list of tensors to a single tensor
repeated_tensor = torch.stack([torch.tensor(item).repeat(1, config['model']['num_hints'], 1, 1) for item in lsd['control_model.input_hint_block.0.weight']]).squeeze(1)

# Assign the corrected tensor to the state dictionary
lsd['control_model.input_hint_block.0.weight'] = repeated_tensor

In the above code the config['model']['num_hints']=3

Thank you for the inputs, may I know if you were able to get good results with this?

Maybe we can't achieve the desired result. I tried segmap plus depth... If there are no other bugs in my experiment, then the conclusion is: the image is not ok~
Can you train two control volumes and get good results?

Hi, I had similar concern and I solved the problem by duplicating the hint channel in pretraned model (2 duplicated image for hint)
Here is the code
`from share import *
import pytorch_lightning as pl
from torch.utils.data import DataLoader
from tutorial_dataset import MyDataset
from cldm.logger import ImageLogger
from cldm.model import create_model, load_state_dict
import torch
Configs
resume_path = './models/control_sd15_ini.ckpt'
batch_size = 12
logger_freq = 300
learning_rate = 1e-5
sd_locked = True
only_mid_control = False
def modify_state_dict_for_6_channels(state_dict):
for key in state_dict.keys():
if 'input_hint_block' in key and 'weight' in key:
old_weight = state_dict[key]
if old_weight.shape[1] == 3:
new_weight = torch.zeros(old_weight.shape[0], 6, old_weight.shape[2], old_weight.shape[3],
device=old_weight.device, dtype=old_weight.dtype)
new_weight[:, :3, :, :] = old_weight
new_weight[:, 3:, :, :] = old_weight  # Duplicate the weights for the additional channels
state_dict[key] = new_weight
return state_dict
if name == 'main':
# First use cpu to load models. Pytorch Lightning will automatically move it to GPUs.
model = create_model('./models/cldm_v15.yaml').cpu()
state_dict = load_state_dict(resume_path, location='cpu')
# Modify the state_dict to handle the new input channels
state_dict = modify_state_dict_for_6_channels(state_dict)

# Load the modified state dict
model.load_state_dict(state_dict, strict=False)

model.learning_rate = learning_rate
model.sd_locked = sd_locked
model.only_mid_control = only_mid_control

# Misc
dataset = MyDataset()
dataloader = DataLoader(dataset, num_workers=0, batch_size=batch_size, shuffle=True)
logger = ImageLogger(batch_frequency=logger_freq)
trainer = pl.Trainer(gpus=2, precision=32, callbacks=[logger])

# Train!
trainer.fit(model, dataloader)`


Added windows 11 logo

Thanks to @coffee-cup for actually pointing out that my last PR had an invalid logo, now it should be the right one.

The first file (svg) is actually deleted, I don't know why GitHub still shows it


Fix Test-Kitchen tests

update to CentOS 6.7
update Arch Linux Support

6.4 is likely intentional there as it was a super common vagrant box for a while.

@coderanger I had issues, retrieving the 6.4 image. https://hub.docker.com/_/centos/ does list 6.4 anymore. It should not hurt to take another 6 release, because you get there with yum update automatically anyway.

It looks like those tests haven't been working for while. If you like, I add travis configuration to test this all the time. Since travis has a docker service now, this should be pretty easy. This would help to run the integration tests with all PRs.


Upgrade to Kubernetes 1.19.x

In 1.19.0 CoreDNS metric names has changed, so prometheus operator also needs to be updated, otherwise CoreDNS dashboard and perhaps alerts might be broken.
More details here: https://github.com/coredns/coredns/blob/master/notes/coredns-1.7.0.md#metric-changes

Note: README.md should also be updated as part of this issue.


Added new sample for OpenLayers3

reviewer @viddo
This PR includes a new sample for OpenLayers3 derived from a question @oriolbx has received on support.

:+1:  Although the build
retest this please


ForceSSL in cwpsecurity yaml block interferes with custom use of Director::forceSSL()

When using this part of the recipe on a cwp site, if a user sets Director::forceSSL() in their _config.php, for example, their site will not redirect to https on all URLs.
This is because this yaml block https://github.com/silverstripe/cwp-core/blob/master/_config/security.yml#L25 sets ForceSSLPatterns. In order to force SSL with  Director a CWP user would have to set the following yaml:
Name: whatever
After: cwpsecurity
---
SilverStripe\Core\Injector\Injector:
  SilverStripe\Control\Middleware\CanonicalURLMiddleware:
    properties:
      ForceSSL: true
      ForceSSLPatterns: null

This isn't necessarily a bug, because the code is doing what it should, but the documentation probably needs to be updated to clarify why Director::forceSSL() doesn't work in _config.php as people would usually expect.

Might also be best to update the docs to opt for the yaml configuration instead of a change in php

That's the goal that's spurred the investigation resulting in this issue @scott1702 :)


Configuration instructions should be clearer

https://github.com/openvmp/openvmp/blob/main/docs/Development.md

Section "OS prerequisites", part 1, is a copy of one of the 3 variants of the official Humble installation instructions (the debian variant), but the doc does not tell the user that it is a copy or which variant. Copies are either perfect or wrong; in this case, wrong: the line "apt install -y git curl gnupg lsb-release" specifies 3 pkgs that are not in the official instructions. Symptom 1: a user that already followed the official instructions and recognized this copy might not notice the 3 extra packages. Symptom 2: the addition of "git gnupg lsb-release" here suggests that those pkgs are an important requirement of ROS2 rather than of OpenVMP. Symptom 3: if the user has already installed ROS2 via the binary variant, then the remaining OpenVMP instructions for "ROS2 package prerequisites", which are Debian instructions, won't work (because Debian installation and binary installation use different directories). Solution: Instead of copying the official instructions, refer to them. Move the installation of the "git gnupg lsb-release" pkgs to the next paragraph.
"The following OS packages are required for development and testing purposes." -> "We require these additional OS packages to develop and test OpenVMP."
Section "ROS2 package prerequisites". "packages might be missing" suggests that the instructions up to this point have been a guess that no one tested. I suspect that the reason for this section is to help a user who didn't follow the instructions up to this point -- the user already has an arbitrary installation of ROS2. The first instruction is to install "ros-humble-desktop-full", which is an option in the official install; therefore, in the previous section, tell the user to choose that install option.

Test results:
openvmp-issue-4-test-shell.zip


vit.vision_tower.vision_model.post_layernorm.weight & bias NOT initialized?

It says that there are 2 params which are not found in the pretrained weights. It is very unsettling since I copyed the code from huggingface-1.8B model card- quick start.

Still

The post_layernorm is applied after the output of the ViT last layer, which is not used in our model and we delete them during training. So you can ignore this log, it does not affect the performance.


nohup, timeout: allow subcommands to use flags

This should resolve #1613.  Both of these utilities need to be switched to clap at some point.

would it be possible to add a test?

@Arcterus are you still planning to finish this? thanks

Yeah, sorry.  I’ll push some tests today.

Sorry for the delay, but this will take another day or two most likely (since I don't have time at the moment).

no update for a while, closing. @Arcterus feel free to reopen :)


[Eip155-Eip712]: add eip-155 + eip712 support to sign message

Description
EIP-712
EIP-155 support to both EIP-191 and EIP-712
How to test
Run unit tests

If this is a breaking change, don't forget to mention it (I believe it is, though usage so far was minimal).


Unable to fix the "compiled against a different node.js version" issue

MacOS: BigSur (11.5.2)
Node: v14.17.6
pdf-fill-form: 5.1.0
Log:
node_modules/pdf-fill-form/build/Release/pdf_fill_form.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 83. This version of Node.js requires
NODE_MODULE_VERSION 72. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).

Tried re-building, re-installing, rebuild with --update-binary. Nothing worked.

Solved it using this hack, but I believe this should be addressed properly:
I found that latest node.js version that has NODE_MODULE_VERSION=72 is v12.22.6 according to https://nodejs.org/en/download/releases/
I installed that version as a sidetrack using using nvm and ran below command to install pdf-fill-form (while my current/default version of node.js is still v14.17.6)
npm rebuild pdf-fill-form --nodedir=/Users/rohit/.nvm/versions/node/v12.22.6/

No more import error after this.


Multicluster enhancements

Consider how to enable multicluster support:
The end goal is to provide a way to useful ways to view energy/CO2 data for multiple clusters.
Possible deliverables include:

A mechanism/dashboard (running anywhere?) that can query and display energy/CO2 for (selectable) labelgroups on (selecatble) clusters.

Seems that that CPU/CO2 data can be obtained and displayed if clusters and authentication (and certain configuration information) is provided.

Questions
- Can/should we ease deployment on multiple clusters?
- How exactly to gather and graph data for multiple clusters.... (just use config info and URL?)
- Could be treated as a separate project that depends on SusQL deployment.
- Do we need cluster identifier in data?  maybe no, but seems like a good idea.
- Cache/store gathered data?

Hopefully getting access to SusQL data should be as simple as accessing Thanos as follows (assuming logged into specific cluster):
export thanosroute=$(oc get routes -n openshift-monitoring thanos-querier -o jsonpath='{.status.ingress[0].host}')
curl -s  -k -H "Authorization: Bearer $(oc whoami -t)" https://${thanosroute}/api/v1/query?query=susql_total_energy_joules | jq


Emit an event when the view switches

Hey, I want to use different event titles depending on the view, and figured the best way to do it is send a different array with the titles changed in them, but I would need to trigger this on view change.
If you know of a better way to accomplish without any new features in your codebase I'm totally open to that.
Thanks

Thanks, that solved my issue. Though now I'm having a problem with the scrollTime option not working if my defaultView is agendaWeek. It works ok if I switch between views, though. Any tips for that?

It also works if I go to the view through a vue-router link, but if I enter through a refresh or a direct url scrollTime isn't working.

Hi @Swieckowski
Sorry for the delay on that, I am afraid I don't have any tips for this, did you figure this out in the end?

@Swieckowski Two things to look into:

If your using keep alive your parent component may actually be destorying the vue full calendar instance. I ran into this using keep alive on routes. The child components get destoryed in my system when someone logs out probably because on sign in the route changes and the child component loses context. If thats happens vue-fullcalendar will create/mount again and the reference will change. Make sure your not storing the this.$refs.calendar locally and that any of your event handlers are on an old reference of the vue-fullcalendar.

I have noticed that working inside event handlers sometimes requires to get outside of the event handler in order for actions to take place. Sometimes its necessary to trigger a data change and fire off an event to change something fullcalendar.io related in a method via nextTick

onChange(){
    if(something) operateNormally();
    else {
       this.$nextTick(() => {
          this.shiftData(); //simply to get a synchronized reload of the fullcalendar.io after this event completes
          this.$refs.calendar.fireMethod('scrollTime', this.config.scrollTime);
       });
   }
}

methods: ...
  shiftData() {
    let first = this.events.shift();
    this.events.push(first);
  }


Disable default workflow archival from within a particular workflow

Similar to https://github.com/argoproj/argo-workflows/issues/6663 I would like to see an option to disable default workflow persistent archival.

You mean logs no?

No @alexec , I mean the archive to the postgresdb. By default it archives every workflow to the db if it is enabled in the configmap. I would like to bypass the default behaviour by adding a field to say a cron workflow to not archive to the db.

This feature exists. See docs.

Hi @alexec
I am looking in
https://argoproj.github.io/argo-workflows/fields/#workflowspec
I see archiveLogs which is only for logs. I do not see anything to exclude workflow from being archived in persistence.archive
https://argoproj.github.io/argo-workflows/workflow-controller-configmap.yaml
Am I missing something?
I would like to see a boolean similar to archiveLogs, but for archiveWorkflow and set it to false to override the default behaviour of archive workflow defined in the configmap persistence.archive=true

I have this cron workflow
apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
  name: clear-non-running-pods
  labels:
    workflows.argoproj.io/archive-strategy: none
spec:
  schedule: "*/10 * * * *"

And this configmap
apiVersion: v1
kind: ConfigMap
metadata:
  name: workflow-controller-configmap
data:
  persistence: |
    connectionPool:
      maxIdleConns: 100
      maxOpenConns: 0
      connMaxLifetime: 0s
    nodeStatusOffLoad: false
    archive: true
    archiveTTL: 1095d
    clusterName: playground
    postgresql:
      host: x.x.x.x
      port: 5432
      database: postgres
      tableName: argo_workflows
      userNameSecret:
        name: argo-postgres-config
        key: username
      passwordSecret:
        name: argo-postgres-config
        key: password
      ssl: true
      sslMode: require

@alexec I am still seeing the workflow get archived every 10 minutes. I also tried moving the label to spec.metadata.labels. Am I missing something?

I don't see the config in your config map? Make sure you restart the controller.

I think what you are saying is to set persistence.archive=false and add a matchlabel for every workflow I want archived.
I want to do the inverse where the default behaviour is to archive every workflow (persistence.archive=true) and there is a label/annotation to exclude resources from archival.
Is my understanding correct @alexec ?

I think you can do this:
selector:
  matchExpressions:
    - {key: workflows.argoproj.io/archive-strategy, operator: NotIn, values: [none]}

@alexec , I updated the configmap and bounced the server and controller, but still seeing both workflows archiving
  workflowDefaults: |
    spec:
      ttlStrategy:
        # secondsAfterSuccess: 10800
        secondsAfterSuccess: 300
        secondsAfterFailure: 259200
  persistence: |
    connectionPool:
      maxIdleConns: 100
      maxOpenConns: 0
      connMaxLifetime: 0s
    nodeStatusOffLoad: false
    archive: true
    archiveTTL: 1095d
    clusterName: playground
    postgresql:
      host: x.x.x.x
      port: 5432
      database: postgres
      tableName: argo_workflows
      userNameSecret:
        name: argo-postgres-config
        key: username
      passwordSecret:
        name: argo-postgres-config
        key: password
      ssl: true
      sslMode: require

      archiveLabelSelector:
        matchExpressions:
          - {key: workflows.argoproj.io/archive-strategy, operator: NotIn, values: [none]}

@driv This works. Like what is in @rwong2888's ConfigMap. It just had an indentation issue.
    archiveLabelSelector:
      matchExpressions:
        - {key: workflows.argoproj.io/archive-strategy, operator: NotIn, values: [none]}

close?

no, i believe this is still not available @tooptoop4


Molviewer Toolbar

I was unable to include the main molviewer CSS because it would shrink the viewer in weird ways.  Andrew kindly made me a tiny css file for the headless viewer only that allows us to show the missing toolbar icons.
In the future, this css will ideally be a part of the molviewer package instead of its own css file in this repo.

@avirshup Whoops forgot to add that file to the commit :)

@justinmc I'm actually getting the bug from #179 here, so I'm not able to see the controls :(

@avirshup Ah true, this will have to wait until we've got the molviewer thing fixed.

@avirshup The molviewer bug should be gone now, so this should be reviewable.

@justinmc - ok, got this up and running with tirrenu-1.3.5! The toolbar's working well. However, the protein displays in stick mode now:

But I'll try some newer branches and see if the problem manifests there too

@avirshup I put everything in stick mode in https://github.com/Autodesk/molecular-simulation-tools/pull/155 due to the animation API needing to be in stick mode.  Maybe I can do something fancier and only show stick mode on the results step if that's better.

Ohhh, right, I remember that. In which case - this looks good!

Ok cool.  We can always do another PR to sort out the stick stuff.


Tasks cannot be dropped when using schedule instead of after

Provider Version
0.42.1
Terraform Version
1.1.7
Describe the bug
Tasks cannot be deleted when defined with schedule instead of after (predecessors)
Expected behavior
Should ignore the predecessors and delete the task successfully.
Code samples and commands
Steps to recreate the scenario:

Create task with schedule

resource "snowflake_task" "test_task" {
  database  = "TEST_DATABASE"
  schema    = "TEST_SCHEMA"
  warehouse = "TEST_WAREHOUSE"

  name          = "TEST_TASK"
  schedule      = "1 MINUTE"
  sql_statement = <<EOF
  SELECT 1;
EOF

  enabled = true

  lifecycle {
    ignore_changes = [
      after,
    ]
  }
}

Plan creation

> terraform plan

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # snowflake_task.test_task will be created
  + resource "snowflake_task" "test_task" {
      + database      = "TEST_DATABASE"
      + enabled       = true
      + id            = (known after apply)
      + name          = "TEST_TASK"
      + schedule      = "1 MINUTE"
      + schema        = "TEST_SCHEMA"
      + sql_statement = <<-EOT
              SELECT 1;
        EOT
      + warehouse     = "TEST_WAREHOUSE"
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Apply creation

> terraform apply

Terraform used the selected providers to generate the following execution plan. Resource actions are
indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # snowflake_task.test_task will be created
  + resource "snowflake_task" "test_task" {
      + database      = "TEST_DATABASE"
      + enabled       = true
      + id            = (known after apply)
      + name          = "TEST_TASK"
      + schedule      = "1 MINUTE"
      + schema        = "TEST_SCHEMA"
      + sql_statement = <<-EOT
              SELECT 1;
        EOT
      + warehouse     = "TEST_WAREHOUSE"
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

snowflake_task.test_task: Creating...
snowflake_task.test_task: Creation complete after 4s [id=TEST_DATABASE|TEST_SCHEMA|TEST_TASK]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Comment-out the task
main.tf:

# resource "snowflake_task" "test_task" {
#   database  = "TEST_DATABASE"
#   schema    = "TEST_SCHEMA"
#   warehouse = "TEST_WAREHOUSE"

#   name          = "TEST_TASK"
#   schedule      = "1 MINUTE"
#   sql_statement = <<EOF
#   SELECT 1;
# EOF

#   enabled = true

#   lifecycle {
#     ignore_changes = [
#       after,
#     ]
#   }
# }

Plan deletion

> terraform plan
snowflake_task.test_task: Refreshing state... [id=TEST_DATABASE|TEST_SCHEMA|TEST_TASK]

Note: Objects have changed outside of Terraform

Terraform detected the following changes made outside of Terraform since the last "terraform apply":

  # snowflake_task.test_task has changed
  ~ resource "snowflake_task" "test_task" {
        id                 = "TEST_DATABASE|TEST_SCHEMA|TEST_TASK"
        name               = "TEST_TASK"
      + session_parameters = {}
        # (7 unchanged attributes hidden)
    }

Unless you have made equivalent changes to your configuration, or ignored the relevant attributes using
ignore_changes, the following plan may include actions to undo or respond to these changes.

───────────────────────────────────────────────────────────────────────────────────────────────────────────

Terraform used the selected providers to generate the following execution plan. Resource actions are
indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  # snowflake_task.test_task will be destroyed
  # (because snowflake_task.test_task is not in configuration)
  - resource "snowflake_task" "test_task" {
      - after              = jsonencode([]) -> null
      - database           = "TEST_DATABASE" -> null
      - enabled            = true -> null
      - id                 = "TEST_DATABASE|TEST_SCHEMA|TEST_TASK" -> null
      - name               = "TEST_TASK" -> null
      - schedule           = "1 MINUTE" -> null
      - schema             = "TEST_SCHEMA" -> null
      - session_parameters = {} -> null
      - sql_statement      = "SELECT 1" -> null
      - warehouse          = "TEST_WAREHOUSE" -> null
    }

Plan: 0 to add, 0 to change, 1 to destroy.

Apply deletion

> terraform apply
snowflake_task.test_task: Refreshing state... [id=TEST_DATABASE|TEST_SCHEMA|TEST_TASK]

Terraform used the selected providers to generate the following execution plan. Resource actions are
indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  # snowflake_task.test_task will be destroyed
  # (because snowflake_task.test_task is not in configuration)
  - resource "snowflake_task" "test_task" {
      - after              = jsonencode([]) -> null
      - database           = "TEST_DATABASE" -> null
      - enabled            = true -> null
      - id                 = "TEST_DATABASE|TEST_SCHEMA|TEST_TASK" -> null
      - name               = "TEST_TASK" -> null
      - schedule           = "1 MINUTE" -> null
      - schema             = "TEST_SCHEMA" -> null
      - session_parameters = {} -> null
      - sql_statement      = "SELECT 1" -> null
      - warehouse          = "TEST_WAREHOUSE" -> null
    }

Plan: 0 to add, 0 to change, 1 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

snowflake_task.test_task: Destroying... [id=TEST_DATABASE|TEST_SCHEMA|TEST_TASK]
╷
│ Error: error retrieving root task TEST_TASK: failed to locate the root node of: []: sql: no rows in result set
│
│

Additional context
As the error states, apparently the provider goes all the way back to its predecessors to try to find the parent task of the task to be deleted, and can't find anything, because there isn't one.
Note that the lifecycle to ignore changes on after is needed because this error would happen when updating the tasks as well, if it weren't for that, but even with that tweak, tasks cannot be deleted through the provider.
  lifecycle {
    ignore_changes = [
      after,
    ]
  }

Hey @fermezz. Thanks for creating the issue.
It looks like the same error as in #1427.
The task resource has been greatly reworked since v.0.42.1. Can you confirm if the problem persists after upgrading to the newest provider version?

Hey @fermezz
Since 0.42.1 is a very old version, I have to close the issue. In the provider's v0.99.0 version, the tasks will be reworked and should not contain any of the reported issues and should be feature-complete (except for newly added parameters that appeared in the documentation a few days ago). In case of any problems, please create another issue (we are currently more responsive and try to fix or categorize the issues for future improvements as soon as possible).


Makefile does not install pkg-config file for libgpr

Should this be an issue in the gRPC issue tracker?
Yes.
What version of gRPC and what language are you using?
v1.10.0, but I think it is on many versions.
What operating system (Linux, Windows, …) and version?
Linux.
What runtime / compiler are you using (e.g. python version or version of gcc)
g++ (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

What did you do?
Use the following Dockerfile to reproduce the problem, run with docker build -t foo -f Dockerfile . in a directory that contains only the Dockerfile.

FROM ubuntu:16.04
MAINTAINER "Carlos O'Ryan<EMAIL_ADDRESS>
ARG NCPU=8

RUN apt-get update && apt-get install -y \
  build-essential \
  cmake \
  gcc \
  g++ \
  golang \
  git \
  cmake \
  libssl-dev \
  libtool \
  lsb-release \
  make \
  tar \
  wget \
  zlib1g-dev

RUN apt-get update && apt-get install -y curl unzip automake
WORKDIR /var/tmp/build-dependencies
RUN wget -q https://github.com/google/protobuf/archive/v3.5.2.tar.gz
RUN tar -xf v3.5.2.tar.gz
WORKDIR /var/tmp/build-dependencies/protobuf-3.5.2
RUN ./autogen.sh && ./configure && make -j ${NCPU} && make install
RUN ldconfig

WORKDIR /var/tmp/build-dependencies
RUN apt-get remove -y libc-ares-dev libc-ares2
RUN wget -q https://github.com/c-ares/c-ares/archive/cares-1_14_0.tar.gz
RUN tar -xf cares-1_14_0.tar.gz
WORKDIR /var/tmp/build-dependencies/c-ares-cares-1_14_0
RUN ./buildconf && ./configure && make -j ${NCPU} && make install
RUN ldconfig

WORKDIR /var/tmp/build-dependencies
RUN wget -q https://github.com/grpc/grpc/archive/v1.10.0.tar.gz
RUN tar -xf v1.10.0.tar.gz
WORKDIR /var/tmp/build-dependencies/grpc-1.10.0
RUN make -j ${NCPU} && make install

RUN ls -l /usr/local/lib/pkgconfig
RUN if [ ! -f /usr/local/lib/pkgconfig/gpr.pc ]; then echo "Did not install gpr.pc"; exit 1; fi

What did you expect to see?
I would expect the Makefile to install all the pkg-config files needed to link gRPC, since libgpr is a needed library (at least for static linking) it should have a pkg-config file too.
What did you see instead?
The file is not install, obviously, the docker build commands exits with non-zero status.
Anything else we should know about your project / environment?

FWIW, it seems that (at east as-of 1.14.0) no address_sorting.pc file is installed either. Do you want a separate bug report for that?


Update East Side Union High School District

Makes all subdomains available for East Side Union High School District. Previously, only the student subdomain was included, which left the educators out.
Domain: esuhsd.org

@platterss First stage of verification passed, official domain is esuhsd.org as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@platterss Thank you for your patience while waiting for a review and processing your request. Pull request merged.


Rename code repo's master branch to main

The PR for this issue will be more of a documentation on how it was done, and approval will reflect that it's ok to run these commands

Done!


Raise exceptions on errors

I noticed that even when there are errors, no exceptions are risen, and that makes it harder to use the library effectively.
Would you accept a PR to raise exceptions when the response doesn't have an OK status code and the code in these lines on WebflowResponse is reached?
Great work with the library overall, I'm finding it very useful! :)

Sure!


Add NOTICE.txt file with findings in KIE Tools repository

It could also just be called NOTICE.
https://www.apache.org/licenses/example-NOTICE.txt
https://infra.apache.org/licensing-howto.html
https://creadur.apache.org/rat/
Some links for whomever takes this


Fix linux.sh to work when mountpoint contains spaces

Connects to #152
Change-type: patch

While looking at the mountutils code I stumbled across https://linux.die.net/man/3/setmntent which says there's actually 4 octal escape-codes in use: space (\040), tab (\011), newline (\012) and backslash (\134)
I guess we could add those other codes too for the sake of completion, or we could decide that those characters are very unlikely to appear in a drive name / label / mountpoint.
Happy to submit another PR if you decide on the completion-approach @jviotti

Yeah, lets add them!


Use different font colour when tx hasn't been mined yet

Similar how we do it on https://explorer.bitcoinabc.org/ (maybe we can use magenta instead of red).

Would this be for when a tx doesnt have a block height?

Yeah

added


Optimize gc

Coverage decreased (-0.04%) to 50.415% when pulling 25df1828dd798b2639da1e271ddeb6830d73e243 on nobodyiam:optimize-gc into 32f5fc8ba8890e403ef94566eca711733982e717 on ctripcorp:master.

Codecov Report

Merging #639 into master will decrease coverage by 0.04%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #639      +/-   ##
============================================
- Coverage     46.99%   46.95%   -0.05%
- Complexity     1482     1483       +1
============================================
  Files           342      342
  Lines          9390     9390
  Branches        926      926
============================================
- Hits           4413     4409       -4
- Misses         4653     4657       +4
  Partials        324      324

Impacted Files
Coverage Δ
Complexity Δ

...lo/configservice/util/InstanceConfigAuditUtil.java
77.19% <ø> (ø)
15 <0> (ø)
:arrow_down:

...mework/apollo/portal/component/PortalSettings.java
55.73% <0%> (-8.2%)
5% <0%> (ø)

...ervice/service/ReleaseMessageServiceWithCache.java
85.71% <0%> (+1.19%)
24% <0%> (+1%)
:arrow_up:

Continue to review full report at Codecov.

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

Coverage decreased (-0.04%) to 50.415% when pulling 8a48afdd05b5726fbe0c96830454587597b61fe3 on nobodyiam:optimize-gc into 32f5fc8ba8890e403ef94566eca711733982e717 on ctripcorp:master.


Audit dependencies

Update used dependencies to the latest version and remove unused ones.

[x] Remove unnecessary dependencies
[ ] Fix audit issues and update remaining dependencies

It seems that redux-promise-middleware is not fully compatible with react-scripts 3.0.0 so some vulnerabilities cannot be fixed before we figure out how to proceed with the migration.


Make available for general chart/html/report conversion to pdf

Would be great to have this outstanding package for converting other types of charts/reports/htmls to pdf/svg/webp.
Worth noting that it works seamlessly under both windows 10 and linux! Did not believe it actually run chromium process under the hood. Amazing :-D

Hi @rubmz,

Worth noting that it works seamlessly under both windows 10 and linux! Did not believe it actually run chromium process under the hood. Amazing :-D

Thanks for letting us know. This is great to hear!

Would be great to have this outstanding package for converting other types of charts/reports/htmls to pdf/svg/webp.

Yeah, there are definitely good use-cases here. I wrote up some notes on something similar in https://github.com/plotly/Kaleido/issues/21#issuecomment-664341383.  In this case, my assumption was that we would be working with an html document string, and a requested width/height, and would convert this into an image (PNG or JPG) or single page PDF of the requested dimensions.
Could you take a look at this issue and see if this paradigm fits the use-cases you are interested in? And if not, could you write out a specific use case that would be useful for you?  Thanks!
Note that other image formats, like WEBP and SVG, wouldn't be so easy to support. For the plotly case, the plotly.js library knows how to generate these formats and the results are simply transferred from the JavaScript library back to the C++ executable.  Chromium has built-in capability to snapshot a webpage to PNG, JPG, and PDF without any cooperation from content being displayed.

I just wanted to chime in with a bump for this feature. I got here looking for a "clean" way to convert basic HTML+CSS to an image and Kaleido looks like what I was wishing for.

I just wanted to chime in with a bump for this feature. I got here looking for a "clean" way to convert basic HTML+CSS to an image and Kaleido looks like what I was wishing for.

would be helpful for me as well. Bump.

Thanks for your interest in Kaleido. We are currently working on an overhaul that might address your issue - we hope to have news in a few weeks and will post an update then. Thanks - @gvwilson


Spec needs to clarify what Application Context means

From the conversation with @njr-11 , Application Context means the following:
From @njr-11

Application context includes the java:comp, java:module, and so forth JNDI namespace of the application component, as well as its thread context class loader..
Transaction context propagation means that the task or completion stage runs under the same transaction of the thread that submits the task or creates the stage. If the task or completion stage wants to roll back the transaction, it can do so with the usual rollback API, or it can mark the transaction for rollback with setRollbackOnly. The spec does not have anything where we auto-rollback due to a failure, which would limit flexibility of implementation by forcing rollback on exception paths.
Transaction context propagation also covers propagation of the lack of any transaction to a thread. So if the original thread was not running in a transaction to start with, then the task or completion stage will also run without any active transaction on the thread.

@Ladicek states

That sounds nice, but isn't what the MP ConProp spec says, nor what its TCK tests. Specifically, the spec says that "it can determine the thread context class loader as well as the set of resource references that are available for lookup or resource injection", which is quite vague. The TCK test for the APPLICATION context doesn't test JNDI contexts at all (no wonder -- MicroProfile doesn't know anything about JNDI), and its test for the TCCL propagation doesn't really test anything. I'm aware of one MP ConProp implementation that fully passes the TCK, but doesn't propagate TCCL.

The spec doc needs to be updated to clearly specify the meaning.

Can this issue be fixed in the upcoming release?


observerable questions

I came from redux and had a few questions that I couldn't find anywhere in the docs, so I just posted as an issue.  I mainly looked at the newer way (useLocalStore/useObservable + context) rather than the older approach with @observable but my understanding that they are the same.
Store location:
There are several ways of putting a store.

A global store consists of child stores, using context (by context I always mean react context).
it would be nice if there is an example in docs somewhere.  I saw a SO post gave an example but lost it.
A store in a context for a section of app, I imagine it should be at the route level consisting of several pages
similar to a global store, except you wouldn't need to do store in a store pattern?  The global store is probably preferred I think, since its a little bit simpler.
A store for a single route/component (with sub component), using context
how is this different from regular context without mobx?  Why should I use mobx here (real question)?  If you replace Context.Consumer with useObservable or observable HOC it would be almost the same? (maybe setState isn't reactive but you can get pretty close with immer)
A local store for the current component only
How is using mobx more advantageous over using useState (local component state)?  Seems almost the same to me except maybe mobx updates faster than setState? I've never come across a scenario where I need this though.

For observables:
There are three ways and docs says they are almost identical.  I can see observer component allows local rendering, so just going to put that aside.
For useObservable hook, is it a real hook? (I think so) so it can't be used in conditional rendering right?
ie if (loading) return <Spinner />, but otherwise this is slightly more performant than observe HOC because other component hooks won't cause rerender?
assuming a component is wrapped using useObservable or observable HOC:

is it smart enough to track and rerender only if the store properties that component used were changed instead of any change from any mobx store
What if a child component didn't useObservable but accessed store properties?  It wouldn't subscribe to updates even though parent is?  ie subscription only works in that component?
forgetting to wrap observers or destructuring stores and thus not getting updates seems error prone esp for new users, any way to catch it?

other qs:

are computed value in store memoized?
how to do async actions in useLocalStore?

Sorry for the delay with the answer.
For your concerns about how to structure stores, I would say, there is no particular "right" way. It's even out of the scope of MobX. It's important to realize that the MobX role is to provide reactivity which is done by setting up observables along with some reactions (provided by (use)observer). How you structure your stores and data is completely up to you. I know that's a whole different approach you might know from Redux which is highly opinionated on that.
Either way, to provide some structure the projects like mobx-state-tree or mobx-keystone were created as an abstraction. If you need something more complex, don't be shy to grab one of those.
The useObserver is a real hook by definition because it has useState inside to cause a re-render on observable changes. You cannot call it conditionally.

is it smart enough to track and rerender only if the store properties that component used were changed instead of any change from any mobx store

That's kinda a core mission of the MobX to track only values that are used. So yea, it is "smart enough" ;)

2. What if a child component didn't useObservable but accessed store properties?  It wouldn't subscribe to updates even though parent is?  ie subscription only works in that component?

That is correct, without some observer (reaction), the component won't re-render itself. Only render can then come either from props change (can be optimized with React.memo) or context value change.

3. forgetting to wrap observers or destructuring stores and thus not getting updates seems error prone esp for new users, any way to catch it?

Some people just use observers for every component to avoid this pitfall. If you think it's problematic for performance, you should measure it first. It effectively boils down to creating a few objects in memory that won't be used. That means memory consumption could be higher with such pattern, but it's rarely a problem.
Destructuring stores is not a complicated problem, especially if you stick an observer everywhere. If you don't want that for whatever reasons then you need to be mindful when you destructure.

are computed value in store memoized?

Yes and no. It's a somewhat complicated matter and generally, unless you need to hunt a performance, don't worry about it.

2. how to do async actions in useLocalStore?

There is nothing specific to MobX about it. Do your async in a component and call actions on the store to change value. Or grab MST and learn about its async actions.

In addition, use
https://mobx.js.org/refguide/api.html#observablerequiresreaction-boolean
(mobx.configure({
observableRequiresReaction: true }) is a great way to have MobX warn you if
you forget any observer, or to warn you if you use a computed value in a
way that it won't be cached
On Wed, Apr 22, 2020 at 9:07 PM Daniel K<EMAIL_ADDRESS>wrote:

Sorry for the delay with the answer.
For your concerns about how to structure stores, I would say, there is no
particular "right" way. It's even out of the scope of MobX. It's important
to realize that the MobX role is to provide reactivity which is done by
setting up observables along with some reactions (provided by
(use)observer). How you structure your stores and data is completely up to
you. I know that's a whole different approach you might know from Redux
which is highly opinionated on that.
Either way, to provide some structure the projects like mobx-state-tree or
mobx-keystone were created as an abstraction. If you need something more
complex, don't be shy to grab one of those.
The useObserver is a real hook by definition because it has useState
inside to cause a re-render on observable changes. You cannot call it
conditionally.

is it smart enough to track and rerender only if the store
properties that component used were changed instead of any change from any
mobx store

That's kinda a core mission of the MobX to track only values that are
used. So yea, it is "smart enough" ;)

What if a child component didn't useObservable but accessed store
properties? It wouldn't subscribe to updates even though parent is? ie
subscription only works in that component?

That is correct, without some observer (reaction), the component won't
re-render itself. Only render can then come either from props change (can
be optimized with React.memo) or context value change.

forgetting to wrap observers or destructuring stores and thus not
getting updates seems error prone esp for new users, any way to catch it?

Some people just use observers for every component to avoid this pitfall.
If you think it's problematic for performance, you should measure it first.
It effectively boils down to creating a few objects in memory that won't be
used. That means memory consumption could be higher with such pattern,
but it's rarely a problem.
Destructuring stores is not a complicated problem, especially if you stick
an observer everywhere. If you don't want that for whatever reasons then
you need to be mindful when you destructure.

are computed value in store memoized?

Yes and no. It's a somewhat complicated matter and generally, unless you
need to hunt a performance, don't worry about it. MobX is clever enough to
decide this for you.

how to do async actions in useLocalStore?

There is nothing specific to MobX about it. Do your async in a component
and call actions on the store to change value. Or grab MST and learn about its
async actions https://mobx-state-tree.js.org/concepts/async-actions.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/mobxjs/mobx-react/issues/851#issuecomment-618011559,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAN4NBAHQXRN6NM3356BUZDRN5FA3ANCNFSM4LZNHRYQ
.


.TemporalTableAll() SQL Error: "Incorrect syntax near 'SYSTEM_TIME'"

1. Description
When working with a legacy schema, I encountered a table containing a column with the same name as the table (i.e. dbo.Foo.Foo).  When we created a history table then queried using .TemporalTableAll(), the generated SQL was invalid: it had FOR SYSTEM_TIME ALL immediately after the column name in the SELECT clause.  Workaround is to rename the column so that it is different than the table name.
2. Exception
SQL Exception
Exception message: Incorrect syntax near 'SYSTEM_TIME'
Stack trace:

Hello @zachjohnston ,
Unfortunately after reviewing it, we choose to don't fix it for now.
Fixing it will currently make our code a little bit too complex for this kind of very special case since we need to support some case that doesn't currently have the schema name.
Best Regards,
Jon


Large Heat Bar Back Plz

It's not mission critical, but I would like to see the large heat bar make a return, overheat indicator be damned. I'd be fine with it just being partway down the bar oddly, that's fine by me really. Just consider it, it's not mission critical or anything.

Re-added in 0.4.0


Open Source: Azure Docs

Description 📜
Everything related to Azure Docs
Fixes #2971

Type of change 📝

[x] Doc#umentation (Content Creation in the form of codes or tutorials)

Domain of Contribution 📊

[x] Open #Source

Checklist ✅

[x] I follow Contributing Guidelines & Code of conduct of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I'm GWOC'21 contributor

@Aryamanz29 Please review


[api-minor] Stop polyfilling structuredClone in legacy builds

Comparing the currently supported browsers/environments, see the FAQ and the MDN compatibility data, the structuredClone polyfill is only needed in Google Chrome versions < 98. Because of some limitations in the core-js polyfill we're currently forced to special-case the transfer handling to prevent bugs, and it'd be nice to avoid that.
Note that structuredClone, with transfers, is only used in two spots:

The LoopbackPort class, which is only used with fake workers. Given that fake workers should never be used in browsers, breaking that edge-case in older Google Chrome versions seem fine.
The AnnotationStorage class, when Stamp-annotations have been added to the document. Given that Google Chrome isn't the main focus of development, breaking part of the editing-functionality in older Google Chrome versions should hopefully be acceptable.

/botio test


Blacklight facet view sorting options

This issue was raised in the Review meeting from Sprint 21. Questions:

Can lexical sorting be used in a way similar to the description in this article?
Can we ignore case? Example of ALLCAPS values
Can we ignore punctuation?

@mcritchlow I've updated solr schema: https://github.com/ucsdlib/dams5-cc-pilot/blob/master/solr/config/schema.xml
But after restart solr,  I checked solr schema in development it is still the old file: http://localhost:8983/solr/#/hydra-development/files?file=schema.xml
Do you know if the above is the correct file path to change the schema.xml?

@mcritchlow Never mind. I figured out.

@mcritchlow I’ve tried adding the following filter to the analyzer in solr schema.xml :
For #1,

For #2
For #3
or

And each time i restarted solr and checked the solr admin to make sure the schema.xml got updated, then reindexed the data. But it doesn’t seem working that the Blacklight facet sort result still display default lexical sorting, case insensitive and with punctuation.
Any suggestion?

Have you been able to test in a plain Solr instance to confirm that it is Blacklight that is somehow overriding the configuration changes you've made to schema.xml?
If we know for sure that it's blacklight, maybe a question in the hydra dev slack channel might get a quick answer? I'm not sure how active the blacklist irc channel is at this point. @lsitu or @VivianChu, any ideas?

@mcritchlow @hweng  I think it's a good idea to test it directly in Solr to see whether it works first.

@mcritchlow It doesn't seem that blacklight override the facet sorting, but I will check again.

@mcritchlow I've double checked blacklight facets module that it doesn't override facet sorting, which it use default facet index order as I compared it to the result of query executed from solr admin.
But I have some ideas about it, and am trying the new approach. Thanks!

@mcritchlow I got the updates to solr schema working for case insensitive, removing punctuation and forcing numbers to sort numerically. Here is the result:

A question for overriding solr default lexically sorting, how may zeros do we want to left-pad a number?

@arwenhutt Any suggestion for the above question?

@hweng a quick question on the case sensitivity change, and potentially the numerical padding/sorting. are the displayed values to the end user changing, or just the schema/sorting configuration?
For example, if an original facet value was "OCEAN" is it now going to be displayed to an end user as "ocean"? Or will it still be shown as "OCEAN" but sorted as it if were "ocean"? I believe the latter is what is going to be desirable, as I think I recall @arwenhutt noting that the capitalized values are that way for a reason.

@mcritchlow  Yes, the facet value that solr is sorting on would display "ocean".
Or will it still be shown as "OCEAN" but sorted as it if were "ocean"?  No, Solr just won't do that.
But since I've applied the filters only to facet values but not records, so if the user click the facet link to the record it still preserve the original case.

@hweng Thanks for clarifying 👍  I think that distinction is very important information for everyone to know when considering whether this solution will work for us.
@arwenhutt @gamontoya - will that be acceptable?

@mcritchlow @arwenhutt @gamontoya  From my research for the solr sorting options, the workaround solution I applied is to keep the records original fields and only apply filters to the facets that solr is sorting on.  Here you could see that the records still preserve the original fields of  "2", "10", "mom's", while the facets got removed punctuation and added padding for sorting purpose:

@mcritchlow I'm not sure I captured this correctly. Are you saying that a topic in all caps, like OCEAN would sort at "ocean" and would also display as ocean and not OCEAN?
@hweng On your topic sort example above, are you purposely asking numerical values to appear first?

@gamontoya - I think @hweng's example above does a good job illustrating the solution that she has come up with. Basically, the facet sort isn't ignoring case. It's create lower cased facet values and leaving the show values the same. moms vs Mom's
I wanted to clarify this for everyone, since I'm not sure this is a desirable outcome.

@gamontoya Yes, in solr sorting the numerical values appears before any alphabet letters a - z.

@hweng Now that part, I'm not sure I like. I prefer the numerical values after A-Z. @mcritchlow @arwenhutt Thoughts?

@arwenhutt @gamontoya From DAMS4 data, it is mostly years. Please see the following screening shot. You may not see it from browsing page, but you can view it by direct type in the url: http://library.ucsd.edu/dc/search/facet/subject_topic_sim?facet.sort=index

@arwenhutt @gamontoya If the facet sorting updates looks good to you, I will create the pull request for it. If you have any other thought, would you please comment it here? Thank you!

@hweng Can you sort alphabetic followed by numeric?

@gamontoya I thought Matt had already explained to you that the solr sorting don't have options for that. It have two options sort by index and sort by count. The sort by index is to sort by alphabetic that starts with numeric.
If you want to do very customized facet sorting which do not use solr sorting and blacklight modules, then it would be another project.

@hweng No new project here. Go ahead and make the pull request and we'll see how things look/behave.

@gamontoya Thanks!
A pull request has been submitted to https://github.com/ucsdlib/horton/pull/6

The group decided not to implement solr filters to facet ordering now. Will revisit in the future.

Discussing this with Schol Comm today: is it possible to make the filter case-insensitive, and to apply case folding to the facets at the time the keyword list is generated? I'm not sure if this is what you referring to above as rules for automatically merging keywords with different cases. It seems like the cases in which this would produce undesirable results (e.g., the acronymOCEAN gets collapsed with the keyword ocean) would occur less frequently than the cases where the records are not being correctly aggregated due to unintentional differences in capitalization.


unable to see local audio over VPN

Setup - OpenVPN and upd-proxy-2020 on <IP_ADDRESS> - ubtunu 20.04
Roon Server - on <IP_ADDRESS> - ubuntu 20.04
After starting the  OpenVPN client and then opening Roon client - the Roon client is able to find the server, but it can not find any of the local client audio devices. The client does see the audio devices on the Server LAN side.  As requested from the roonlabs community site, I have attached the pcap files and included the debug as well.  Any ideas would be appreciated.  I can ping the client from the Roon server and the server from the client with no issues.  I have tried both the macos Roon client and the IOS app and have the same issue with both.  Thanks so much for helping with this!
pcap.zip

Honestly, your pcap looks good to me.  Both client and Roon Core are sending Queries and the Core reply is being relayed back to the client.  This should be enough for Roon to discover the TCP ports used for discovering the audio endpoints.  Basically the UDP/9300 traffic is used to bootstrap everything else Roon does- including audio endpoint discovery.  The client makes a connection to the Roon Core to discover the remote endpoints (which you've stated as working) and the Core makes a connection to the client to see what endpoints it has.
You should be able to run tcpdump -i tun0 -s0 -w roon-vpn.pcap on your firewall node and then start the Roon app on your phone/laptop.  Let tcpdump run for 15seconds or so (enough time for Roon to start and another 10sec to let discovery do it's thing).
If you inspect the above pcap in Wireshark you should see your Roon Core making a connection to your phone/laptop- most likely on tcp/9200.
Here is what things look like from my phone named "ComputerInMyPocket" which has an audio endpoint named 'iPhone":

As you can see, the Core requests the endpoints (red text) and my phone returns its info (blue text).   Based on your earlier pcap, the information about your phone IP and tcp port is getting to the Core, so the most likely cause of this problem is that this connection on tcp/9200 is failing.
If you need help inspecting the pcap above, feel free to attach it here.
One thing to keep in mind... Roon is optimized for working on a high-speed LAN.  Discovery over the VPN can definitely slow things down (even if your VPN is fast).  I've regularly seen discovery of the remote audio endpoint take ~15 seconds.   And occasionally I just have to restart Roon for it to work, my guess is that there is a timing/race condition error in the Roon code which happens when there is added latency on the network.  Sadly, the closed source nature of Roon makes debugging this extremely difficult.

Hi - Attached is the pcap file generated from tcpdump.  The client is the IOS client brought up over the VPN after starting the tcpdump.  Any thoughts would be appreciated!   Thanks.
roon-vpn-pcap.pcap.zip

I don't see anything indicating a network issue in that pcap, however I don't see the attempt from the core to talk to your phone to get the audio output devices either.  So that explains why it's not showing up.  Maybe try restarting your Core?

will be closing this support ticket soon unless I hear more.


Design GitHub source code links

This ticket is to track the visual design of https://github.com/Qiskit/documentation/issues/454.
Current implementation
We simply use an external link on the same line as the code object's description. It always appears at the end of the code and is normal text - we don't do any funky floating or anything.

I suspect this design is probably fine other than weirdness with the padding. Note how the underline extends directly to the code. I couldn't fix this by adding extra whitespace in the content - it wouldn't work. I think we need to adjust the CSS.

But what is tricky about adjusting the CSS is it will impact all inline code highlighting:

Note that we're using padding-right for inline code, rather than margin-right, which would result in the background not being the shaded gray.
Original notes
What the old qiskit.org design looks like

When you click the [source] link, it takes you a new webpage on qiskit.org with a copy of the source code:

Our implementation will instead take you to GitHub.com, so be an external link.
Note how the old design handles the # icon to get the permalink for the current code object. This only happens on hover:

Which code objects have links?
Note that not every single code object has a link, For example, in the first image in this issue, only exception QiskitNatureError has it, but not its method with_traceback().
However, there are other places where methods do have their own link. (Methods are a lower information hierarchy than the class they belong to.)

So, I think the safest thing to design for is that both the top-level code object—like the class—and also the code objects one level lower—like methods—can have the link but they might not.
--
The link should probably show up on the same line as the name of the code object itself? But, it is common that the line will wrap:

Copy for the link
We discussed in a meeting that [source] might be vague. We only used that name with qiskit.org because it's what Sphinx itself uses and we can't easily change it.
For the new Qiskit docs, maybe we want something more explicit like [GitHub]? Or GitHub ↗?

@Eric-Arellano In the new figma designs, I have updated

so the padding is corrected. I think keeping it to Github instead of Source is more clear

@gracelindsell yes to that part. My doubt is whether we should be changing the behavior for all code blocks outside of API docs. Look at this screenshot:

Should that padding be there for run()? Or should it be a margin? Or less padding/margin either way?

We discussed that the padding is too big in general. Rather than 0.5rem which we think is roughly 8px, it should be about 0.25rem which would be 4px. That will impact all inline code blocks.
But independently, we also need to figure out why the GitHub text has no margin between the code block, which differs from other code blocks we have like this run() example.

@Eric-Arellano Right, any text or link that follows a code block should be 8px away from the code block, and thus 12px away from the text in the code block

Closing this in favor of https://github.com/Qiskit/documentation/issues/856. Thanks, Grace!


Fix crash caused on iOS 7 only

iOS 7 doesn't support treating translucent as a UIAppearance property.

@hanningni please review

:+1:


fix: qrcode 티켓 추가

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Manually download MNIST dataset

Spin off from #125. Let's workaround the MNIST download issue first.

/test

/test

/test
Please ignore torch18 errors.

/test

Test passed.


Create xxxx-closing-gaming-loopholes-within-the-mobile-network.md

This Helium Improvement Proposal (HIP) proposes closing gaming loopholes to help prevent gaming within the MOBILE network.

Would it make sense to have the elevation limit in meters, as for true location to distance limits?

Would it make sense to have the elevation limit in meters, as for true location to distance limits?

So I think people in the US are used to feet, and can probably reasonably estimate the height of something in feet. That's probably not the same if you switch it to meters.
So then the question is should skyhook distance be switched to feet vs meters? Maybe, my guess is skyhook defaults the value to meters, so then a calculation would need to be done to turn it into feet, so it might take a little more work, but definitely not opposed to that. Let me ask this question to Boris and see what he thinks.

Let’s please use meters. Converting to ft can be a UI  feature but everything works in meters under the hood


fix(async_hooks): initialize async hooks on patcher

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Support for PSX .m3u or .pbp files.

It's not an issue but a request. Please give support for PSX Multidisc files like .m3u or .pbp.
Thank you very much for all your incredible work. :))

Tried using  extra_ext? Comma separated list of extensions to also include in the scraper.
-extra_ext="":
scraper --help
or
/opt/retropie/supplementary/scraper/scraper --help
if you are using RetroPie.

Not enough clarification on using extra_ext. Is there an article you can link to? I'm trying to use PBP files because they're smaller and easier for multi-disc support, but I'd like to have the covers too.

I posted an example in #100

A temporary solution for ths is to rename your m3u file to pbp, then use screenscraper to scrape videos. Afterward, rename the pbp back to m3u. Use nano or notepad++ and edit the psx/gamelist.xml to reflect the changes.


Fixed "Drape Over Terrain Tileset" deleting existing overlays.

Fixes #613

Thanks for the pull request @nithinp7!

:heavy_check_mark: Signed CLA found.

Reviewers, don't forget to make sure that:

[ ] Cesium for Unreal Samples works.

The code change looks straightforward (and removes a TODO - yay!). I'd try it out tomorrow (if it is urgent for the release, it could probably be merged and only verified in the release build, because I don't see how this could break anything, but for the sake of the usual process, I'll test it ASAP).

Nah, what does "tomorrow" mean anyhow.
I tried it out, and it has the intended effect: The components are added instead of replacing the (formerly usually only one) component.

One could argue about the wording in the changelog: "Fixed an issue" sounds like a problem/bugfix. I'd say it is just a changed behavior to accommodate the (now newly supported) multiple overlays.

The "Drape Over Terrain Tileset" button now adds the raster overlay component to the tilesets, instead of replacing all existing raster overlay components, to better support workflows where multiple raster overlays are combined

or so...

A technical aside: I actually added
  UE_LOG(
      LogCesiumEditor,
      Warning,
      TEXT("Now there are %d"),
      pTilesetActor->GetInstanceComponents().Num());

in the changed function (and log outputs in OnComponentCreated and OnComponentDestroyed), because - despite the correct state in the editor UI - I didn't believe that these components could not be added multiple times. But apparently, the concept of "Instance components" is exactly that: When pressing the button multiple times, the old instance is destroyed, and replaced with the new one. I'll still have to figure out what the "black magic" is behind that: How are two "instance components" determined to be "equal" in that regard?

Excessively clicking buttons and deleting components caused some "odd rendering state" to appear that also could not be fixed with RefreshTileset, but for now, I have to assume that this is a general problem stemming from the default layer identifier being Overlay0 for all of them, and the resulting textures to be essentially "random".
(Thiese are things that I'd like to stress-test further, but ... ... ... time ... ... and this is unrelated to this PR in any case...)


Error code

python3 expoit.py -T site.com -p 80 -u admin -p pass

I need the specific exploit like CVE-2014-8722-Exploit

your code is error str not int

In the auth_url and variable exploit_url sir

I need the CVE-ID, the variables are named the same everywhere. I need the specific Vulnerability number, otherwise I can not help you.

Closed due to non response


1,000 Most Depended

This gist has a list of versions of packages in the 1,000 most-depended-upon that lack compliant license metadata:
https://gist.github.com/bdad2a474fbe415407f98f624e0ccbd8

Code for the scripts that came up with that list: https://github.com/jslicense/need-license-correction.js

The obvious ones were covered by #6. Still many left, including many that just say "BSD".


Location Autocomplete is not working

When I type into the location field
I should get some autocomplete  terms after typing a few characters
This issues is in production along with the new release.

This is still an issue.

This is a configuration issue.  Fixed on staging so far by adding config.geonames_username = '<name>' to config/initializers/sufia-secret.rb.
Need to set up a user for production and document the setup in dltdocs

Configuration changes went online this morning with the reboot.  Location autocomplete is now working.  Directions for GeoNames integration are documented in DLTdocs


Where can I find the server-end code?

The server-end code is not included in this repo, which makes me impossible to run the example correctly.

The prerequisites for this tutorial is to have a

A LoopBack-powered server application.
https://docs.strongloop.com/display/public/LB/iOS+SDK#iOSSDK-Prerequisites

You can follow the loopback getting started to create one.
https://github.com/strongloop/loopback-getting-started

It seems that the loopback-getting-started repo has nothing to do with this client example. It's a coffee shop example, while the client is something about cars...

@hikui loopback-getting-started is only related to loopback-getting-started-intermediate. loopback-ios-getting-started is a separate series altogether (that's why they are not in the same section at https://github.com/strongloop/loopback-example).

Sorry for the confusion. I don't mean loopback-getting-started is the backend for loopback-ios-getting-started. I mean you can create your own back end following that example.

@hikui Were you able to get your app running?

Closing this issue due to inactivity.  Feel free to reopen if this issue still exists.  Thanks.


Xorg: Handle archive.mesa3d.org URLs

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[x] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew typecheck with your changes locally?
[x] Have you successfully run brew tests with your changes locally?

The mesa formula currently uses a mesa.freedesktop.org/archive/ stable URL but it redirects to archive.mesa3d.org. Upstream links to archive.mesa3d.org as the location to find Mesa releases, so we should update the formula URLs accordingly.
This updates the Xorg strategy to be able to handle archive.mesa3d.org URLs, so livecheck will continue to be able to check mesa without needing a one-off livecheck block. [This would also work for mesalib-glw (which has an archive.mesa3d.org stable URL) but that formula is deprecated.]

The latest push reworks URL_MATCH_REGEX to deduplicate the trailing /(?:[^/]+/)*#{MODULE_REGEX.source.strip} part. This maintains existing behavior but makes the regex a little easier to read.


Current workflow allows partial releases when CI fails for a single distro

During the v0.102.0 we ran into an issue with #560 that caused the release of core and contrib distros to fail (see https://github.com/open-telemetry/opentelemetry-collector-releases/pull/560#issuecomment-2147343522).
In the release, I cancelled the k8s distro release https://github.com/open-telemetry/opentelemetry-collector-releases/actions/runs/9366469958/job/25784146751. This would have passed, since we don't support this distro on Windows.
I cancelled it since we use the same tag for all distros and it would have led to an awkward state where we release different distros from different versions of the same tag, but I was lucky: had I not been paying attention, we would have had to have two partial releases.
Is this a problem? What should we do to address this if so?

We talked a little about this topic in https://github.com/open-telemetry/opentelemetry-collector-releases/issues/429.  In my opinion we should be releasing each distro with its own tag push, instead of releasing all distros based on the same tag push.
This allows each distro to be released completely independently.  In your situation the k8s distro would have been allowed to finish its release without issues while you worked on fixing Contrib and Core.


Support for Nested Interfaces

We should support nested interfaces like
export interface LoremProps {
	lorem: LoremProps;
	ipsum: string;
}

to ensure a larger support of properties in projects.
Those nested interface should be displayed with a headline + description (from the JSDoc annotation) and the properties of the interface below.

We kind-of have this via code properties, should we close?

Yeah, let's do that for the moment!


Feature/bootstrap behat

I am not sure if u need it, but here it is :)

I also pushed fix for #6 and #2, but tommorow in case im leaving for few day to fix something.

Thanks for your awesome work @defrag. I've added some (minor) comments.
Behat tests was a need!

@dunglas I fixed most of the things from comments. The rest i can do next week, unless u want to fix them yourself :P Cheers.

Thanks! It can wait next week (I'm very busy for now).

@dunglas ive pushed cs fixes u asked for.

Thanks @defrag

@defrag can you add some lines in the README about the form extension? Then I'll release a new version of the bundle.


#139 add region_name to create_bucket

#139 add region_name to create_bucket

I think region_name=None should be an optional argument to mkdir, and that the fallback default in this code should only be used as the fallback for the None. What do you think?

Changed it to this comment https://github.com/boto/boto3/issues/781#issuecomment-241916064

btw. is it also possible to copy from user a bucket to a user b bucket, with different permissions?

Yep, I like that.
Please also add the parameter to the docstring in mkdir. I have no idea why py35, in particular, is failing, but it looks unrelated, perhaps a different version of the boto/moto stack. It would probably be reasonable to not test on py35 any more.

is it also possible to copy from user a bucket to a user b bucket, with different permissions?

I don't know - I don't see why not.

is it also possible to copy from user a bucket to a user b bucket, with different permissions?
I don't know - I don't see why not.

it seams only over first copying to local disk :/
https://stackoverflow.com/questions/41939170/copy-ami-from-one-aws-account-to-another-aws-account-using-boto

OK, going to merge this, and should open an issue to look into the py35 failure.


set list link font, add line breaks, style and color pills

What this PR does / why we need it

For Resources page Use Case list items:

Styles, colors, and positions right-hand pills
Styles resource link and border

Still to do:

Style resource icon
Style "new" flag

Which issue(s) this PR fixes

Fixes: VOSS-114 (partial progress)
Describe testing done for PR

Special notes for your reviewer

@tdomingo looks good


Add --strip_debug_ops flag to remove prints, asserts, etc.

Adds a flag to tensorflowjs_converter which removes debug operations from the Graph before saving in tf.js format.
Specifically, this adds a debug_stripper to the Grappler optimization procedure to remove Print, Assert, and CheckNumerics operations.
Fixes this issue

This change is

Added documentation to the README and enabled by default.

Done


Added support for Authentication using HTTP basic

1.Added support for Authentication using HTTP basic
2.Modify the readme document
3.add gradle.properties file.

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

overall LGTM, please address the questions. Thanks for your contribution

#16 includes this feature.

Thanks for your contribution! Right now closed by #16


[ENH] use of scenarios in test_persistence_via_pickle

This PR refactors test_persistence_via_pickle to use scenarios.
This brings it in line with all the other tests in test_all_estimators, it seems for some reason test_persistence_via_pickle got overlooked.
This also removes the _make_args dependency from test_all_estimators entirely.

This was already included with #2142, so is no longer needed.
Must have forgotten and made the same change twice...

included with merged https://github.com/alan-turing-institute/sktime/pull/1854, thus no longer needed separately.


Proposes ThreadLocal optimizations for the default current trace context

Follows https://github.com/kamon-io/Kamon/pull/553
Thanks @dpsoft @trask cc @trustin

Note I ran benchmarks a lot and it won't come out in normal single threaded instrumentation, but could be very helpful for instrumentation that schedules a lot cc also @koji @anuraaga

this breaks inheritable thread local tests :P we don't encourage them, but it is default.. have to think it through

closing for now as it isn't going to work without reconsideration


Unify LLVM vcpkg build scripts

[x] Updated LLVM build script to latest upstream vcpkg

Moved binaries into <prefix>/tools/llvm (affects downstream where it is assumed binaries line under bin)
Added some more LLVM feature flags

[x] Unified LLVM build scripts into one file

See Notes section below

[x] Backported some LLVM patches

mainly for Windows support that we don't test yet)

[x] Correctly detect CXX Compiler ID, since it's a bit weird with the vcpkg script
[x] Tested on latest commit of upstream vcpkg (but will wait to update that later)

When creating future PRs, the llvm-vcpkg-common/CONTROL file should have an updated Version: or Port-Version: when anything is modified there. I think the Version: should be updated if upstream vcpkg has a big update, otherwise, if it's specific to our fork, we can just update Port-Version.
Notes
Unfortunately, this isn't as elegant as I'd like, since I think the only way to do this is to create a kind of meta package that installs the helper file that is used by all versions of LLVM, which has some subtleties when modifying it and trying to re-install LLVM. The best way is to explicitly
./vcpkg/vcpkg remove --triplet=x64-linux-rel @overlays.txt llvm-vcpkg-common
./vcpkg/vcpkg install --triplet=x64-linux-rel @overlays.txt llvm-10

when doing local development.

Hmmm. Looks like I need to do some Mac testing. I think there's an issue with the vcpkg clang not being able to find its own c/c++ headers.

Hmmm. Looks like I need to do some Mac testing. I think there's an issue with the vcpkg clang not being able to find its own c/c++ headers.


Add Denodo connection

Following work done at #11882

Thank you for the driver config update.
We will test it in 21.3.5.


amtterm: 1.4 -> 1.6-1

Motivation for this change
Update
Things done

[x] Tested using sandboxing
(nix.useSandbox on NixOS,
or option build-use-sandbox in nix.conf
on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] Linux

[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

Compiles but I do not have the hardware to test this.

ping @ehmry


Add support for java17 to validation check

Description
AWS now supports java17 runtime https://aws.amazon.com/about-aws/whats-new/2023/04/aws-lambda-java-17/
Motivation and Context
Currently failing validation despite java17 being available
Breaking Changes
None
How Has This Been Tested?
None

There is no need in this validation (it is already commented out).