[BUG] ZeRO++ hpZ on llama2-7b gets zero loss

Describe the bug
With DeepSpeed built from source on latest master branch (i.e. https://github.com/microsoft/DeepSpeed/pull/4906 is in), hpZ llama2-7b and the training loss will appear 0 starting the 3rd training step:
{'loss': 2.1364, 'learning_rate': 0.0, 'epoch': 0.0, 'max_steps': 50, 'global_step': 1, 'current_step_time_seconds': 19.497754335403442, 'average_step_time_seconds': 19.497755765914917, 'estimated_time_to_completion_seconds':<PHONE_NUMBER>298309, 'estimated_total_training_time_seconds':<PHONE_NUMBER>957458}
{'loss': 2.0157, 'learning_rate': 2e-05, 'epoch': 0.0, 'max_steps': 50, 'global_step': 2, 'current_step_time_seconds': 24.733116388320923, 'average_step_time_seconds': 22.11543607711792, 'estimated_time_to_completion_seconds': 1061.5409317016602, 'estimated_total_training_time_seconds': 1105.771803855896}
{'loss': 0.0, 'learning_rate': 2e-05, 'epoch': 0.0, 'max_steps': 50, 'global_step': 3, 'current_step_time_seconds': 24.691705465316772, 'average_step_time_seconds': 22.974192539850872, 'estimated_time_to_completion_seconds': 1079.787049372991, 'estimated_total_training_time_seconds': 1148.7096269925437}
{'loss': 0.0, 'learning_rate': 2e-05, 'epoch': 0.0, 'max_steps': 50, 'global_step': 4, 'current_step_time_seconds': 25.519466638565063, 'average_step_time_seconds': 23.61051106452942, 'estimated_time_to_completion_seconds': 1086.0835089683533, 'estimated_total_training_time_seconds': 1180.525553226471}

This however cannot be reproduced on GPT2.
To Reproduce
Steps to reproduce the behavior:

Training script:

import transformers
import datasets
import trl
from dataclasses import dataclass, field
import peft
import torch
import time
import callbacks

MODEL_NAME = "meta-llama/Llama-2-7b"

def formatting_func(example):
    output_texts = []
    for i in range(len(example['question'])):
        choices = ""
        for j in range(len(example["choices"][i])):
            choices += f"{j+1}. {example['choices'][i][j]}\n"
        output_texts.append(f"""Below is a question and subject and multiple choice answers, choices separated by a comma. Please select the best answer for the question.

### Question:
{example["question"][i]}

### Subject:
{example["subject"][i]}

### Choices:
{choices}

### Answer:
{example["answer"][i]}"""
)
    return output_texts

def main():
    parser = transformers.HfArgumentParser(transformers.TrainingArguments)
    training_args = parser.parse_args_into_dataclasses()
    dataset = datasets.load_dataset('cais/mmlu','all')
    dataset_train, dataset_eval = dataset['auxiliary_train'], dataset['test']

    config = transformers.AutoConfig.from_pretrained(MODEL_NAME)
    config.num_hidden_layers = 9
    model = transformers.AutoModelForCausalLM.from_config(config)

    tokenizer = transformers.AutoTokenizer.from_pretrained(MODEL_NAME)
    tokenizer.pad_token = tokenizer.eos_token

    trainer = trl.SFTTrainer(
        model=model,
        tokenizer=tokenizer,
        train_dataset=dataset_train,
        eval_dataset=dataset_eval,
        formatting_func=formatting_func,
        max_seq_length=512,
        args=training_args
    )
    trainer.train()

if __name__ == "__main__":
    main()

DS config:

{
    "bf16": {
      "enabled": "auto"
    },
    "optimizer": {
        "type": "AdamW",
        "params": {
            "lr": "auto",
            "betas": "auto",
            "eps": "auto",
            "weight_decay": "auto"
        }
    },

    "scheduler": {
        "type": "WarmupLR",
        "params": {
            "warmup_min_lr": "auto",
            "warmup_max_lr": "auto",
            "warmup_num_steps": "auto"
        }
    },

    "zero_optimization": {
        "stage": 3,
        "overlap_comm": true,
        "contiguous_gradients": true,
        "stage3_gather_16bit_weights_on_model_save": true,
        "zero_hpz_partition_size": 4
    },

    "gradient_accumulation_steps": "auto",
    "gradient_clipping": "auto",
    "train_batch_size": "auto",
    "train_micro_batch_size_per_gpu": "auto",
}

launch script:

export LOCAL_WORLD_SIZE=4
export NUM_NODES=2
export WORLD_SIZE=$((LOCAL_WORLD_SIZE * NUM_NODES))
export NCCL_DEBUG=INFO

torchrun --nnodes=$NUM_NODES --nproc-per-node=$LOCAL_WORLD_SIZE \
      --rdzv_endpoint="$MASTER_ADDR:$MASTER_PORT" --rdzv_id=1234 --rdzv_backend=c10d \
      src/train.py \
      --bf16 True \
      --max_steps 50 \
      --per_device_train_batch_size 2 \
      --per_device_eval_batch_size 2 \
      --gradient_checkpointing \
      --save_strategy "no" \
      --learning_rate 2e-5 \
      --logging_steps 1 \
      --report_to none \
      --output_dir "$OUTPUT_FULL_PATH" \
      --deepspeed zero3_hpz.json

This is tested on llama2-7b-hf using MMLU dataset.
Expected behavior
convergence should be the same as that without hpZ
ds_report output
--------------------------------------------------
DeepSpeed C++/CUDA extension op report
--------------------------------------------------
NOTE: Ops not installed will be just-in-time (JIT) compiled at
      runtime if needed. Op compatibility means that your system
      meet the required dependencies to JIT install the op.
--------------------------------------------------
JIT compiled ops requires ninja
ninja .................. [OKAY]
--------------------------------------------------
op name ................ installed .. compatible
--------------------------------------------------
 [WARNING]  async_io requires the dev libaio .so object and headers but these were not found.
 [WARNING]  async_io: please install the libaio-devel package with yum
 [WARNING]  If libaio is already installed (perhaps from source), try setting the CFLAGS and LDFLAGS environment variables to where it can be found.
async_io ............... [NO] ....... [NO]
fused_adam ............. [NO] ....... [OKAY]
cpu_adam ............... [NO] ....... [OKAY]
cpu_adagrad ............ [NO] ....... [OKAY]
cpu_lion ............... [NO] ....... [OKAY]
 [WARNING]  Please specify the CUTLASS repo directory as environment variable $CUTLASS_PATH
evoformer_attn ......... [NO] ....... [NO]
fused_lamb ............. [NO] ....... [OKAY]
fused_lion ............. [NO] ....... [OKAY]
inference_core_ops ..... [NO] ....... [OKAY]
cutlass_ops ............ [NO] ....... [OKAY]
quantizer .............. [NO] ....... [OKAY]
ragged_device_ops ...... [NO] ....... [OKAY]
ragged_ops ............. [NO] ....... [OKAY]
random_ltd ............. [NO] ....... [OKAY]
 [WARNING]  sparse_attn requires a torch version >= 1.5 and < 2.0 but detected 2.0
 [WARNING]  using untested triton version (2.0.0), only 1.0.0 is known to be compatible
sparse_attn ............ [NO] ....... [NO]
spatial_inference ...... [NO] ....... [OKAY]
transformer ............ [NO] ....... [OKAY]
stochastic_transformer . [NO] ....... [OKAY]
transformer_inference .. [NO] ....... [OKAY]
--------------------------------------------------
DeepSpeed general environment info:
torch install path ............... ['/home/jobuser/.local/lib/python3.10/site-packages/torch']
torch version .................... 2.0.0+cu118
deepspeed install path ........... ['/home/jobuser/.local/lib/python3.10/site-packages/deepspeed']
deepspeed info ................... 0.13.2+feffed1, feffed1, master
torch cuda version ............... 11.8
torch hip version ................ None
nvcc version ..................... 11.8
deepspeed wheel compiled w. ...... torch 2.0, c

System info (please complete the following information):

OS: CentOS7
GPU count and types: 2 nodes each with 8 A100s (only enabled 4 each)
Interconnects: no we only get ethernet for inter-node comm
Python version: 3.10

Launcher context
torchrun launched on 2 nodes separatedly
Additional context
This can be reproduced with transformers==4.37.2
Docker context
unfortunately no but it's a simple one w/ cu118 and py310
Will update this as soon as I have a more concrete finding.

Update: was trying to reproduce with a more lightweight example using this test case added by @HeyangQin by simply adding model.gradient_checkpointing_enable() after loading model with from_pretrained but the loss is consistent between zero3 and zeropp, no hanging observed either (gist here) 😓

was trying to reproduce with a much simplified training loop without HF trainer but we can't observe the nan loss problem:
import deepspeed.comm as dist
import deepspeed
from deepspeed.runtime.zero.config import DeepSpeedZeroConfig
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from torch.utils.data import DataLoader
import numpy as np
import pytest
import transformers

MODEL_NAME = "/shared/public/models/llama-2-7b-hf"
DS_CONFIG = {
    'bf16': {'enabled': True},
    'optimizer': {
        'type': 'AdamW',
        'params': {
            'lr': 2e-05,
            'betas': [0.9, 0.999],
            'eps': 1e-08,
            'weight_decay': 0.0
        }
    },
    'scheduler': {
        'type': 'WarmupLR',
        'params': {
            'warmup_min_lr': 0,
            'warmup_max_lr': 2e-05,
            'warmup_num_steps': 0
        }
    },
    'zero_optimization': {
        'stage': 3,
        'overlap_comm': True,
        'contiguous_gradients': True,
        'sub_group_size': 1e9,
        'reduce_bucket_size': 4096*4096,
        'stage3_prefetch_bucket_size': 4096*4096*0.9,
        'stage3_max_live_parameters': 1e9,
        'stage3_max_reuse_distance': 1e9,
        'stage3_gather_16bit_weights_on_model_save': True,
        'zero_hpz_partition_size': 4
    },
    'gradient_accumulation_steps': 1,
    'gradient_clipping': 1.0,
    'steps_per_print': float('inf'),
    'train_batch_size': 16,
    'train_micro_batch_size_per_gpu': 2,
    'wall_clock_breakdown': False,
}

def load_and_prepare_data(model_name):
    """Load model, tokenizer and dataset, and prepare data loader."""
    from datasets import load_from_disk

    # Load model and tokenizer
    config = transformers.AutoConfig.from_pretrained(model_name)
    config.num_hidden_layers = 9
    model = transformers.AutoModelForCausalLM.from_config(config).to(torch.bfloat16)
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    tokenizer.pad_token = tokenizer.eos_token

    # Load and tokenize dataset
    dataset = load_from_disk("/shared/public/data/yudai/wikitext_sample")

    def tokenize_function(examples):
        # Tokenize and ensure 'labels' are the same as 'input_ids'
        tokenized_output = tokenizer(examples["text"], padding="longest", truncation=True, return_tensors='pt', max_length=256)
        tokenized_output["labels"] = tokenized_output["input_ids"].clone()
        return tokenized_output

    tokenized_dataset = dataset.map(tokenize_function, batched=True).filter(lambda x: x['text'])
    tokenized_dataset.set_format('torch', columns=['input_ids', 'attention_mask', 'labels'])

    # Create data loader
    data_loader = DataLoader(tokenized_dataset, batch_size=2, shuffle=False)
    return model, data_loader

def get_loss(model, data_loader, config_dict, step=500):
    """Train the model and calculate average loss."""
    # Initialize DeepSpeed
    model, _, _, _ = deepspeed.initialize(model=model, model_parameters=model.parameters(), config=config_dict, dist_init_required=True)
    dist.barrier()
    model.train()

    # Training loop
    losses = []
    for n, batch in enumerate(data_loader):
        if n >= step:
            break
        batch = {k: v.to(model.device) for k, v in batch.items()}
        outputs = model(**batch)
        loss = outputs.loss
        if torch.distributed.get_rank() == 0:
            print(f"loss: {loss}")
        model.backward(loss)
        model.step()
        losses.append(loss.item())

    return np.nanmean(losses[-100:])

if __name__ == "__main__":
    torch.manual_seed(0)
    model, data_loader = load_and_prepare_data(model_name)
    zeropp_loss = get_loss(model, data_loader, DS_CONFIG)

In the above script I explicitly set DS config to be the same as what HF/accelerate automatically generates.

Some more update:
I recorded the ds_id of the param that behaves differently, and added logging here for this param and a "normal" param every time they're enqueued for allgather. It appears that the second allgather on this param within each step will take place before backprop (while the 2nd allgather on other params are, as expected, after backward starts):
        def all_gather_coalesced(params: Iterable[Parameter],
                                 forward: bool = True,
                                 safe_mode: bool = False,
                                 quantize: bool = False) -> AllGatherCoalescedHandle:

            # fetches from nvme if the partition is not available and in nvme
            self._ensure_availability_of_partitioned_params(params)

            if self.num_partitions == 1:
                return _no_gather_coalesced(params)

            for param in params:
                if param.ds_status != ZeroParamStatus.NOT_AVAILABLE:
                    raise RuntimeError(param.ds_summary())
                param.ds_status = ZeroParamStatus.INFLIGHT
                if torch.distributed.get_rank() == 0:
                    if param.ds_id == 39:
                        print("this param")
                    elif param.ds_id == 2:
                        print(param.ds_id)

---starting forward---
2
[2024-02-06 18:36:21,904] [WARNING] [parameter_offload.py:87:_apply_to_tensors_only] A module has unknown inputs or outputs type (<class 'transformers.cache_utils.DynamicCache'>) and the tensors embedded in it cannot be detected. The ZeRO-3 hooks designed to trigger before or after backward pass of the module relies on knowing the input and output tensors and therefore may not get triggered properly.
10
this param
---finish forward---
this param
10
2
---finish backward and step---
{'loss': 11.2538, 'learning_rate': 0.0, 'epoch': 0.0}
  2%|█▎                                                                  | 1/50 [00:04<03:34,  4.37s/it]starting forward
2
10
this param
this param
---finish forward---
10
2
---finish backward and step---
{'loss': 10.9484, 'learning_rate': 2e-05, 'epoch': 0.0}
  4%|██▋                                                                 | 2/50 [00:07<02:43,  3.41s/it]starting forward
2
10
this param
this param
---finish forward---
NaN detected in module.model.layers.4.self_attn.v_proj.weight during after forward, param stage ZeroParamStatus.INFLIGHT, param ds id 39
10
2
---finish backward and step---
{'loss': 10.9312, 'learning_rate': 2e-05, 'epoch': 0.0}
  6%|████                                                                | 3/50 [00:09<02:27,  3.14s/it]

I would like to work on this.

The issue can be reproduced even if we initialize the 2nd tensor as torch.rand, which seems to break our hypothesis.
Add a check for the 2nd tensor before all gather. And we can observe that param_ds_tensor does contain nan.

if torch.isnan(param_ds_tensor).any().item():
    print("param ds tensor contains nan!!!")
    exit()

handles = _dist_allgather_fn(
    param_ds_tensor.to(get_accelerator().current_device_name()),
    param_buffer,
    ds_process_group,
)

param ds tensor contains nan!!!

Add a nan check in the if condition again to see if it could be due to async problem

if torch.isnan(param_ds_tensor).any().item():
    import time
    time.sleep(2)
    print(torch.isnan(param_ds_tensor).any().item())
    print("param ds tensor contains nan!!!")
    exit()

param ds tensor contains nan!!!
False

It means that the ds tensor contains nan in the beginning, but after 2 seconds, the nan is gone!!

Remove the above two check and add a check after 2nd partitioning. In this case, the nan doesn’t happen (what???)

if torch.isnan(param.ds_secondary_tensor).any().item():
 print("param ds tensor contains nan after partition!!!")
 exit()
print_rank_0(f"{param.ds_id} partitioned type {param.dtype} dev {param.device} shape {param.shape}",
          force=False)

copy_ is non-blocking if it is d2d

Instead of injecting nan check in deepspeed code, i moved the check to huggingface trainer. I added checks in multiple places, including “before forward”, “after forward”, “before backward”, “after backward”, “before step”, and “after step”. I observed that nan happens at “after backward”, which means during backward, the weights get mutated to NaN, thus causing NaN in grad. Technically, backward shouldn't change weights at all. It is likely that the collective ops messed up the weights.

With torch.cuda.synchronize() added before all gather, if we tune stage3_param_persistence_threshold to zero, we can still observe nan issue.

NaN issue is not reproducible with a ~7B linear model

Some questions that bother us and our hypothesis
Question: Why adding the check “after 2nd partitioning” can prevent nan issue, but adding the check “before all gather” still makes the issue present?
Hypothesis:
“torch.isnan(tensor).any().item()” essentially copies the data from device to host thus serves as a sync point. However, “After 2nd partitioning” is running on the forward thread but “Before all gathering” is running on the backward thread. If we put the check at the same thread where the copying happens, it will sync due to .item(). On the other hand, if we put the check at a different thread, .item() does not wait.
Question: Why initializing 2nd tensors with torch.randn doesn’t fix the issue?
Hypothesis 1:
[copying                ]
[all gather        ]
Even if we initialize 2nd tensors as non-nan, if we probe the values of the tensor during copying, we will get some nan values.
Hypothesis 2:
The all gather doesn’t get any nan, but instead it gets a randn value, and then uses the value for optimizer step, causing nan in the updated weights.

I meet the same problem, my loss is zero when I use zero++

@czczup the fix has been out in the latest release. Could you try use 0.13.5 and see if it still happens?


Wait for connection hooks to finish before calling HTTP hooks

Problem Description
This issue is in response to your comment https://github.com/mitmproxy/mitmproxy/issues/4207#issuecomment-907014592

Ah, you are hitting a special case here: We are not waiting for server_connected to complete before notifying the HTTP layer that the connection has been established (I didn't think this would be useful to anyone and it surely isn't faster). If you have a concrete use case here please open a separate issue, this should be straightforward to adjust. In fact at the moment it's a bit more complicated because we don't block.

To summarize: I'm doing rather heavy work in every hook and communicate with a different service (gRPC calls to Node.js that process the hooks). When using @concurrent (and probably same with async hooks) hooks such as server_connected and request are racing each other (I think that's actually the only case). With synchronous hooks this cannot happen because whatever I do in server_connected blocks the entire proxy.
import time
from mitmproxy.script import concurrent

@concurrent
def client_connected(data):
    print('>>> client_connected')
    time.sleep(2)
    print('<<< client_connected')

@concurrent
def server_connect(data):
    print('>>> server_connect')
    time.sleep(2)
    print('<<< server_connect')

@concurrent
def server_connected(data):
    print('>>> server_connected')
    time.sleep(2)
    print('<<< server_connected')

@concurrent
def request(flow):
    print('>>> request')
    time.sleep(2)
    print('<<< request')

@concurrent
def response(flow):
    print('>>> response')
    time.sleep(2)
    print('<<< response')

@concurrent
def client_disconnected(data):
    print('>>> client_disconnected')
    time.sleep(2)
    print('<<< client_disconnected')

@concurrent
def server_disconnected(data):
    print('>>> server_disconnected')
    time.sleep(2)
    print('<<< server_disconnected')

As you can see server_connected and request are interleaved.
>>> client_connected
<<< client_connected
>>> server_connect
<<< server_connect
>>> server_connected
>>> request
<<< server_connected
<<< request
>>> response
<<< response
>>> client_disconnected
<<< client_disconnected
>>> server_disconnected
<<< server_disconnected

Proposal
Wait for the connection hooks to finish before continuing with the HTTP layer.
Alternatives
I could leave the connection event synchronous so that the always block and finish. But depending on the number of clients and servers this would mostly diminish the effect of making all other hooks async or concurrent.

If you remove the blocking: bool = False lines in https://github.com/mitmproxy/mitmproxy/blob/main/mitmproxy/proxy/server_hooks.py and then change
https://github.com/mitmproxy/mitmproxy/blob/83b43b93a7ac6cf2bfe557964fd63b376e158e25/mitmproxy/proxy/server.py#L179-L185
to
await self.handle_hook(server_hooks.ServerConnectedHook(hook_data))

and remove
https://github.com/mitmproxy/mitmproxy/blob/83b43b93a7ac6cf2bfe557964fd63b376e158e25/mitmproxy/proxy/server.py#L204
you should be done. I don't have the time to test that properly, but if it works for you please go ahead and open a PR. :)

Thanks, that looks easy enough. I'll look into it!


Unable to turn on Yeelight bulb

Home Assistant release with the issue:
66.1 but I noticed it in 65.x as well
Last working Home Assistant release (if known):
Operating environment (Hass.io/Docker/Windows/etc.):
Docker
Component/platform:
Yeelight https://www.home-assistant.io/components/light.yeelight/
Description of problem:
Unable to turn on the light with the switch from the UI as well as with automations. The automation was previously working and has had no changes.
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
light:
  - platform: yeelight
    devices:
      <IP_ADDRESS>:
        name: Arianna's lamp

Traceback (if applicable):
Unable to turn the bulb on: {'code': -5000, 'message': 'general error'}

Additional information:

Is you bulb's firmware up to date? Also make sure that lan control is turned on and the ip is correct

Unsure, will check tonight. But nothing was changed other than updating
Home Assistant.
On Fri, Apr 6, 2018, 10:51 AM Timmo<EMAIL_ADDRESS>wrote:

Is you bulb's firmware up to date? Also make sure that lan control is
turned on and the ip is correct
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/home-assistant/home-assistant/issues/13718#issuecomment-379296022,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADh05bizhYnSnCK2Qz-lYUTP5UmGtYkKks5tl48KgaJpZM4TKEp7
.

Now, with version 0.73.0 and 0.73.1 this Yeelight bulb doesn't work :(
It seems probably related with this error:
"pyowm 2.8.0 has requirement requests<2.19,>=2.18.2, but you'll have requests 2.19.1 which is incompatible."

Same Issue in 0.79.3
Cannot adjust the color temp for Yeelight celling light
with error:
Error when calling <function YeelightLight.set_colortemp at 0xa577b300>: {'message': 'general error', 'code': -5000}

And will disconnect from light after several tries.
I think APIs of light have been changed.

Running fine ... in 0.79.3 too :)

Noticed that color temp actually can be changed, but UI was wrongly mapping the temp to data sent to light.
My model is YLXD05YL (Jiaoyue 450)
Except functions the light don't support, The only trouble I have is temp cannot be mapping correctly.

Right of middle of bar will cause general error
Obviously Color temp scroll bar is mapping incorrectly, actual color temp is zoomed out.
Could someone help to resolve that problem? I will very appreciate it if that problem has been solved.
This model can be added to the support list after that : )
Anyway, thanks to developers of home assistant, you made great platform for the world!


\ReCaptchaSecureToken\ReCaptchaToken::currentTimestamp()

You've used round() which returns a float type. This does not reliably return integer output as specified in Google's API. You're better off forcing it to be decimal like so:
return number_format(microtime(true), 3, '', '');

Whilst that does return a string, its format is guaranteed, Google accepts it without issue, and casting to int would overflow on 32-bit systems.

The JSON number type makes no distinction between integral and floating point values. So a compliant JSON parser should treat the values 12.0 and 12 exactly the same way. However, there is a distinct JSON string type. A compliant JSON parser may treat the values "12" and 12 as distinct values.
Can you give an example in which round($value) would return a value that would not have zero precision, as specified in the documentation? Further, although undocumented, PHP seems to treat zero-precision floats as integers within json_encode(). So functionally, json_encode(['a' => 1.0]) === json_encode(['a' => 1]).
Finally, it should be noted that there is no "Google API" for the secure token format, only example code. Even in a hypothetical the case that round() does not behave as documented, it follows that (a) PHP's "large numerical type" is float, (b) float becomes a JSON number within json_encode(), and thus (c) it is better to represent numbers using the type float rather than with the string type.
I'm going to close this issue because I think that should satisfactorily answer the question, but if you can give me a contradictory example I will re-open it.


Old EF series - Removed dead link to unavailable article

Internal Review
Contributes to fix #491
Removed link to blog under more resources section.  The blog is no longer available.

Just removed a single link, and verified in review build, so going right to merge.


Update exception filter heading and TOC

Also cleaned up some self linking sections. GH will put a link icon over these when hovering and none of the other sections were self linked. Happy to pull out that commit if there was a reason for this.

Thanks for this @agrberg!


my website

this is my website you can change accordingly ,please don't mark spam i am a begginer

this project is about making contributions...maybe explore about open source contribution a bit :)


scoop hook arguments are broken

Describe the bug

Steps to To Reproduce

run 'scoop checkup'
See error

Expected behavior
Full Output

Version
0.10.2
Additional context
something happens with 'scoop status' command

@AtifChy i just found this issue too, sound like he changed sfsu hook now it always require at least one param to work.
For example :
> scoop checkup
error: unexpected argument 'checkup' found

Usage: sfsu.exe checkup [OPTIONS]

For more information, try '--help'.
> scoop checkup ''
✅ Git is installed
✅ Main bucket is installed
✅ Windows Developer Mode is enabled
✅ Long paths are enabled
✅ NTFS is the filesystem of the Scoop directory

Which mean you need to pass something for it, empty string by '' or "", in order it to work.
see more #639

It seems something is wrong with the Scoop hook, I'll have a look and fix this ASAP.

This should be fixed in the latest release


tic-tac-toe game flutter

Description
I created a complete tic-tac-tow multiplayer game in Flutter.
Fixes # (issue)
Type of change
Added a tic-tac-toe game.
Please delete options that are not relevant.

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

How Has This Been Tested?
The application has been tested on an android emulator.
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[x] Manual testing

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules

Check the PR only subfolder is added not the code


Nothing Renders If There Isn't A Light In The Scene

Right now the rendering code within Engine::draw() doesn't even run if there is no light in the scene. The desired behavior would be for all meshes to render but with ambient light only. The draw loop should be changed to pass an empty slice (or empty iterator?) when there are no lights, and the draw code within polygon should be changed to still render meshes but with only ambient lighting if there are no lights.

This is currently fixed on the render_reform branch.


Redesign and reorganise menus

Description:
New design for both desktop and mobile menus, please make these layouts and hide menu items that will not be available yet

Home (menu item takes to dashboard)
Share sensors
Compare
Reports
My Sensors
Settings
Account

Notice in screenshot the active menu item colour when user is on that specific page
Notice arrows noting submenus and arrows for external links
Dark/light mode has moved under App Settings menu
Buy sensors takes user to ruuvi.com/products/, if language FI use link ruuvi.com/fi/tuotteet
Help takes user to ruuvi.com/support, if language FI use link ruuvi.com/fi/tuki/
Contact support opens email app with SUBJECT Ruuvi Station Web Feedback, TO field<EMAIL_ADDRESS>What to measure takes user to ruuvi.com/ideas/, if language FI use link ruuvi.com/fi/ideat/

@io53 the new mobile menu is glitching a bit on iPhone Safari

Safari mobile fixed, also language strings pull request added.

QA passed


test all 38 user GPIO pins

Signed-off-by: Massimiliano Giacometti<EMAIL_ADDRESS>Refers to this issue

@mattvenn :  You'll need to negotiate that with @shalan .  We had a discussion about this a few days ago, and we agreed that we needed additional tests to cover the functions available to the user project, such as exercising the GPIO from the user side for input, output, and bidirectional modes.  So we are acutely aware that this needs to be done.

Thank you everyone for your efforts on this. At this time, due to the age of this issue and other changes that have happened since, we have decided to close this PR without merging it. In some cases this also means there is now a better or other recommended approach, or possible the PR otherwise relates to a deprecated mode of use. Reviewed by @marwaneltoukhy @DavidRLindley @algofoogle.


Filling a slot in a form using the from_entity does not work if an overlapping entity is extracted

Rasa version: 1.2.5
Python version: 3.6
Operating system (windows, osx, ...): Ubuntu (WSL)
Issue:
Filling a slot in a form using the from_entity does not work if another entity type is extracted before it. I have a contact form where I ask the email of a user. When I enter<EMAIL_ADDRESS>Spacy detects it as a PERSON while duckling correctly identifies it as an email. The problem is that the slot is not filled with the email entity from Duckling.
When I enter<EMAIL_ADDRESS>Spacy does not recognize this as an entity and therefore, only the Duckling entity is taken into account.
I would have expected the slot to still be filled with the entity I specified in the slot mapping even though there is another overlapping entity detected.
My slot mapping is:
{
    ...,
    "user_email": [self.from_entity(entity="email")]
}

The conversation then looks like:

The story extracted from the story endpoint is:
* form: None: [Nico@dmx.de](PERSON)[Nico@dmx.de](email)
    - form: form_contact
    - slot{"requested_slot": "user_email"}
* form: None: [nico@dmx.de](email)
    - form: form_contact
    - slot{"user_email"<EMAIL_ADDRESS>
Error (including full traceback):
2019-09-03 19:29:58 DEBUG    rasa_sdk.forms  - Request next slot 'user_email'
2019-09-03 19:29:58 DEBUG    rasa_sdk.executor  - Finished running 'form_contact'
<IP_ADDRESS> - - [2019-09-03 19:29:58] "POST /webhook HTTP/1.1" 200 6968 0.179287
2019-09-03 19:30:21 DEBUG    rasa_sdk.executor  - Received request to run 'form_contact'
...
2019-09-03 19:30:21 DEBUG    rasa_sdk.forms  - Validating extracted slots: {}
2019-09-03 19:30:22 DEBUG    rasa_sdk.forms  - Request next slot 'user_email'
2019-09-03 19:30:22 DEBUG    rasa_sdk.executor  - Finished running 'form_contact'
<IP_ADDRESS> - - [2019-09-03 19:30:22] "POST /webhook HTTP/1.1" 200 6912 0.286317
2019-09-03 19:39:42 DEBUG    rasa_sdk.executor  - Received request to run 'form_contact'
...
2019-09-03 19:39:47 DEBUG    rasa_sdk.forms  - Trying to extract requested slot 'user_email' ...
2019-09-03 19:39:47 DEBUG    rasa_sdk.forms  - Got mapping '{'type': 'from_entity', 'entity': 'email', 'intent': [], 'not_intent': []}'
2019-09-03 19:39:47 DEBUG    rasa_sdk.forms  - Successfully extracted<EMAIL_ADDRESS>for requested slot 'user_email'
2019-09-03 19:39:47 DEBUG    rasa_sdk.forms  - Validating extracted slots: {'user_email'<EMAIL_ADDRESS>
Command or request that led to error:

Content of configuration file (config.yml) (if relevant):
language: "en"
pipeline:
  - name: "SpacyNLP"
  - name: "SpacyTokenizer"
  - name: "SpacyEntityExtractor"
    dimensions: ["PERSON", "MONEY", "DATE"]
[...]
  - name: "SpacyFeaturizer"
[...]
  - name: "DucklingHTTPExtractor"
    url: [...]
    dimensions: ["number", "email", ...]
    timezone: "America/New_York"
[...]

Thanks for raising this issue, @tmbo will get back to you about it soon✨
Please also check out the docs and the forum in case your issue was raised there too 🤗

Mhm don't directly know what is going wrong here. @Ghostvv do you have an idea why this might fail?

That is very strange. It seems that on the first call the form doesn't try to extract email, because there is no Trying to extract requested slot 'user_email' ... logger statement


Make 'gutils' a dependency of funky so you can get rid of many of the functions provided by the 'utils' package

The gutils module can be found here: https://github.com/bbugyi200/scripts/tree/master/pymodules/gutils

I've decided that this is not worth the extra dependency.


Using gotoAndPlay with lib.stage & nested MovieClips

Hello,
I'm trying to use Pixi-Animate and I'm running into issues with gotoAndPlay. When looking at the Javascript file generated by Adobe Animate, I see that the Animate MovieClips inherit the PIXI MovieClip class. It's odd though (and maybe this is simply a misunderstanding of Javascript): I cannot call gotoAndPlay on lib.stage (or any other nested MovieClips). When I look at the Prototype for the object, I see gotoAndPlay (screenshot 1), but not in the instances themselves (screenshot 2). If I call lib.stage.gotoAndPlay("frame_label") it doesn't work. Could you please shed some light on how to work with the main stage timeline and nested timelines with Pixi-Animate? Thank you very much!
Prototype:

lib.stage:

The reason is because lib.stage is a reference to the stage MovieClip, you actually need to create an instance of it using new lib.stage(). However, because all the assets associated with that stage need to be preloaded, the easiest thing to do is to checkout the HTML that's generated when you publish. This creates a PIXI renderer for you.
var scene = new PIXI.animate.Scene(300, 480, {
  view: document.getElementById("stage"),
  backgroundColor: 0xffffff,
  antialias: true
});
scene.load(lib.stage);

If you just want to preload and add to an existing PIXI renderer, use the PIXI.animate.load.
const renderer = new PIXI.autoDetectRenderer(1280, 720);
const root = new PIXI.Container();
PIXI.animate.load(lib.stage, root);
function update() {
     renderer.render(root);
     update();
}
update();

Thanks for the quick response! Sorry, I'm still a bit confused. In the first PIXI renderer scenario, I do not see gotoAndPlay in the scene instance either. How can I play the scene from frame labels using the generated HTML? Or from nested MovieClip timelines? I see my frame labels ('welcome' and 'loading') being inherited in the .js file, but I'm not sure how to access them.
    lib.stage = MovieClip.extend(function () {
		timeline = this;
        MovieClip.call(this, {
            duration: 2,
            framerate: 24,
            labels: {
                loading: 0,
                welcome: 1
            }
        });

Thank you!

I think I've figured my problem out (but I'm still glad to know if there's a better way to do this)...
I can reference the MovieClip's labels using:
scene.stage.children[0].gotoAndPlay("loading");


Implement an optimized merkle trie

This pull requests adds the optimized Merkle Trie. This faster implementation can be used for the state interface by calling ethereum.optimized.monkey_patch_optimized_state() during startup.
There is currently one regression. Equality comparisons between optimized Trie/State objects do not work (you have to call root/state_root.
Testing
The code in optimized/test_trie.py achieves 100% branch coverage on the core logic (excluding a few impossible cases).
I have not added any other tests for the optimized logic. You can run the test suite using the optimized state implementation by adding
import ethereum.optimized

ethereum.optimized.monkey_patch_optimized_state()

to src/ethereum/__init__.py.
Performance
These tests were done on a trie containing 1 million random keys using cpython.
Any operation on the unoptimized trie: 66s
Adding 60 keys on the optimized trie: 3.7ms (62μs per key)
It is unlikely that performance will be a problem on tries that fit in memory.
Cute Animal Picture

Codecov Report

Merging #307 (553af73) into master (14d371b) will decrease coverage by 0.11%.
The diff coverage is 88.86%.

@@            Coverage Diff             @@
##           master     #307      +/-   ##
==========================================
- Coverage   93.32%   93.20%   -0.12%
==========================================
  Files          29       37       +8
  Lines        1737     1958     +221
==========================================
+ Hits         1621     1825     +204
- Misses        116      133      +17

Flag
Coverage Δ

unittests
93.20% <88.86%> (-0.12%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

src/ethereum/frontier/utils/json.py
0.00% <0.00%> (ø)

src/ethereum/optimized/state.py
30.43% <30.43%> (ø)

...c/ethereum/frontier/vm/instructions/environment.py
74.41% <50.00%> (+7.75%)
:arrow_up:

src/ethereum/optimized/__init__.py
71.42% <71.42%> (ø)

src/ethereum/frontier/utils/address.py
80.00% <80.00%> (ø)

src/ethereum/frontier/utils/hexadecimal.py
87.50% <87.50%> (ø)

src/ethereum/utils/numeric.py
92.30% <92.30%> (ø)

src/ethereum/frontier/state.py
96.00% <96.00%> (ø)

src/ethereum/optimized/trie.py
96.94% <96.94%> (ø)

src/ethereum/frontier/trie.py
98.38% <99.04%> (-0.55%)
:arrow_down:

... and 21 more

Continue to review full report at Codecov.

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

Two quick questions (haven't started reviewing yet):

How would you feel about moving this out of src/ethereum so that it doesn't get included in the rendered documentation (ex. src/ethereum_state)?
Should we manually implement the __eq__ method for the relevant classes?

How would you feel about moving this out of src/ethereum so that it doesn't get included in the rendered documentation (ex. src/ethereum_state)?

This sounds like a good idea, I just didn't know where to put it. If you tell me where you think it should go, I'll move it there.

Should we manually implement the __eq__ method for the relevant classes?

I'll push this.


misunderstanding with year of 52nd week in datavendorweb

This code
from datetime import datetime
from findatapy.market import Market, MarketDataRequest, MarketDataGenerator

market = Market(market_data_generator=MarketDataGenerator())

md_request = MarketDataRequest(
    start_date=datetime(2016,1,1),
    finish_date=datetime(2016,2,1),
    fields=['bid','ask'], vendor_fields=['Bid','Ask'], freq='tick',
    data_source='fxcm', tickers=['EURUSD'], vendor_tickers=['EURUSD'])

df = market.fetch_market(md_request)

causes an uninitialized year variable at line 960 in  findatapy.market.datavendorweb since 52nd is the firstly used week.
Should use datetime.datetime.isocalendar() to get week number and year instead of that workaround.
findatapy.market.datavendorweb
def week_range(self, start_date, finish_date):
    weeks = pandas.bdate_range(start_date - timedelta(days=7), finish_date+timedelta(days=7), freq='W')
    week_year = []

    for w in weeks:
        year,week = w.isocalendar()[0:2]
        week_year.append((week, year))

log snipet
2017-12-06 23:11:18,992 - findatapy.market.datavendorweb - INFO - Request FXCM data
2017-12-06 23:11:18,992 - findatapy.market.datavendorweb - INFO - About to download from FXCM... for EURUSD
[...]
  File "/usr/local/lib/python3.6/dist-packages/findatapy/market/datavendorweb.py", line 960, in week_range
    week_year.append((week, year))
UnboundLocalError: local variable 'year' referenced before assignment

Hi @rkahun - I've made the changes you suggested and committed it GitHub. The example no longer fails.

OK, thanks for it


[Fix #3256] Highlight closing brace in Multiline...BraceLayout cops

The closing brace is what the cops are reporting, so that's what we should highlight. It's easy to misunderstand the reports otherwise.

👍


Remove User YAML download

Remove the option to download user/s as yaml
Code changes required for #2526

The code is fine but I don't know why we're making this change... https://github.com/rancher/dashboard/issues/2526#issuecomment-815274939

Closing. There's been some debate about this PR, we can reopen if required in future (see #2662)


Option to append (preserve) old changelog

I have an old manual changelog, but I now want to automate the changelog generation, while keeping the old changelog.
conventional-commits package has such an option, but this option is to be used by the parent plugin, which is this github action.

This module has options append and releaseCount. However, it doesn't read your previous changelog. Reasons being:

The old logs is just to be appended or prepended to the newly generated logs, which is a very simple thing that could be done in the parent module.
We want it to be very flexible for the parent module. You could create a readable stream from the file or you could just read the file.
We want the duty of this module to be very minimum.

From conventional-changelog-core
So adding a line which appends to the old changelog would be awesome.

Hi, this would be a awesome addition indeed! PR is welcome :)

Hi, this would be a awesome addition indeed! PR is welcome :)

Does nobody want to work on this?
I am too lazy/focused on other things 😜


Package version checks happen with respect to the base package version rather than the full package version

🐛 Bug
When checking for package versions, comparisons happen with respect to the base package version rather than the full package version in _compare_version here - https://github.com/PyTorchLightning/pytorch-lightning/blob/0561fd6925a0f4aa6d119c5eb451dfb6e598f83f/pytorch_lightning/utilities/imports.py#L46.
In our NVIDIA pytorch containers, we usually use a pytorch version that is a little older than the corresponding facebook pytorch version. It has a version tag like '1.10.0a0+0aef44c'. Since the version checker only checks the base version, this version will be equal to 1.10.0 but should instead be < 1.10.0.
Similarly, a check for pytorch-lightning 1.5.0rc0 versus 1.5.0 returns True for an equality check incorrectly as in the notebook below:
https://colab.research.google.com/drive/1HvWVVTK8j2Nj52qU4Q4YCyzOm0_aLQF3?usp=sharing
To Reproduce

PyTorch Lightning Version (e.g., 1.5.0rc0):
PyTorch Version (e.g., 1.10)

cc: @ericharper @okuchaiev

This was very recently changed to enable testing for the 1.10 release candidate. Context: https://github.com/PyTorchLightning/pytorch-lightning/pull/9808#discussion_r722776072
cc @daniellepintz

@MaximumEntropy I see your point - it definitely makes sense that the dev version should be considered < the stable version. I can send a PR to add a flag to the function which will fix this


Bug: Despawn Timers Appear w/ ALT When Turned Off

To Reproduce

Open Ground Items config
See that despawn timers are off
Hold ALT
See despawn timers on ground items

Expected behavior
Despawn timers not showing anywhere when turned off
Environment (please complete the following information):

OS: Windows 10
RuneLite version: <IP_ADDRESS>
Launcher version: 1.6.0

I believe it was coded that way intentionally. Nevertheless, if we changed behavior, it would re-open #9558

Oops, didn't search through closed issues. Thanks for pointing out that it may be intentional. I'll let you all discuss and close this if need be.

Well, is there some reason you'd want to see them not appear when ALT is pressed? They appear for much the same reason that the rest of the overlay appears when it is pressed--so that players can be aware of it.

Personally, it was just annoying. After awhile, I thought that it may not have been intentional and filed this issue. Since then, I've learned it was intentional.

Well, based on the original issue description, this sounds like despawn timers are still showing when they are disabled in config completely? If that is not the case, this issue description is horribly worded.


Add with-sitemap-and-robots-express-server-typescript example

Pulling out a few core points from the readme...
This example builds from /src into /dist, managing the different expectations of express.js (es5, commonjs) and next.js (es6) by using a pair of tsconfig.json files, both of which are run by npm run build-ts or any of the other npm targets.
Hot module reloading is largely but not completely wired up (nodemon is watching /dist but tsc isn't set up to watch /src and transpile changes in /src to /dist automatically (that's mainly because I wasn't sure how to start both nodemon and a pair of tsc watchers and be confident all would get shut down when the user killed dev mode). The readme suggests running npm run build-ts manually in another window to push changes from /src into /dev and on into the browser.
tslint is also wired up via npm run tslint

I just saw your comment

I'm not sure how I feel about having a -typescript version of many examples though 🤔 in general js code should run in a typescript environment afaik.

I generally find turning on typescript is just exactly enough work to be a real task (this example and the with-mobx-state-tree example were definitely each multi-hour tasks for me, mostly not having to do with *.js -> *.ts porting but rather with getting the tsc build stuff wired up). Express definitely took enough configuration work to set up that I wouldn't want everyone to have to burn that time, but the downside was at this time I didn't see a good way to do it without explicitly transpiling from *.ts files to *.js files, which I don't think pure javascript users would want.

Also - did I just by mistake trash the with-mobx-state-tree-typescript PR I submitted? I saw you approved it, so I went ahead and deleted my branch but I suspect I may have screwed things up in doing so just now. I still have the original source and can resubmit if you'd like.


sponsortoken "error blocked due to public exposure"

Describe the bug
after restarting evcc, i got an error about the sponsortoken "token blocked due to public exposure, please generate new token or contact<EMAIL_ADDRESS>for support"
i'm using the trial token from the evcc site
Steps to reproduce

...
Configuration details
sponsortoken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJldmNjLmlvIiwic3ViIjoidHJpYWwiLCJleHAiOjE3MjY2NTM2MDAsImlhdCI6MTcyNTg3NjAwMCwic3BlIjp0cnVlLCJzcmMiOiJtYSJ9.cR5Gfj9vnHxnGQoho5GIDJlo5tL6exD5yI5vSm2YbVE

Log details
evcc:/opt/evcc# ./evcc -c ./evcc.yaml -l trace
[main  ] INFO 2024/09/13 22:58:01 evcc 0.130.9
[main  ] INFO 2024/09/13 22:58:01 using config file: ./evcc.yaml
[db    ] INFO 2024/09/13 22:58:01 using sqlite database: /root/.evcc/evcc.db
[db    ] TRACE 2024/09/13 22:58:01 SELECT count(*) FROM sqlite_master WHERE type='table' AND name="settings" -1 <nil>
[db    ] TRACE 2024/09/13 22:58:01 SELECT sql FROM sqlite_master WHERE type IN ("table","index") AND tbl_name = "settings" AND sql IS NOT NULL order by type = "table" desc 1 <nil>
[db    ] TRACE 2024/09/13 22:58:01 SELECT * FROM `settings` LIMIT 1 -1 <nil>
[db    ] TRACE 2024/09/13 22:58:01 SELECT * FROM `settings` 6 <nil>
[main  ] INFO 2024/09/13 22:58:01 listening at :7070
[main  ] FATAL 2024/09/13 22:58:01 sponsortoken: rpc error: code = Unknown desc = token blocked due to public exposure, please generate new token or contact<EMAIL_ADDRESS>for support
[main  ] FATAL 2024/09/13 22:58:01 will attempt restart in: 15m0s
[cache ] TRACE 2024/09/13 22:58:01 fatal: <nil>

What type of operating system are you running?
 Will fix asap.

Same since yesterdays update

i'm having the same problem. Any idea for a solution?

Fixed

There is no Update available since 0.130.9

There is no Update available since 0.130.9

just reboot your instance

Works. Fantastic.

There is no Update available since 0.130.9

just reboot your instance

same issue, reboot not effected


new MEAS/runtime value approach

Treating runtime values like ordinary variables seems to generate a lot of difficult edge cases.  Although it would be nice to handle this in a general and elegant manner, the more pressing need is to get something adequate working soon... So we're going to take a different approach.

The outcome of measurements will not be "returned" from measurements.  They will be addressed to an external variable that is assigned asynchronously.
The values assigned to these external variables can only be accessed via a new function, called VALUE (until I think of a better name).  VALUE can only be used in a predicate.
VALUE blocks execution until the measurement is finished and the external variable is marked valid.

This is easier to understand with an example.
The original pseudocode for pyqgl2 runtime conditionals looked like:
if MEAS(q):
    do_something

or
v = MEAS(q)
if v:
    do_something

These are replaced with something like:
MEAS(q, 'v')
if VALUE('v'):
    do_something

Note that it's possible to "cheat" this approach by doing something like:
MEAS(q, 'v')
if VALUE('v'):
    x = something
else:
    x = something_else

But in this case we can detect that the assignment of x takes place within a runtime conditional, and mark x as runtime as well (and then decide whether it's a simple case to handle, or halt the compiler with an error).
In this example, we use 'v' as the name of the location to store the result of the measurement.  If 'v' is just a string, then a corresponding location will be allocated in memory, large enough to store as many bits as there are qubits in q.  It is also possible to specify a location explicitly, or with different parameters (i.e. a mapping between qubit names and bit offsets in the memory).  Details TBD.

The current working draft of the syntax is show below.  It's still a work in progress; it doesn't feel mnemonic yet.
I've introduced QValue and QMeas as a shorthand for naming a runtime value and using it as the destination of a measurement, i.e.
v = QValue(size=4, name='foo')
QMeas(q, qval=v)
if VALUE(v):
   do_something


payload not clear when doing client.loop()

Hi
I experienced that the payload is not cleared .
For Example: having a long payload and next callback a shorter one.
But length is still as the long one and strange char are added.
How to avoid this?
oid callback(char* topic, byte* payload, unsigned int length) {   Serial.print(topic);   Serial.print("] ");   char msg[length + 1];   for (int i = 0; i < length; i++)    {     msg[i] = (char)payload[i];    }
payload send: formerly was longer:
Topic>ESP/LED----+----1----+----2   < lmsg>20<
now shorter payload: ----+----1
payload: Topic>ESP/LED----+----1�K� @  16<
What am I doing wrong?
even clearing the msg does not solve it
for( int i = 0; i < sizeof(msg);  ++i )    msg[i] = (char)0;
Thanks T

Stangewise I increaded payload length from 5 to 6 than 7.
Once length is 8 payload length is identified as 16 with strange char at the end....
I am confused.
I am not an expert working with  pointer variables........

user error: solved:
forgot terminating the payload:
  msg[length] = '\0';


Setup Commerce Integration (CIF) on Universal/Sites

We need to configure the CIF connector to allow for product selection within the AEM authoring experience. This data will eventually feed a list of SKU's to the Product Carousel


Fixed formatting of forgot password page

I like it! Looks good! Can we please move the 'Email' label into the text field itself, so it's consistent with our other /user templates, and center that field?

Margins / padding of the 'Email' text inside the textbox are still different on the forgot password page vs the sign in / sign up pages -- can you ensure the right styles are applied to the form elements so that they're all consistent?

Ok looks good -- one more thing though, somehow the file app/helpers/questions_helper.rb snuck into your last commit. Can you please remove those changes, as they do not have anything to do with this feature?


AmigaOS Support

There's no *fetch for AmigaOS.
Will we see support for AmigaOS (especially OS 3.1-3.9)?
That's would be great, please consider, thanks!

What's the latest version of bash available on AmigaOS? Also, what's the easiest way for me to boot up a VM to test on?

Right now the only optimized sources for Bash I've found are for version 2.01. That could be problematic.
The easiest way would be with WinUAE. It's an Amiga emulator that behaves pretty much like a modern VM would.
If you are still interested in taking a shot at it, I could put together a bundle with the ROM, OS and WinUAE to make it a little easier.

Neofetch requires bash 3.2+ so I don't think it's possible to add support for AmigaOS.


issue with opus100/en-fr dataset

Hi
I am running run_mlm.py code of huggingface repo with opus100/fr-en pair, I am getting this error, note that this error occurs for only this pairs and not the other pairs. Any idea why this is occurring? and how I can solve this?
Thanks a lot  @lhoestq for your help in advance.
thread '<unnamed>' panicked at 'index out of bounds: the len is 617 but the index is 617', /__w/tokenizers/tokenizers/tokenizers/src/tokenizer/normalizer.rs:382:21 note: run withRUST_BACKTRACE=1` environment variable to display a backtrace
63%|██████████████████████████████████████████████████████████▊                                   | 626/1000 [00:27<00:16, 22.69ba/s]
Traceback (most recent call last):
File "run_mlm.py", line 550, in
main()
File "run_mlm.py", line 412, in main
in zip(data_args.dataset_name, data_args.dataset_config_name)]
File "run_mlm.py", line 411, in
logger) for dataset_name, dataset_config_name
File "/user/dara/dev/codes/seq2seq/data/tokenize_datasets.py", line 96, in get_tokenized_dataset
load_from_cache_file=not data_args.overwrite_cache,
File "/user/dara/libs/anaconda3/envs/fast/lib/python3.7/site-packages/datasets/dataset_dict.py", line 448, in map
for k, dataset in self.items()
File "/user/dara/libs/anaconda3/envs/fast/lib/python3.7/site-packages/datasets/dataset_dict.py", line 448, in
for k, dataset in self.items()
File "/user/dara/libs/anaconda3/envs/fast/lib/python3.7/site-packages/datasets/arrow_dataset.py", line 1309, in map
update_data=update_data,
File "/user/dara/libs/anaconda3/envs/fast/lib/python3.7/site-packages/datasets/arrow_dataset.py", line 204, in wrapper
out: Union["Dataset", "DatasetDict"] = func(self, *args, **kwargs)
File "/user/dara/libs/anaconda3/envs/fast/lib/python3.7/site-packages/datasets/fingerprint.py", line 337, in wrapper
out = func(self, *args, **kwargs)
File "/user/dara/libs/anaconda3/envs/fast/lib/python3.7/site-packages/datasets/arrow_dataset.py", line 1574, in _map_single
batch, indices, check_same_num_examples=len(self.list_indexes()) > 0, offset=offset
File "/user/dara/libs/anaconda3/envs/fast/lib/python3.7/site-packages/datasets/arrow_dataset.py", line 1490, in apply_function_on_filtered_inputs
function(*fn_args, effective_indices, **fn_kwargs) if with_indices else function(*fn_args, **fn_kwargs)
File "/user/dara/dev/codes/seq2seq/data/tokenize_datasets.py", line 89, in tokenize_function
return tokenizer(examples[text_column_name], return_special_tokens_mask=True)
File "/user/dara/libs/anaconda3/envs/fast/lib/python3.7/site-packages/transformers/tokenization_utils_base.py", line 2347, in call
**kwargs,
File "/user/dara/libs/anaconda3/envs/fast/lib/python3.7/site-packages/transformers/tokenization_utils_base.py", line 2532, in batch_encode_plus
**kwargs,
File "/user/dara/libs/anaconda3/envs/fast/lib/python3.7/site-packages/transformers/tokenization_utils_fast.py", line 384, in _batch_encode_plus
is_pretokenized=is_split_into_words,
pyo3_runtime.PanicException: index out of bounds: the len is 617 but the index is 617
`

@lhoestq  I also deleted the cache and redownload the file and still the same issue, I appreciate any help on this. thanks

Here please find the minimal code to reproduce the issue @lhoestq  note this only happens with MT5TokenizerFast
from datasets import load_dataset
from transformers import MT5TokenizerFast

def get_tokenized_dataset(dataset_name, dataset_config_name, tokenizer):
    datasets = load_dataset(dataset_name, dataset_config_name, script_version="master")
    column_names = datasets["train"].column_names
    text_column_name = "translation"
    def process_dataset(datasets):
        def process_function(examples):
            lang = "fr"
            return {"src_texts": [example[lang] for example in examples[text_column_name]]}
        datasets = datasets.map(
            process_function,
            batched=True,
            num_proc=None,
            remove_columns=column_names,
            load_from_cache_file=True,
        )
        return datasets
    datasets = process_dataset(datasets)
    text_column_name = "src_texts"
    column_names = ["src_texts"]
    def tokenize_function(examples):
            return tokenizer(examples[text_column_name], return_special_tokens_mask=True)
    tokenized_datasets = datasets.map(
            tokenize_function,
            batched=True,
            num_proc=None,
            remove_columns=column_names,
            load_from_cache_file=True
    )

if __name__ == "__main__":
     tokenizer_kwargs = {
        "cache_dir": None,
        "use_fast": True,
        "revision": "main",
        "use_auth_token": None
     }
     tokenizer = MT5TokenizerFast.from_pretrained("google/mt5-small", **tokenizer_kwargs)
     get_tokenized_dataset(dataset_name="opus100", dataset_config_name="en-fr", tokenizer=tokenizer)
~

as per https://github.com/huggingface/tokenizers/issues/626 this looks like to be the tokenizer bug, I therefore, reported it there https://github.com/huggingface/tokenizers/issues/626 and  I am closing this one.


Update @types/selenium-webdriver dependency

Fixes issue #3879 (https://github.com/angular/protractor/issues/3879)
Updating @types/selenium-webdriver dependency to<EMAIL_ADDRESS>which added back the protractor.Key.chord method.

I signed it!

LGTM but @cnishina is the type expert


Optionally display post images as a gallery

I wanted to be able to optionally display the image gallery for images in a post page bundle, so I've added a simple if statement around the gallery, with instructions to add show_gallery: true to the front matter if you want it enabled.

Sorry, this PR includes an error. I'll close this and send you one with working code 🤦


Whether the mirror repository address of drone/controller supports modification

environment

drone version： 1.2
git server： gitea
kubernetes： v1.15.1

image pull failed
drone-job-12-fe7phdp8folzz5pmq-6jssn   0/1     ImagePullBackOff
...
Back-off pulling image "drone/controller:1.2.3"
Error: ImagePullBackOff

I ran the drone on Kubernetes. After the build task was triggered, the drone created the job correctly in kubernetes. However, because Kubernetes failed to pull the drone/controller docker image in the internal network environment, whether the image address supports modification can be changed. Private registry address

:wave: hey there, per our issue template, for end-user support please use one of our support channels, such as our chatroom or our mailing list.


⚠ Bofrost.de has degraded performance

In 8dcd698, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 812 ms

Resolved: Bofrost.de performance has improved in 69d2814 after 6 minutes.


New Extension DB-IP

Allows geo-lookup of IPv4 and IPv6 addresses with db-ip.com

merged via git-am in 78f4928
I'm sorry for the very long delay getting to this pull request, and for this copy-and-pasted message:
Thansk for your contribution! To get through my backlog, I'm now merging all reasonable pull requests.
Once done, I'm going to move all user-contributed extensions into a new contrib directory in the repo, so you will eventually find it there. After that, in due course, I will move some contributions back over to the main directory to be published.
Please bear with while I am working though a lot of pull requests at the moment.


Fix typos in README

Fixed a few typos and grammar

Hi @raghav71094, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. Real humans will now evaluate your PR.

TTYL, MSBOT;


Refactor model helpers into own file

This PR refactors all helpers that access models to its own file so we can directly use helpers at places where the models are not loaded yet (e.g. AppConfig => apps.py).
Ref: https://github.com/inventree/InvenTree/pull/4824#discussion_r1209448718

Error that would appear if we use helpers in AppConfig
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.10/threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/django/utils/autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/django/core/management/commands/runserver.py", line 110, in inner_run
    autoreload.raise_last_exception()
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/django/utils/autoreload.py", line 87, in raise_last_exception
    raise _exception[1]
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 375, in execute
    autoreload.check_errors(django.setup)()
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/django/utils/autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/django/apps/config.py", line 212, in create
    mod = import_module(mod_path)
  File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/workspaces/InvenTree/InvenTree/plugin/apps.py", line 13, in <module>
    from InvenTree.helpers_model import getSetting
  File "/workspaces/InvenTree/InvenTree/InvenTree/helpers_model.py", line 14, in <module>
    from djmoney.contrib.exchange.models import convert_money
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/djmoney/contrib/exchange/models.py", line 12, in <module>
    class ExchangeBackend(models.Model):
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/django/db/models/base.py", line 108, in __new__
    app_config = apps.get_containing_app_config(module)
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/django/apps/registry.py", line 253, in get_containing_app_config
    self.check_apps_ready()
  File "/workspaces/InvenTree/dev/venv/lib/python3.10/site-packages/django/apps/registry.py", line 136, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

This is a nice refactor. Will be interesting to see if https://github.com/inventree/InvenTree/pull/4814 passes CI with these changes integrated in

@wolflu05 do you think you could also expand tests to have full coverage for the refactored code? Or should we put this into a new issue?

Sorry, tbh getting the tests cover 100% of the helpers_model.py looks not that easy. It contains the disabled test for the http status api that sometime failed. If you want to give it a go feel free to commit to my branch or make your own pr, but I don't think I can solve this easily.

Thanks @wolflu05 for the improvements here :)


Set DOXYGEN_GENERATE_MAN config option to generate manpages

@athre0z Thanks for the quick response. It's also my pleasure to make them go into Fedora official repository. I first issue the package review ticket of zycore-c (it is on the way of this), and then zydis.


Chao/bump version

I do have a kernel update to latest stable (101 for non-rt) here as well, but we need to merge my watchdog fixes first (it uses them).

And U-Boot is also more complex, but I have a queue. Blocker here is a new release for SE Boot.

I do have a kernel update to latest stable (101 for non-rt) here as well, but we need to merge my watchdog fixes first (it uses them).

I suggest we unify none-rt and rt kernel version based on 100.
cause for 101 do not have a formal rt patch currently.  unify the kernel version I think could reduce the test work.

We didn't unify the past release as well, so I see no benefits, rather risks to miss relevant fixes for the majority of users (those of the example image).

FWIW, latest U-Boot 2022.01 queue now at https://github.com/siemens/u-boot/commits/jan/iot2050-v2022.01. But, as I said, it depends on a new SE Boot release.

In order to move forward, I would suggest to drop kernel and u-boot from this PR. Those can be updates later once their preconditions are fulfilled.

I agree with you. But we'd like to start our OSS clearing, it's better to finally determine the u-boot and kernel version when we do next release.
currently, I proposal to unify the none-rt and rt kernel based on 5.10.100.
firstly,it would reduce our testing work, another it would reduce oss clearing time. only do one kernel version OSS.
Although there are benefits to separating the kernel versions. consider it comprehensively, maybe it is better unify kernel version for the current
Another, for u-boot, we would bump up to latest U-Boot 2022.01.

Testing efforts will not be different between 5.10.100 and 5.10.102 because the RT kernel is a different thing, so you unfortunately gain almost nothing by using the same base version /wrt testing. And OSS license report for both stable versions will be identical. I'm all for moving forward with updating recipes, therefore: Please review/ack #266 ASAP.
I think we agree that U-Boot mainline version is set. You can help with moving forward there by looking at the additional patch queue likely needed (see what I shared).

I  have dropped the u-boot and kernel and rebase with  master.

@jan-kiszka upgrade TF-A and optee to the latest version. do you have any comments on this upgrade.

Oops，CI is down. the repo  in the meta-coral git://salsa.debian.org/python-team/packages/python-gast.git has some problem.
has reported to meta-coral

I've done these updates locally as well. TF-A seems fine, OP-TEE now gives us
I/TC: OP-TEE version: 3.16.0 (gcc version 10.2.1 20210110 (Debian 10.2.1-6)) #1 Thu Jan  1 00:00:42 UTC 1970 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html

which still needs clarification. I was already in contact with TI.

Oops，CI is down. the repo in the meta-coral git://salsa.debian.org/python-team/packages/python-gast.git has some problem. has reported to meta-coral

Seems the entire https://salsa.debian.org/ is down. We could either 1) wait for Debian fix it or 2) remove meta-coral out of the ci temporary.
I think Debian will fix the website soon, so I stick with opt 1.

I've done these updates locally as well. TF-A seems fine, OP-TEE now gives us
I/TC: OP-TEE version: 3.16.0 (gcc version 10.2.1 20210110 (Debian 10.2.1-6)) #1 Thu Jan  1 00:00:42 UTC 1970 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html

which still needs clarification. I was already in contact with TI.

@AsuraZeng , Since atf, optee and u-boot are within the bootloader scope, we can leave them together in future PR.
So for this one I think we can go w/o them.

Regarding salsa: https://micronews.debian.org/2022/1645992519.html - they are aware, but it seems to take some effort.

@jan-kiszka  could the verisons for OPTEE & ATF & u-boot be freezed for oss clearing at this moment?

I think the base versions can be froze, yes, but patches will possibly come on top. I'm still waiting for an SE Boot release to move forward with an update, though.

I think the base versions can be froze, yes, but patches will possibly come on top. I'm still waiting for an SE Boot release to move forward with an update, though.
so for the optee would upgrade to 3.16.0 and tf-a would upgrade to 2.6.
OK, for this PR, I would drop the optee and tf-a.  and  we would start to do oss based on the version.

@AsuraZeng did you check back then whether Node RED still works? I'm currently getting
Mar 17 11:18:36 iot2050-debian node-red[488]: internal/modules/cjs/loader.js:818
Mar 17 11:18:36 iot2050-debian node-red[488]:   throw err;
Mar 17 11:18:36 iot2050-debian node-red[488]:   ^
Mar 17 11:18:36 iot2050-debian node-red[488]: Error: Cannot find module 'express'
Mar 17 11:18:36 iot2050-debian node-red[488]: Require stack:
Mar 17 11:18:36 iot2050-debian node-red[488]: - /usr/lib/node_modules/node-red/red.js
Mar 17 11:18:36 iot2050-debian node-red[488]:     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
Mar 17 11:18:36 iot2050-debian node-red[488]:     at Function.Module._load (internal/modules/cjs/loader.js:667:27)
Mar 17 11:18:36 iot2050-debian node-red[488]:     at Module.require (internal/modules/cjs/loader.js:887:19)
Mar 17 11:18:36 iot2050-debian node-red[488]:     at require (internal/modules/cjs/helpers.js:74:18)
Mar 17 11:18:36 iot2050-debian node-red[488]:     at Object.<anonymous> (/usr/lib/node_modules/node-red/red.js:32:15)
Mar 17 11:18:36 iot2050-debian node-red[488]:     at Module._compile (internal/modules/cjs/loader.js:999:30)
Mar 17 11:18:36 iot2050-debian node-red[488]:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
Mar 17 11:18:36 iot2050-debian node-red[488]:     at Module.load (internal/modules/cjs/loader.js:863:32)
Mar 17 11:18:36 iot2050-debian node-red[488]:     at Function.Module._load (internal/modules/cjs/loader.js:708:14)
Mar 17 11:18:36 iot2050-debian node-red[488]:     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12) {
Mar 17 11:18:36 iot2050-debian node-red[488]:   code: 'MODULE_NOT_FOUND',
Mar 17 11:18:36 iot2050-debian node-red[488]:   requireStack: [ '/usr/lib/node_modules/node-red/red.js' ]
Mar 17 11:18:36 iot2050-debian node-red[488]: }

Found the issue: the nmp-shrinkwarp.json files were wrongly created (missing --global-style) - or you used an npm version that had problems with this way.
Will regenerate everything, but that may mean we will get some newer packages now.

Found the issue: the nmp-shrinkwarp.json files were wrongly created (missing --global-style) - or you used an npm version that had problems with this way.
Will regenerate everything, but that may mean we will get some newer packages now.

Haven't fully tested.
the method I use is refer :https://github.com/siemens/meta-iot2050/blob/master/classes/npm.bbclass#L6
I think this is a right way, it contains the option --global-style.
But I run a debian image using docker on the x86 machine to  create these files.

I'll check that under Debian 11 as. Currently using nodejs12 under OpenSUSE.

hi jan
I have reproduced this problem.
lack of some sub module .like express body_parser and so on
But they are in the node-red shrink dependencies list
and I have installed the node-red on the latest debian system, it would work and no lack of anything.
I would look into it.

No need to, I've a working version here again. Will send a PR soon.

That's very kind．
The problem should be the shrink.json file
as express:
new shrinkwrap.json
node_modules/node-red/node_modules/express
old shrinkwrap
node_modules/express
the express path seems not correct.

It's likely npm version related: I can reproduce the issue when using npm 7.5.2 from debian 11. Seems that version is ignoring --global-style. I have 6.14.16 here, and that works. This mode has to be selected via the config file now:
npm config set global-style=true.
I'll redo things under Debian with that and check if it changes the setup.


Fix double 'url()' for sprites due to Rails asset-url

Currently, the compiled css ends up with sprite URLs wrapped twice with url(), like so:
    background: url(url(/assets/chosen-sprite.png)) no-repeat 0 7px;

This caused minor alignment issues.
Pull request fixes the issue by removing the url() in 8 places in bootstrap-chosen.scss. Alternatively, we could replace asset-url with asset-path in 2 places in bootstrap-chosen-variables.scss. Let me know if you'd prefer that.
Signed-off-by: Rory Stolzenberg<EMAIL_ADDRESS>

I'm fine with it the way you have fixed it. Thanks!

This is published to rubygems now.

Thanks!


Add possibility to send logs from different containers to different indexes from one pod in k8s

Proposed changes
There was no possibilities to send logs from different containers within one pod in k8s cluster to different splunk's indexes. I added the possibility in the change, it is enough to add annotations similar to :
splunk.com/index.CONTAINER_NAME: index
For example
splunk.com/index.httpbin: index1
splunk.com/index.istio-proxy: index2
Types of changes
What types of changes does your code introduce?
Put an x in the boxes that apply

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

Checklist
Put an x in the boxes that apply.

[ x] I have read the CONTRIBUTING doc
[ x] I have read the CLA
[ x] I have added necessary documentation (if appropriate)
[ x] Any dependent changes have been merged and published in downstream modules

Thanks for PR. could you add a test case for this?

@rockb1017 what Do You mean by test case? I already described it how to test it.

Deploy any application in eks cluster with 2 or more containers within one pod. For example httpdbin application in istio mesh (2 containers - first: httpdbin container, second: istio-proxy container)
You need to have running splunk in cluster and have created at least 2 different indexes in splunk
Add to Your pod annotations for the different containers in order to redirect logs from different containers to different indexes.
annotations:

splunk.com/index.httpbin: index1
splunk.com/index.istio-proxy: index2

sorry for delayed response.
i meant to add a test case in the functional test pipeline. test/k8s_logging_test/test_config_logging.py


build(tokens): redirect paths, initial setup of token NPM module

This is a draft of a re-working to the tokens library, starting with Color tokens. The objective is to move these references to an independent library to be consumed as a module via NPM, and includes bot migrating the reference to a module and then changing reliant paths to use as such.
This is a rough draft for soliciting guidance on the best practices for such a migration.
Description
Move colors.json into a top level library: tokens/colors/colors.json
Publish Tokens as NPM module
Refer to module dependency where styles and compilers refer to it from the Core library
Related Issue

Motivation and Context
This move is intended to make the Monorepo more flexibly consumable.
How Has This Been Tested?

Screenshots:
Before (If applicable):

After:

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Documentation update
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Other... Please describe:

Checklist:

[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

I think the paths need to be fixed so the tests can run correctly.  Also does the Tokens directory need versioning (I can see the reasoning behind it).  If so should those updates be included in the CI config?

@bfbiggs Which paths are you referring to, those that need to refer to color.js? @pauljeter mentioned in an aside this also needs Lerna configured. Does that interface with the CI, or is the CO another config? Apologies for the ambiguous approach, I'm learning on the move with this library.

Added updates that need feedback, I'm unsure why those tests are failing.

Can we squash these commits?

Can we squash these commits?

Can we squash these commits?

Can we squash these commits?

Hi Ben, I think it's a great idea to squash the commits. I have been trying to debug the ci:test for days and I was trying to get them all the pass. Would you know anything about why the test_react and percy/ommentum-ui tests aren't passing?

I pulled the PR and ran it locally. Looks like the examples are showing in the app and that's why the tests are failing. Need to look into this and see why they are not showing in the app.


Adding options specifying frame shape (xspacing/yspacing and roundradius)

Currently the rounding radii of frame (<rect>) corners are re-calculated based on the zooming factor. Since roundradius = 0 means square corners, the corner-rounding process can be omitted.
On the other hand, setting frame spacing may require re-calculation of the width and height attributes of each frame. However, if widths and heights are overwritten, there is a problem with accumulative errors. Therefore, it may be another option to manipulate the transform attribute of each frame.
I think these new options require drastic design changes. I will decide the design according to the benchmark results.

I will put the support for xspacing/yspacing``/spacing` as a v0.2.x material, not v0.2.0.

The roundradius has been supported by PR #47.

We might also need the frameheight option. Currently the height is calculated based on the fontsize, but this is not suitable for displaying deep graphs. (cf. https://github.com/kimikage/ProfileSVG.jl/issues/44#issuecomment-685426484)
Anyway, I plan to support y-axis zooming in v0.3.


Update docs: zmq.asyncio.Poller.poll() fails with native sockets

Hello,
We tried creating a zmq.asyncio.Poller object, registering a native socket or fd, and then calling poll(), but doing so raises an exception that the add_recv_event method is not found.
Traceback (most recent call last):
  File "SimpleServer.py", line 311, in <module>
    ret = loop.run_until_complete(server.arun())
  File "/usr/lib/python3.5/asyncio/base_events.py", line 387, in run_until_complete
    return future.result()
  File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
    result = coro.send(None)
  File "SimpleServer.py", line 189, in arun
    sks = dict(await poller.poll(100))
  File "/usr/local/lib/python3.5/dist-packages/zmq/eventloop/future.py", line 65, in poll
    socket._add_recv_event('poll', future=watcher)
AttributeError: 'int' object has no attribute '_add_recv_event'

Digging into the code, there is a comment that says the async version of the poller only supports polling on zmq sockets right now.
Recommend updating the docs to make this point clear. Apologies if I missed a note somewhere that warns us against doing this.
Thanks!

#907 should fix raw socket support.


In ClusterChangeMediator, stop enqueue/process changes if already stopped

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@e041ec5). Click here to learn what that means.
The diff coverage is 100%.

@@            Coverage Diff            @@
##             master    #4422   +/-   ##
=========================================
  Coverage          ?   65.49%
  Complexity        ?       20
=========================================
  Files             ?     1075
  Lines             ?    55837
  Branches          ?     7965
=========================================
  Hits              ?    36572
  Misses            ?    16658
  Partials          ?     2607

Impacted Files
Coverage Δ
Complexity Δ

...not/broker/broker/helix/ClusterChangeMediator.java
79.12% <100%> (ø)
0 <0> (?)

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 e041ec5...b47866e. Read the comment docs.


dddd is not working

hi
thanx for your great work, it's a nice work
now get to bussiness:
'dddd' command does not work correctly, i mean it does not return day name
select dbo.GregorianToJalali(getdate(),'yyyy MM dddd')
but other commands seems to work correctly

Hi @gmareater. Thanks for reporting the issue. It got fixed. Run the new deployment script to update the function.

thanx for your fast response,
but your deployment is missing assembly parts ( you need to redeploy)
thanx in advance
CREATE ASSEMBLY [SqlCLR.JalaliDateUtility]
    AUTHORIZATION [dbo]

ALTER ASSEMBLY [SqlCLR.JalaliDateUtility]
    DROP FILE ALL


Runtime Error

Probably doing something wrong, but I uploaded a screen shot. I simply ran the exe from my downloads folder when  the game is running and I get a runtime error.

You're running on the latest update right? If so, this is a duplicate of #36

I got the latest Update 14 from Nexus.

I'm talking about the latest version of the game.
I have not updated this to support version 1.0.4 of ffxii.

I'm assuming it is updated with the newest patch. Tried using your tool many times and I can't get it to work because of new patches coming out. I simply and only want to adjust the FOV.

I talked to you about this before on Discord, and I guess you updated it for the last patch, but I took too long to come back and use it that another patch dropped lol

I'm not sure if I was unclear, but I have not yet updated this to support the latest patch, so for it to work you either have to predate to 1.0.3 or wait for my next update. Please take a gander at the other issues before posting a duplicate issue.
If you want to adjust your fov, there are numerous methods out there. If you have a memory editor, at 0x02097548 is a floating point value that represents the field of view in radians. It is 45 degrees by default, which is 0.7853982 rad.


Initial policy version.

Adds the files for the first version of the policy. The policy is able to validate the environment variable defined in the init container, containers and ephemeral containers.
Fix https://github.com/kubewarden/kubewarden-controller/issues/313

This policy version is missing the verification for the values defined in the valueFrom field. But I decided to open the PR for review now. Because it is a quite big code and the future change will not be so big and can have a separate PR for it.


Special string tokens at end of strings cause another closing quote to be created

When I'm typing a string (in any language) that ends in a special token (e.g. "hi\n"), another closing quote is inserted when I type a closing quote:

(The screencast uses JavaScript, but I've seen the issue in enough languages that I think it's not an issue with any one language package.)

This is a duplicate of https://github.com/atom/bracket-matcher/issues/80. Please subscribe there for updates.


Provide powershell_version helper

Written a helper function which returns (true/false) if the requested versionlevel is present.
This simplifies the guards, and provides a method for other cookbooks to check if a minimum version is present. E.g.  WMF5/Feb versionlevel is required for certain DSC (Chef 12) stuff, while with Chef 11 the WMF5-2014 is already enough.
Perhaps not the most beautiful code (let me know how/where to adjust/improve), but useful nonetheless :wink:

I love the idea here, but given recent changes to the cookbook it break all sorts of tests.  I'll try to resurrect this idea in a little while.

Rebased to current master, squashed rubocop commits.
These specific tests work. The other/existing tests are broken...

Closed via #77


Present volumes on remote system as Dokan filesystem on Windows

Many of the pain points of using volumes with docker-machine arise from the model of trying to present or synchronize the client computer's filesystem to the docker host machine. It would make for an easier workflow if this model was inverted, and docker-machine presented volumes on the targeted host as filesystems (or "drives") on Windows.
Presenting virtual filesystems on Windows now has good support via the Dokan project, and it should be possible to present any files on the host machine (including the volume roots) by wrapping them in a FUSE filesystem. This would make it convenient to populate a named volume with arbitrary data from the client machine, reducing the hassle of host volumes and mapping paths from your Windows client machine to the Docker VM.

@masaeedu : could you do a Windows version of #4018, but using Dokan instead of FUSE ?
There's some pointers in https://igikorn.com/sshfs-windows-10/ on what software is required:

https://github.com/dokan-dev/dokany
https://github.com/Foreveryone-cz/win-sshfs

@afbjorklund Is Win-SSHFS a UI application or a library that presents filesystem operations?

@masaeedu : actually I have no idea, though it looks like a GUI application from the description...
For the UNIX version I just used the sshfs command line application (and `fuserunmount), but if it is easier to use the API on Windows then by all means do that (not sure how you call .NET from Go ?).

@afbjorklund Probably easiest do whatever needs to happen outside Go as a child process and communicate over env vars/args/stdio. I'll take a look today, maybe I just need to add a command line interface on top of Win-SSHFS.

@masaeedu : that would be great, might as well use the standard sshfs syntax then:
usage: sshfs [user@]host:[dir] mountpoint [options]
Where options are our standard -o flags, with things like Port and IdentityFile.
Most of these come from ssh directly, so are similar/same to what ssh/scp/rsync use.

Maybe you can use this directly ? https://github.com/dokan-dev/dokan-sshfs
Wonder if there is a way to test this using MinGW and Wine, i.e. without Win

@afbjorklund I'll look at that. Unfortunately I realized I can't exactly present the same CLI over win-sshfs because Dokan works with drives. It can't be mounted to arbitrary locations on an existing filesystem. I guess you could use symlinks or junctions to work around that, but people using software that doesn't support that would be in for problems.

I don't think that's a real problem, as long as the user gives a drive letter (like "n") for the mount point and then looks in N:\ for the files ? Needs to be validated and documented, of course.
But one will need real Windows to do this, both because of Visual Studio .sln and because of .NET 4.0:
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
Command itself (DokanSSHFS.exe) looks useful, though:
        public void help()
        {
            Console.Error.WriteLine("SSHFS");
            Console.Error.WriteLine("  -d drive letter [default n]");
            Console.Error.WriteLine("  -h host name");
            Console.Error.WriteLine("  -u user name");
            Console.Error.WriteLine("  -p port [default 22]");
            Console.Error.WriteLine("  -i ssh private key");
            Console.Error.WriteLine("  -r path to remote dir [default /]");
            Console.Error.WriteLine("  user@host drive");
            Console.Error.WriteLine();

https://ci.appveyor.com/api/projects/liryna/dokan-sshfs/artifacts/dokan-sshfs.zip
(+ https://github.com/dokan-dev/dokany/releases/download/v1.0.2/dokan.zip)

@afbjorklund You could unit test your Go code if you wrote it properly, but ultimately you'll have to integration test on Windows if you want to know whether it works. The part that needs verification is whether it interfaces with the Windows APIs correctly so that you can add/remove/fetch files.

Actually, the current test only verifies that it can find the exe (in the $PATH) and that it gets the arguments right... That sshfs (and/or DokanSSHFS.exe) actually works, is "someone elses problem". :-)
Wonder how you unmount something on Windows ? Presumably there is a command-line similar to fusermount -u lurking somewhere, or perhaps just not support the friendly -u option.

https://technet.microsoft.com/en-us/library/cc772586.aspx says:
mountvol [<Drive>:]<Path> /p

@afbjorklund From my understanding you just kill the process that is using the Dokan API. You don't need to manually unmount. See for example the docs on the sample tool they bundle with dokan: https://github.com/dokan-dev/dokany/wiki/Use-Mirror-example

Presumably just clicking something (or shutting off the computer) would work too...
Can you write the patch for the Windows CLI, or did you want me to take a stab at it ?
I suppose Windows users would always need to provide those charming DOS drives.
(otherwise it would default to mounting the files on N:, at least if you only have one)
The Unix version defaults to using the same path on the client as in the machine itself...
But the extra mountpoint/driveletter was already there, in the (trivial) new mount syntax:
docker-machine ssh default mkdir -p /tmp/test
docker-machine sshfs default:/tmp/test n
docker run --rm -v /tmp/test:/tmp/test busybox ls /tmp/test
docker-machine sshfs -u /tmp/test n

@afbjorklund Ok, so the command line opts snippet you showed me is kind of out of date. The only code that used that is in Program.cs and is commented out. Uncommenting it, you find it is no longer compatible with the currently referenced Dokan API. I'm going to try and factor the code into a library and move the stuff the UI is doing into a console application.

Typical, it looked too good to be true... Hope that we can find a sshfs for Windows that works ?

@afbjorklund It'd be great if we could find something pre-made, don't think it's likely though. Best bet is to hack out a console interface to the logic performed by the UI in the existing dokan-sshfs application. That's what I'm working on now.

@masaeedu : Any luck with this ?
The available win-sshfs <IP_ADDRESS> (with dokany 0.7.4) seems to be working OK for casual use,
but does have some issues with key exchange and newer mechanisms on newer OpenSSL.

https://github.com/Foreveryone-cz/win-sshfs/releases/tag/<IP_ADDRESS>
https://github.com/dokan-dev/dokany/releases/tag/v0.7.4

And of course it's a GUI application, so doesn't lean itself very well to any CLI interaction...
So would be great with something updated, based on dokan-sshfs and the newer dokany ?

https://github.com/dokan-dev/dokan-sshfs
https://github.com/dokan-dev/dokany

@afbjorklund It took some wrangling, but I managed to factor out the logic into a library here: https://github.com/masaeedu/win-sshfs/tree/asad/Sshfs/SSHFS.Lib. Now we need a simple console application around that library. I've kind of forgotten the specifics of this issue, could you refresh my memory on what command line interface we need?

I've also rebased the changes in the embedded SSH.NET submodule onto https://github.com/sshnet/SSH.NET/tree/master, so hopefully that should alleviate any SFTP-related issues you're describing.

The current interface looks something like this:
https://github.com/afbjorklund/machine/blob/30de5bb722ec23a71fc9f7d9a3f1f9236129970e/commands/mount_test.go
Not sure if we want to keep the exact same syntax, and probably need to replace mount path with drive letter ? But something like this:
https://linux.die.net/man/1/sshfs

@afbjorklund Ok sweet, it works! As a nice bonus, it just cleans up after itself once you kill the process, so the CLI code is very simple. I've pushed up what I have in https://github.com/masaeedu/win-sshfs/tree/asad/Sshfs/SSHFS.CLI, right now it's using keyboard-interactive auth.
I need to make some simple changes to the CLI and the logic so it tries public key, then password, then keyboard-interactive auth in order, but this shouldn't be too difficult.

@afbjorklund Ok, everything is pushed, and I've tested it out with docker-machine. There's good news and bad news. The good news is that I can mount and access the /tmp folder on my docker-machine as a drive using the following Powershell:
$inspect = docker-machine inspect linux;
.\SSHFS.CLI.exe -d N -r /tmp -h "$($inspect | json Driver.IPAddress)" -u "$($inspect | json Driver.SSHUser)" -k "$($inspect | json Driver.SSHKeyPath)"

The bad news is that trying to do the same thing for the volume mountpoints doesn't seem to work:
$inspect = docker-machine inspect linux;
docker volume ls --format "{{.Mountpoint}}" | % {
    .\SSHFS.CLI.exe -d N -r $_ -h "$($inspect | json Driver.IPAddress)" -u "$($inspect | json Driver.SSHUser)" -k "$($inspect | json Driver.SSHKeyPath)"
}

I probably need to turn on debugging info to see what's going wrong, right now the mounted drive just craps out when you try to access it.

@masaeedu : Excellent, sounds like you are making good progress! I haven't yet heard what the new maintainer of this project (i.e. docker/machine) thinks of it, but it would make a great compliment to #4018 !
Will try it next week... From Windows 7, if that matters.


[Event Request] codeunit 950 "Time Sheet Management" - OnAfterCopyTimeSheetLines

Could we please have an event OnAfterCopyTimeSheetLines in Codeunit 950 "Time Sheet Management" in function CopyPrevTimeSheetLines?
Code Example:
ToTimeSheetLine.Description := FromTimeSheetLine.Description;
ToTimeSheetLine.Chargeable := FromTimeSheetLine.Chargeable;
ToTimeSheetLine."Work Type Code" := FromTimeSheetLine."Work Type Code";
OnBeforeToTimeSheetLineInsert(ToTimeSheetLine, FromTimeSheetLine);
ToTimeSheetLine.Insert;
until FromTimeSheetLine.Next = 0;
// start kvspsa - Event Raiser
OnAfterCopyTimeSheetLines(QtyLineNotCopiedLoc);
// stop kvspsa
end;
end;
Event:
[IntegrationEvent(false, false)]
local procedure OnAfterCopyTimeSheetLines(QtyLinesNotCopied: Integer)
begin
end;
Thank you and kind regards

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Repeated jerks on iOS.

Hi guys!
First of all I want to say thank you so much for your work.
I have a strange issue after update to the 3.5.
I have repeating jerks on iOS (probably and on Android but I not checked it yet) every ~20 secs. I'm try to use profiler but it not showed me anything strange.
Also I want to say that jerks came to all of my projects running cocos2d-js 3.5.
Do you have some idea what could be wrong with my code?

I have tested it on iPhone 5/5S, with 60fps.

What's the exact behavior ? I'm not getting the meaning of repeating jerks


docs: update custom android back handling code to match RN docs

Updated the code snippet for custom android back handling to match the functional component example for BackHandling in the React Native documentation. It's a simple change but could mitigate potential mistakes with string typos.

Thanks for the PR! However this seems to be fixed in the docs already so I'm closing this.